さくらのVPSで当inoccu.netを運用するようになって6日目。環境的にも、パフォーマンス的にも落ち着きつつある。その間、多くのサイトでの情報提供のお世話になったので、感謝の気持ちを込めてまとめておく。
いま、さくらのVPSを契約しようかと考えている人の多くは、さくらのレンタルサーバをはじめとする共有型のレンタルサーバの契約者だと思う。そういう人たちは、きっと独自ドメインを持っていて、サーバではWordPressを動かしてブログをやっている。だから、さくらのVPSをそれまでのレンタルサーバの移行先と考えるならば、やっぱりWordPressを動かしたいのではないだろうか。
WordPressを動かすまでにやるべきことを順序立てると、以下のようになる。
- 基本的なセキュリティ対策をする
- Apache、PHP、MySQLを導入する
- メールを使えるようにする
- 独自ドメインを使えるようにする
- vsftpdをインストールする
- WordPressをインストールする
- 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の編集が必要なるが、現時点で動作上の問題は出ていない。