このサイトとは別のサイトも運営しているのですが
AWSのT2.SmallインスタンスにWordPressを4つもぶち込んでる関係でまぁ良くサーバが落ちてました
Jetpackのアラートが引っ切り無しに飛んできてていい加減なんとかせな・・・・
ということで思い切ってApacheからNginxに乗り換えてみました
前提としては
・OSはUbuntu14
・ApacheですでにWordPressを動かしている
が前提となります
説明の仮想として
・仮想でhttp://hoge.comというサイト
・/var/www/html/hogeにWordPressが格納されている
とします
まずNginxとNginx単体ではPHPが動かないらしいのでPHP5-fpmとかをインストールします
sudo aptitude install nginx
sudo aptitude install php5 php5-cgi php5-cli php5-mysql php5-gd php-apc php5-fpm php5-curl php5-json php5-dev
インストールしたらNginxを起動しましょう
#Apacheを終了 sudo service apache2 stop #Nginxを起動 sudo service nginx start
Nginxのデフォルト画面が表示されると思います

こんなです
これで一応Nginxは動いてます
次にWordPressを動かせるようにします
/etc/php5/fpm/www.confのバックアップを作成してvimで変更します
sudo cp /etc/php5/fpm/www.conf /etc/php5/fpm/www.conf.org
#vimで開きます sudo vi /etc/php5/fpm/www.conf #この行を ;listen = 127.0.0.1:9000 #こう修正します listen = /var/run/php5-fpm.sock #最終行に下記を追加(php5-fpm.sockを読み込む設定です) listen.owner = www-data listen.group = www-data listen.mode = 0660
次に/etc/php5/fpm/php-fpm.confを修正します
#バックアップ作成 sudo cp /etc/php5/fpm/php-fpm.conf /etc/php5/fpm/php-fpm.conf.org #開いて設定変更します sudo vi /etc/php5/fpm/php-fpm.conf #この行のコメントアウトを ; events.mechanism = epoll #削除します events.mechanism = epoll
完了したらPHP5-fpmを再起動します
sudo service php5-fpm restart
次にNginxの設定をします
基本的な設定はいじらなかったので割愛しますがバーチャルホストの設定だけ
まずは/etc/nginx/sites-available/defaultのバックアップを作成してから設定を変更します
#バックアップ作成
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.org
#vimで開いて設定変更
sudo vi /etc/nginx/sites-available/default
#下記行の
listen 80 default_server;
# default_serverを削除
listen 80
#コメントアウトされている下記行を
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
#こんな感じに変更
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
次にバーチャルホスト用の設定ファイルを作成します
#defaultをコピーして作成(.confは無くても大丈夫ですがなんとなくApacheのクセで)
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/hoge.com.conf
#vimで開きます
sudo vi /etc/nginx/sites-available/hoge.com.conf
#中身をこんな感じに変更します
server {
listen 80;
server_name hoge.com;
root /var/www/html/hoge;
index index.html index.htm index.php;
access_log /var/log/nginx/hoge.com.access.log;
error_log /var/log/nginx/hoge.com.error.log;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$uri&$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
完了したらシンボリックリンクを作成します
sudo ln -s /etc/nginx/sites-available/hoge.com.conf /etc/nginx/sites-enabled/
完了後Nginxを再起動
#まずはconfigtest sudo service nginx configtest #OKなら再起動 sudo service nginx restart
設定がうまく行ってれば
http://hoge.com
で繋がるはずです
Nginxに変えてみた感想
設定自体は簡単でApacheに似ているのでApacheに明るい人はサクサクいけると思います
肝心の稼働状況ですが、動作は少し軽くなった気がします
サーバのメモリが枯渇気味でも表示は安定している印象ですね、個人的には乗り換えてよかったと思います
ただやはりメモリはApacheと同じくらい持ってきますね、これは初期設定がデフォルトだからだと思いますのでこの辺調整すれば変わると思います
また設定変えたら記事書きます



コメント
[…] UbuntuでNginxとPHP5-FPMでWordPressを動かす […]