さくらのVPSでWordPressを使うまでのまとめ

さくらのVPSで当inoccu.netを運用するようになって6日目。環境的にも、パフォーマンス的にも落ち着きつつある。その間、多くのサイトでの情報提供のお世話になったので、感謝の気持ちを込めてまとめておく。

いま、さくらのVPSを契約しようかと考えている人の多くは、さくらのレンタルサーバをはじめとする共有型のレンタルサーバの契約者だと思う。そういう人たちは、きっと独自ドメインを持っていて、サーバではWordPressを動かしてブログをやっている。だから、さくらのVPSをそれまでのレンタルサーバの移行先と考えるならば、やっぱりWordPressを動かしたいのではないだろうか。

WordPressを動かすまでにやるべきことを順序立てると、以下のようになる。

  1. 基本的なセキュリティ対策をする
  2. Apache、PHP、MySQLを導入する
  3. メールを使えるようにする
  4. 独自ドメインを使えるようにする
  5. vsftpdをインストールする
  6. WordPressをインストールする
  7. WordPressのパフォーマンスチューニングをする

一般的なレンタルサーバだと、6が必須で、3,4,7といったあたりを適宜やれば良いという程度だろう。しかし、さくらのVPSでは1~7まですべてが必須だ。やはり、やることが多い。

1.基本的なセキュリティ対策をする

これぞ基本のキ。さくらのVPSを契約した直後、VPSは停止状態になっている。コントロールパネルから起動すると、そこに現れるのは無防備な公開サーバーだと思って良い。だから、セキュリティ対策が必要なのだが、私は下記2つのサイトを参照して実施した。

SSHの設定については、特に下記サイトが詳しい。

あと、すでに導入されているパッケージの一括アップデートをしておいた方が良い。yum updateでOKだ。

2.Apache、PHP、MySQLを導入する

Apache、PHP、MySQLを導入すればLAMP環境が出来上がる。WordPressの動作環境が揃うわけだ。上記IDEA*IDEAの記事を見れば良いと思う。

当ブログでも簡単にまとめてある。

MySQLのインストール後に、WordPress用のユーザとデータベースを作成する。WordPress用に作成したユーザが全権限を持つ、WordPress専用のデータベースを1つ作れば良いのではないだろうか。さくらのVPSでは、当然ながらMySQLデータベースを無制限に作成可能だ。レンタルサーバのように1つまでとか5つまでといった上限がないのだから、お大尽に使っても良いと思う。管理上もセキュリティ上もアプリケーション毎にユーザとデータベースを作っておいた方が良い。

3.メールを使えるようにする

WordPressのインストール時に管理人のメールアドレスを入力する必要がある。ふつうに使えるアドレスなら何でも良いのだが、せっかく独自ドメインがあるのだから、その独自ドメインのメールアドレスを入力したい。メールに関してはGoogle Appsを使うというのも良い選択肢だと思うが、VPS環境でメールサーバを立てるのも良い。

inoccu.netでは、現時点ではsendmail+cyrus-imapdを使っている。cyrus-imapdを使うとUNIXユーザとメールユーザを個別に管理できる。WordPressでケータイ投稿が出来るようにすると、モブログ専用のメールアドレスが必要になる。その際にモブログ用ユーザをUNIXユーザとして作らなくても良いというのがメリットだ。

設定は、まずsendmailで外部からのメールを受信できるようにする。

次に、cyrus-imapdをインストールする。

yum -y install cyrus-imapd cyrus-imapd-utils cyrus-imapd-perl 
db4-utils lm-sensors

PKI認証鍵を作る。

yum -y install openssl
cd /etc/pki/tls/certs
make localhost.crt

作成された秘密鍵を移動する。

mv /etc/pki/tls/certs/localhost.key /etc/pki/tls/private/

パスフレーズを削除する。

my localhost.key localhost.key.org
openssl rsa -in localhost.key.org -out localhost.key

/etc/imapd.conf(抜粋)は、こんな感じにする。

admins: cyrus (cyrus-imapの管理ユーザ名)
sasl_pwcheck_method: auxprop
sasl_mech_list: PLAIN, CRAM-MD5, DIGEST-MD5
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/aaa.crt (作成したPKI認証鍵)
servername: aaa.inoccu.net (適宜)

