前回はお名前.com VPSにインストールしたDebian jessieでWordPressに必要なパッケージをインストールしました。
今回はそれらのパッケージの設定を行って、使えるようにしておきます。
アクセス制限の実施
完成するまでは自分のPC以外ではアクセスできないように制限しておきます。
sudo iptables -I INPUT -p tcp -d AAA.AAA.AAA.AAA -s BBB.BBB.BBB.BBB --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -d AAA.AAA.AAA.AAA -s BBB.BBB.BBB.BBB --dport 443 -j ACCEPT
「AAA.AAA.AAA.AAA」はVPSのIPアドレスで、「BBB.BBB.BBB.BBB」は接続テストに使う自分のPCです
SSL用の自己証明書の用意
WordPressの管理画面に接続するためにはSSLを使用します。SSLを使用するためにはサーバ証明書が必要なのですが、証明書を入手するにはお金と手間がかかります(最近は無料なものもあるそうです)。
WordPressの管理画面は自分専用なのでとりあえず自分で作成した証明書(自己証明書、オレオレ証明書)を用意します。
自己証明書の作成については下記の記事を参照してください。

さらに自己証明書だとブラウザに拒否されてしまう可能性があるので、証明書をブラウザにインポートしておいた方がよいでしょう。

データ用ディレクトリの用意
お名前.com VPSをデフォルトのままLinuxをインストールするとディスクが20GBと180GBに分割され、20GBを「/」に、180GBを「/data」に使おうとすると思います(インストールするOSによって違う可能性あり)。
WordPressでアップロードしたブログの画像などはこの180GBのほうに格納したいのですが、私はこれまでWordPressのデータは「/www」に格納していました。そこで「/data/www」というディレクトリを作り、「/www」でアクセスできるようにします。
また、この/wwwについては所有者をwww-data、所有グループをwww-dataとしておきます。
sudo mkdir /www sudo chown www-data.www-data /www/ sudo mkdir /data/www sudo chown www-data.www-data /data/www sudo mount -t none -o bind /data/www /www
これで「/data/www」と「/www」の実態が同じものとなります。うまくいったら/etc/fstabに次の行を追加しておきましょう。
/data/www /www none bind 0 0
phpmyadminの設定
WordPressのデータベースを操作する際にphpmyadminを利用する可能性があるので、phpmyadminを使えるようにしておきます。
このためには/etc/nginx/sites-availableに次の内容のファイルを作成します。NNN.NNN.NNN.NNNはこのVPSのIPアドレスです。
server {
# AAA.AAA.AAA.AAAに対するポート10443への接続を処理する
listen 10443 ssl;
server_name AAA.AAA.AAA.AAA;
# コンテンツがあるローカルのトップディレクトリの設定
root /usr/share/phpmyadmin;
# URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示
index index.php;
# ログファイルの設定 エラーは警告レベル以上を記録
error_log /var/log/nginx/phpmyadmin-error.log warn;
access_log /var/log/nginx/phpmyadmin-access.log combined;
# 共通の制限事項を設定
include snippets/restrictions.conf;
# SSLを有効にする
ssl on;
ssl_certificate 作成した証明書 あるいは /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key 作成した秘密鍵 あるいは /etc/ssl/private/ssl-cert-snakeoil.key;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
このファイルから読み込んでいるrestrictions.confは次の内容で/etc/nginx/snippetsに作成しておきます。
# GET|HEAD|POSTメソッドのみアクセスを許可する
# (DELETE, SEARCH等はアクセス拒否)
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
# favicon.icoへのアクセスはログに記録しない
location /favicon.ico {
log_not_found off;
access_log off;
}
# robots.txtへのアクセスはログに記録しない
location /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# 「.」で始まるファイル(.htaccess, .htpasswd等)へのアクセスは拒否しない
# ログは記録しておく
location ~ /\. {
deny all;
}
# アップロード用ディレクトリ内のphpファイルへのアクセスは拒否する
# この設定はサブディレクトリもチェックするので、マルチサイト設定でも有効
# ログは記録しておく
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
# バッファオーバフローを避けるため、上限を設定。
# 参考: http://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html
client_body_buffer_size 32K;
client_header_buffer_size 4k;
client_max_body_size 25M;
large_client_header_buffers 4 16k;
今回はphpmyadminのポート番号を10443にしたので、10443に接続テストに使うPCからアクセスできるようにします。
sudo iptables -I INPUT -p tcp -d AAA.AAA.AAA.AAA -s BBB.BBB.BBB.BBB --dport 10443 -j ACCEPT
「AAA.AAA.AAA.AAA」はVPSのIPアドレスで、「BBB.BBB.BBB.BBB」は接続テストに使う自分のPCです。
最後にphpmyadminの設定を有効にしてNginxに読み込ませます。
sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enables sudo service nginx reload
これでIPアドレスBBB.BBB.BBB.BBBのPCのブラウザに「https://AAA.AAA.AAA.AAA:10443/」と入力すると、phpmyadminの画面が表示されるはずです。
なお、すべての設定が終わったらphpmyadminは無効にすべきです。その場合は/etc/nginx/sites-enabled/にあるphpmyadminを削除して、「service nginx reload」を実行すればOKです。
まとめ
今回はWordPressの移設先にインストールした各種パッケージの初期設定を行いました。
これでNginxとphpmyadminが使えるようになったので、あとはWordPressのファイルを設置すれば動くはずです。WordPressの移設までもう一息です。
次回はWordPressのファイル類を移動させます。



コメント