さくらのVPS(CentOS)にnginxリバースプロキシを入れて高速化する方法
さくらのVPSの初期設定から、nginxを入れてリバースプロキシの設定をするまでの手順を(自分用に)まとめました。
今回最も参考になったのは以下の本です。nginx以外の高速化の手法も豊富でおすすめです。
[amazonjs asin=“4844362526” locale=“JP” title=“WordPress 高速化&スマート運用必携ガイド”]
さくらのVPSの初期設定
さくらのVPSを契約したら、まずはコントロールパネルからサーバーを起動します。
起動したらrootユーザーでssh接続します。パスワードはメールで送付されているはずです。
$ ssh root@160.17.60.189
ここでたまにエラーになるのですが、そんな時はコントロールパネルからサーバーを再起動すれば接続できることが多いです。
次に、ユーザーを追加します。ここでは「username」というユーザーを新しく追加することとします。
$ passwd
$ useradd username
passwordコマンドでパスワードを設定します。
$ passwd username
次に追加したユーザーにsudo権限を与えます。
今回は「wheel」グループにsudo権限を持たせ、追加したユーザーを「wheel」に所属させます。
$ usermod -G wheel username
$ visudo
visudoコマンドで設定ファイルが開くので、#(コメントアウト)を消します。
# %wheel ALL=(ALL) ALL
ついでに最低限のファイアーウォールの設定をiptablesでします。
$ iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$ iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -p icmp -j ACCEPT
$ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -P INPUT DROP
$ iptables -P OUTPUT ACCEPT
$ service iptables save
この辺りの最初の設定は、さくらインターネットのサーバの初期設定ガイドに載っています。
yumの準備
アップデートをして、remiやepelなどのレポジトリを追加します。
$ yum update
yum updateで「更新と設定されたパッケージがありません。」などと出てこけたら以下のコマンドを実行したらから再度アップデートしてみてください。
$ yum clean all
$ yum check
$ yum update
remiとepelを追加します。失敗したらURLを最新のものに差し替えてみてください。
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
nginxのインストール
次にnginxをインストールします。
$ yum info nginx
ちょっと古かったのでnginxのレポジトリを追加してから、インストールします。
$ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ yum install -y nginx
インストールできたらnginxを立ち上げてから、サーバー起動時に自動でnginxが立ち上がるように設定します。
$ service nginx start
$ sudo /sbin/chkconfig nginx on
phpのインストール
$ yum --enablerepo=remi -y install php php-cli php-devel php-mbstring php-gd php-pear php-xml
$ vi /etc/php.ini
php.iniは、とりあえず以下のように変更します。
expose_php = Off date.timezone = "Asia/Tokyo"
nginxでPHPを動かす時に使うphp-fpmを入れて設定ファイルwww.confを編集します。
$ yum --enablerepo=remi -y install php-fpm
$ vi /etc/php-fpm.d/www.conf
細かいチューニングは後から行うとして、まずは以下のように設定します。
user = nginx group = nginx pm = static
php-fpmを立ち上げ、これもchkconfig onします。
$ service php-fpm start
$ sudo /sbin/chkconfig php-fpm on
mysqlのインストール
$ yum --enablerepo=remi -y install mysql.x86_64 mysql-server.x86_64 php-mysql
ここでは、起動してからrootを「samplepassword」に設定します。
$ service mysqld start
$ sudo /sbin/chkconfig mysqld on
$ mysqladmin -u root password 'samplepassword'
$ mysql -u root -p
wordpressというデータベースを作成します。
create database wordpress default character set utf8 collate utf8_general_ci;
次にwordpressというユーザーを作成し、パスワードを「samplepassword」とします。
grant all privileges on wordpress.* to wordpress@localhost identified by 'samplepassword';
リバースプロキシの設定(nginx.confの編集)
リバースプロキシを設定するために、nginx.confとdefault.confを編集します。
設定ファイルはGistを参照してください。
*さくらのVPS:CentOS64、nginx 1.6.3、PHP 5.4.39で動作確認。 *その他の環境での動作は保証しかねます。
/etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
設定ファイルを編集し、nginxを再起動します。
$ service nginx restart
バックアップデータの移行
WordPressを使用していてサーバー移転する時のメモです。
htmlディレクトリ以下をすべて圧縮し、データベースはdumpしてバックアップを保存。
$ tar zcvf html.tar.gz html
$ mysqldump -u root -p wordpress > dump.sql
転送先のサーバーにsftpコマンドで接続して、dump.sqlとhtml.tar.gzを転送します。
$sftp root@123.45.67.89
put dump.sql
put html.tar.gz
転移先のサーバーにssh接続して、html.tar.gzを解凍&dumpファイルをインポートします。
$ tar zxvf html.tar.gz
$ mysql -u root -p wordpress < dump.sql
これで、CentOS+nginx(リバースプロキシ)+ php-fpmの環境構築は完了です(多分)。
あとはサーバーの環境に合わせてチューニングすればよいかと。
[amazonjs asin=“4048702270” locale=“JP” title=“ハイパフォーマンスHTTPサーバ Nginx入門”]