sasl_pwcheckがここでのポイント。CentOS5のデフォルトでは、UNIXユーザのID/Passwordで認証されるようになっている。(sasl_pwcheck_methodがsaslauthdになっていて、そのsaslauthdデーモンがshadowメカニズムを使用するように設定されているから。sasldb2で認証するならsaslauthdデーモンは不要だ。)

しかし、UNIXユーザとメールユーザを切り分けたいので、sasl_pwcheckをauxpropとする。また、sasl_mech_listも上記のようにする。これでsasldb2で認証するようになる。

sasldb2のユーザ追加は、下記のとおり。

saslpasswd2 ユーザID (対話型でパスワードが聞かれる)

ここで、メールユーザのほか、cyrus-imapdの管理ユーザのパスワードも設定(コマンド:saslpasswd2 cyrus)する。作成したユーザは、sasldblistusers2コマンドで確認できる。

sasldb2がcyrus-imapdからアクセスできるように、所属グループを変更しておく。(mailグループで良い)

chgrp mail /etc/sasldb2

続いて、cyrus-imapdの管理コンソールにログインし、メールボックスを作成。

cyradm –-user cyrus(cyrus-imapdの管理ユーザ) localhost

パスワードを聞かれるので入力し、ログイン。管理コンソールでのコマンドは、ログイン後にhelpコマンドで表示される。メールボックスを作成するには、createmailboxコマンドを使う。略してcmでも良い。

createmailbox user.foo (user.作成するメールボックスのユーザ名)

4.独自ドメインを使えるようにする

yumでインストールされるapacheでは、マルチドメインが使用できる。当ブログのようにサブドメインを使用するなら、マルチドメインを使用した方が良いだろう。

/etc/httpd/conf/httpd.confを以下のように設定する。

NameVirtualHost *:80
<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot (WordPressをインストールするディレクトリ)
  ServerName blog.inoccu.net
  ErrorLog logs/blog.inoccu.net-error_log
  CustomLog logs/blog.inoccu.net-access_log common
</VirtualHost>

※上記の設定は、blog.inoccu.netの直下にWordPressをインストールする場合の設定だ。

当然、使用するドメインのDNSの設定で、さくらのVPSで割り当てられたIPアドレスを指定する必要がある。

5.vsftpdをインストールする

さくらのVPSではデフォルトでSSHが使えるので、SCPを使ってファイル転送可能だ。しかし、WordPressでプラグインなどの自動アップデートなどをしようと思うと、FTPも必要になる。インストールは、yum –y install vsftpdでOK。

6.WordPressをインストールする

WordPressのインストールは、一般的なレンタルサーバと同様だ。レンタルサーバによってはPHPがセーフモードで動いているから云々といった特殊な設定が必要になるが、VPSなのでその辺は自分の設定次第だ。

7.WordPressのパフォーマンスチューニングをする

ここまでやると、ふつうにWordPressが動いているはずだ。ただ、私はここでハマってしまった。パフォーマンスが出ないのだ。ちょっとアクセスすると平気でLoadAverageが1を超え、数件の同時アクセスがあると一気にLoadAverageが10を超え、20を超え・・・と、とんでもないことになった。いろいろ調べて設定した結果、現時点では非常に安定している。LoadAverageはゼロコンマいくつのレベルにへばりついている。見事だ。

上記サイトの記事は、さくらVPSでの設定内容なので、そのまま実施して良い。特にPHPアクセラレータの導入、MySQLのキャッシュ有効化、Apacheの設定変更の3点セット。

PHPの設定でzlib.output_compressionをOnにする件は、現時点では当サイトではやっていない(Offにしている)。WP-SuperCacheと衝突するためだ。

WordPressのプラグインでは、WP-SuperCacheを使用している。Cachingのモードがデフォルトでは「Use PHP to serve cache files」となっているが、当サイトの設定は推奨の「Use mod_rewrite to serve cache files」にしている。.htaccessの編集が必要なるが、現時点で動作上の問題は出ていない。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。