スポンサーリンク

UbuntuでNginxとPHP5-FPMでWordPressを動かす

Nginx

このサイトとは別のサイトも運営しているのですが
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のデフォルト画面が表示されると思います
スクリーンショット 2015-12-12 10.51.13
こんなです

これで一応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と同じくらい持ってきますね、これは初期設定がデフォルトだからだと思いますのでこの辺調整すれば変わると思います

また設定変えたら記事書きます

コメント

  1. […] UbuntuでNginxとPHP5-FPMでWordPressを動かす […]

タイトルとURLをコピーしました