apache httpdからneginx へ移行してみました。マルチサイト形式のwordpressと、ホームディレクトリでの静的webページの公開、そしてglassfishでのサービス提供を行っているため、これらの要件を満たすような設定を行います。
nginxのインストール
まずはnginxのインストールです。以下でリポジトリを追加します。CentOS6での例なので、他OSの場合は適宜変更してください。
# rpm -ivh http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
リポジトリの追加後、設定ファイルを変更します。
# vi /etc/yum.repos.d/nginx.repo # nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/rhel/6/$basearch/ gpgcheck=0 enabled=1 # enabledを1から0に変更
enabledの値を1から0に変更して、明示的に指定した時以外はリポジトリが使われないようにしておきます。
ではnginxのインストールです。
# yum --enablerepo=nginx install nginx
インストールされました。
php-fpmのインストール
nginxでPHPを動かすには、php-fpmというものが必要だそうです。
こちらは、remiリポジトリからインストールします。remiリポジトリは以前インストールしているので、リポジトリ追加のくだりは割愛します。
# yum --enablerepo=remi install php-fpm
ここまでは簡単ですね。
nginxの設定(wordpress)
結構苦労しました。うまくいった!と思ったら管理ツールにアクセスできなかったり。。。
結果としては、wordpress公式ページにあるようにすればOKです。「メインスタートアップファイル」「Per Site configuration」「Global restrictions file」「WordPressのマルチサイトのサブディレクトリのルール」というのを選んでください。なお、「Per Site configuration」に「// Additional rules go here.」「// Only include one of the files below.」というコメントがありますが「//」ではコメントにならないので、削除するか、「#」に置き換えておきます。
また、「mysite.com;」とかルートの部分は自分の環境に合わせる必要がありますよ!
nginxの設定(その他)
glassfishへの転送は、
location /myclip { proxy_pass http://localhost:8080/myclip; }
を入れておきます。
また、ホームディレクトリ(/home/[USER_NAME]/public_html)へは、
location ~ /~([a-zA-Z0-9_\-]+)(.*)$ { alias /home/$1/public_html$2; index index.html index.htm; # autoindex on; }
とします。「autoindex on;」のコメントを外すと、ファイルの一覧(apacheでいうIndexOf)を表示できますので、必要に応じて設定してください。
さいごに
あと、詳しくは書きませんでしたが、wordpress関連ファイルのユーザー/グループをnginxユーザー/グループに変更しています。
今回はじめてnginxを入れてみましたが、いれるだけなら簡単ですね。wordpressの連携が面倒なだけだったので。
仕事で使うか、といったらうーん、って感じですかね。情報があんまりないんで、よっぽどapacheに対するアドバンテージがない限り提案しずらい感じです。業務アプリだと、そんなに静的ファイルを大量配信したい、とかいうニーズもあんまりないですしね。
キャッシュの設定とかもしてみたいのですが、とりあえずここまで!