この oyasu.info は ConoHa へ移転しましたが、実際に使用しているウェブサーバーの構築に向けて操作手順を含めて紹介します。
関連する記事
- (紹介編)Web サーバーを ConoHa に移行しました
- ConoHa で oyasu.info 向けウェブサーバーの構築・インストール編
- (この記事)nginx で php-fpm と spawn-fcgi(perl)を UNIX ドメインソケットで利用する
- (公開予定)ConoHa で oyasu.info 向けウェブサーバーの構築・データ移転編
時間がたってしまいましたが、前回インストールした CentOS 7サーバーで、最新版のnginxやPHPを使用したウェブサイトの表示までを目的とします。
今回設定するもの
- ドメインウェブ:nginx
- PHP:php-fpm
- Perl:perl-CGI、fcgiwrap、spawn-fcgi
Apache でサーバーを構築する際は、LoadModule でモジュールを読み込めば利用できたのですが、nginxではソケット通信を使用します。
nginx で利用できるソケットは2種類あります。
- TCP ソケット
- UNIX ドメインソケット
技術的なことは省略しますが、UNIX ドメインソケットのほうがパフォーマンスが良いとのことで、今回はドメインソケットを利用します。
nginx ドメインウェブの設定
前回はIPアドレスを入力するとnginxのデフォルトのページが表示されていました。
しかし、一般公開時はウェブ公開用のドメインだけページを表示し、それ以外の場合は何も表示しないように変更します。
ドメイン別 conf ファイル作成
このサーバーは、oyasu.info、blog.oyasu.info のドメインでウェブサーバーを公開しており、それぞれ違うconfファイルを設定しています。
一つのファイルにまとめて書くこともできますが、設定を分けるためにも別のファイルを使用します。
デフォルトのファイルをベースに複製します。
cd /etc/nginx/conf.d/ cp default.conf oyasu.info.conf cp default.conf blog.oyasu.info.conf
特に設定せずに自動的に認識されます。
それぞれの conf ファイルはこのように作成します。
server { listen 80 default_server; server_name blog.oyasu.info; root /usr/share/nginx/blog.oyasu.info; access_log /var/log/nginx/blog.oyasu.info.access.log main; location / { #root /usr/share/nginx/html; try_files $uri $uri/ /index.php?$args; index index.php index.html index.htm; } }
アクセスログはサブドメイン別に作成しています。
root を location の中に書かず、server の下に書いています。
あとで紹介しますが、PHP や CGI に関する記述を追加する際に、location 内に書いているとまた宣言しなければならないため、server の下に書いています。
また、try_files は WordPress を動作させるときの設定です。通常のウェブサイトである oyasu.info には使用していません。
参考:Nginx – WordPress Codex 日本語版
IP アドレス直接入力対策
/etc/nginx/conf.d/default.conf で return 444; の行を追加するだけで OK です。
これ以降の記述はすべて削除してもかまいません。
server { listen 80 default_server; server_name _; return 444; }
参考:How nginx processes a request
設定が終わったら再起動します。
systemctl restart nginx
IPアドレスを直接入力したときに、このようにエラーメッセージが表示されれば OK です。
何らかの原因で nginx が起動していないや接続できない場合は、ページが応答していませんといった別の内容になることから、サーバーが正常に動作しており、何も応答が返されない状態であることがわかります。
php-fpm
nginx で PHP を動作させるためにインストールした php-fpm の設定を行います。
php-fpm の conf ファイル設定
php-fpm の設定ファイルである /etc/php-fpm.d/www.conf を更新します。
具体的には、こちらの点を書き換えました。
[www] ; group = apache ; user = apache ; 今回はnginxとして動作させるため変更 group = nginx user = nginx ; listen = 127.0.0.1:9000 ; UNIXドメインソケットの利用に変更 listen = /var/run/php-fpm/php-fpm.sock; ; ドメインソケットのパーミッション(設定変更しなくても動作する可能性も) listen.mode = 0666
php-fpm ではありませんが、PHP 全体の設定 /etc/php.ini も修正します。
[PHP] ;upload_max_filesize = 2M upload_max_filesize = 5M
ファイルのアップロード上限を 2MB から 5MB に変更しました。
WordPress の画像リサイズ機能に頼り、カメラで撮影した高解像度の写真をそのままアップするときに便利です。
バックアップデータをファイルで復元する場合、これでも足りない可能性があります。
書き換えが終わったら、php-fpmを再起動します。
systemctl restart php-fpm
nginx に php-fpm の設定を追加
次に、nginxの設定ファイルを変更します。
/etc/nginx/conf.d/ にある各ドメインの conf ファイルにこのような記述を加えます。
server { location ~ \.php$ { # proxy_pass http://127.0.0.1; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; } }
perl-CGI、fcgiwrap、spawn-fcgi インストール
Nginx で Perl を扱うために必要なものをインストールします。
yum -y install fcgi-devel autotools automake perl-CGI git gcc #cd /usr/local/src/ git clone git://github.com/gnosek/fcgiwrap.git cd fcgiwrap autoreconf -i ./configure make make install yum -y install spawn-fcgi
spawn-fcgiの設定
/etc/sysconfig/spawn-fcgi をこのように書き換えます。
FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0776" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
同様に、nginx の conf ファイルも編集します。
server { location ~ \.cgi$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
そして、spawn-fcgi を起動すると利用できます。
systemctl enable spawn-fcgi systemctl start spawn-fcgi
まとめ
これにより、ConoHa で oyasu.info のウェブサーバーの土台が完成しました。
PHP についてはたくさん情報があるのですが、Perl については情報が少なかったです。
実は MySQL も UNIX ソケット通信が可能なようです。
いままで共用サーバーを使用していた関係で、wp-config.php も TCP ソケットを利用してきました。
簡単にできるようであれば対応したいです。