PHPおよび依存パッケージをインストール
本稿執筆時点で、CentOS 7.1の標準リポジトリでは、PHPは5.4系です。remi(remi-php56)リポジトリでは、PHPは5.6ですので、こちらからインストールすることにします。
WordPressは、アップロードした画像を上下左右反転やリサイズなどの加工を行う機能があるのですが、php-gdライブラリが必要となります。remi-php56リポジトリにあるphp-gdは、標準リポジトリにあるgdライブラリではなく、remiリポジトリにあるgd-lastライブラリに依存しますので、まず先にこれをインストールします。
yum -y --enablerepo=remi install gd-last fontconfig fontpackages-filesystem jbigkit-libs libX11 libX11-common libXau libXpm libjpeg-turbo libpng libtiff libvpx libxcb
次に、PHPをremi-php56リポジトリからインストールします。
yum -y --enablerepo=epel --enablerepo=remi-php56 install php-cli php-pdo php-pear php-pecl-igbinary php-pecl-jsonc php-pecl-msgpack php-process php-common php-fpm php-gd php-intl php-mbstring php-mcrypt php-mysqlnd php-opcache php-pecl-apcu php-pecl-geoip php-pecl-memcache php-pecl-memcached php-pecl-zip php-xml GeoIP libevent libmcrypt libmemcached libtool-ltdl libxslt t1lib libicu
PHP設定(/etc/php-fpm.d/www.conf)
Fast-CGI形式で動作するPHP-FPMですが、設定ファイルは/etc/php-fpm.d/www.confになります。ログの設定やプロセスの起動方法、初回起動時の子プロセス数などの設定項目がありますが、必ず変更しないといけないのが、起動ユーザーです。デフォルト値がユーザー、グループともにapacheになっています。
user = apache group = apache
今回、Webサーバーはnginxで、起動ユーザーもnginxなので、これに合わせます。
user = nginx group = nginx
ここはsedのワンライナーで置換してしまいましょう。
sed -i.orig "/^[ug][sr][eo][ru]/s/\;//g;s/apache$/nginx/g" /etc/php-fpm.d/www.conf
PHP設定(/etc/php.ini)
php.iniでは、デフォルトでは空の値になっているタイムゾーン設定にAsia/Tokyoを設定し、一撃シェルスクリプトの先頭で設定した制限値をここで代入します。もう一度、php.iniに設定する制限値を見てみましょう。
MEMLIMIT=256M # memory_limit (Default: 128M) POSTMAXSIZE=32M # post_max_size (Default: 8M) UPLOADMAXFILESIZE=128M # upload_max_filesize (Default: 2M)
php.iniの設定もsedのワンライナーで行います。
PHPINI=/etc/php.ini
cp -p ${PHPINI}{,.orig}
sed -i "s/^;date.timezone\ =$/date.timezone = Asia\/Tokyo/" ${PHPINI}
sed -i "/^memory_limit/s/[0-9]*M$/${MEMLIMIT}/" ${PHPINI}
sed -i "/^post_max_size/s/[0-9]*M$/${POSTMAXSIZE}/" ${PHPINI}
sed -i "/^upload_max_filesize/s/[0-9]*M$/${UPLOADMAXFILESIZE}/" ${PHPINI}
nginxインストール、初期設定
nginxのインストールと設定の手順は、ほぼ前回と同じです。nginxリポジトリのダウンロード、nginxのインストール、nginx.confの設定、バーチャルホストの設定ファイルの生成の順に行っていきます。
nginxリポジトリのダウンロード、nginxのインストール
前回と流れは一緒ですが、リポジトリはRHEl7/CentOS7用のものを用います。
yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
cp -p /etc/yum.repos.d/nginx.repo{,.orig}
sed -i "/^baseurl/s/centos/mainline\/centos/" /etc/yum.repos.d/nginx.repo
yum -y install nginx
/var/lib/php/sessionと/var/lib/php/wsdlcacheはphp-fpmインストール後にできるディレクトリですが、これらのグループはデフォルトでapacheになっています。
$ ll /var/lib/php/ total 8 drwxrwx--- 2 root apache 4096 Apr 16 21:48 session drwxrwx--- 2 root apache 4096 Apr 16 21:48 wsdlcache
このため、グループをnginxにします。
sudo chgrp nginx /var/lib/php/{session,wsdlcache}
nginx.confの設定
nginx.confの設定ですが、worker_processesを1からautoへ変更します。
sed -i.orig "s/worker_processes[[:space:]]\+[0-9]\+/worker_processes auto/" /etc/nginx/nginx.conf
バーチャルホストの設定ファイルの生成
バーチャルホストの設定ファイルは、/etc/nginx/conf.d/の下に、バーチャルホストの名前をファイル名にして生成します。
cat << _EOL_ | tee /etc/nginx/conf.d/${VHOST}.conf
server {
listen 80;
server_name ${VHOST};
access_log /home/logs/${VHOST}/access_log main;
error_log /home/logs/${VHOST}/error_log;
location / {
root /home/vhosts/${VHOST}/public_html;
index index.php index.html index.htm;
## WordPressのパーマリンク設定をカスタム構造に ##
if (-f \$request_filename) {
expires 30d;
}
if (!-e \$request_filename) {
rewrite ^.+?(\$/wp-.*) \$1 last;
rewrite ^.+?(/.*\.php)\$ \$1 last;
rewrite ^ /index.php last;
}
## ここまで ##
}
location ~ \.php\$ {
root /home/vhosts/${VHOST}/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root/\$fastcgi_script_name;
client_max_body_size 256M;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
_EOL_
特に難しいことはしていないのでソースコードの解説は省略しますが、この後、バーチャルホストの公開用ディレクトリ、ログディレクトリを作成し、ログローテーションの設定を追加しています。
