概要
nginxを使ってapacheに代わるWebアプリケーションサーバ環境を作る。
このTIPSの目的
- nginxがどのようなものか体験してみたい。
- nginxとphpをどのように連携させるものか体験してみたい。
インストールするソフトウェア
- nginx 1.12.1-1
- php-fpm 5.4.16
手順
1.nginxのインストール
1-1.nginxのリポジトリを追加する
CentOS7.3にnginxの公式サイトからnginxのインストールパッケージを入手するため、nginx.repo
を作成する。
[nginx]
name=nginx.repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
1-2.nginxインストール
nginxからパッケージをダウンロードし、インストールする。
[root@localhost]# yum -y install nginx
- 中略 -
Installed:
nginx.x86_64 1:1.12.1-1.el7
Complete!
1-3.nginxのサービスを開始する
nginxインストール直後にwebサーバとしてのサービス確認ができるので、nginxサービスを開始する。
[root@localhost]# systemctl start nginx
1-4.nginxの動作確認
他コンピュータからcentosのipアドレスにアクセスした時、下記ウェルカムメッセージが表示されれば、Webサービスの正常性を確認したことになる。
2.PHP(PHP-FPM)のインストール
2-1.php5.4のインストール
centosサイトからphp5.4関連のパッケージをダウンロードし、インストールする。
[root@localhost]# yum -y install php php-mbstring php-pear php-fpm
- 中略 -
installed:
php.x86_64 0:5.4.16-42.el7
php-fpm.x86_64 0:5.4.16-42.el7
php-mbstring.x86_64 0:5.4.16-42.el7
php-pear.norach 1:1.9.4-21.el7
Dependency Installed:
httpd.x86_64 0:2.4.6-67.el7.centos.2
httpd-tools.x86_64 0:2.4.6-67.el7.centos.2
libzip.x86_64 0:0.10.1-8.el7
mailcap.noarch 0:2.1.41-2.el7
php-cli.x86_64 0:5.4.16-42.el7
php-common.x86_64 0:5.4.16-42.el7
php-process.x86_64 0:5.4.16-42.el7
php-xml.x86_64 0:5.4.16-42.el7
Complete!
2-3.php-fpmの設定を変更
nginxと連携させるため、php-fpmの設定を編集。
※ユーザアカウントnginxとグループアカウントnginxはパッケージ導入時に勝手に作成される
[www]
listen = /var/run/php-fpm/php-fpm.sock;
listen.owner = nginx
listen.group = nginx
listen.mode = 660
user = nginx ← user = apacheから変更
group = nginx ← user = apacheから変更
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
2-4.php-fpmのサービスを開始する
[root@localhost]# systemctl start php-fpm
2-5.nginxに.phpファイルを処理するための設定を追記する
nginxの設定ファイルを下記のように書き換える。
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/scripts$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
2-6.nginxを再起動
/etc/nginx/cond.d/default.conf
への追記を反映させるため、nginxサービスを再起動する。
[root@localhost]# systemctl restart nginx
2-7.動作テストスクリプトを作成
phpが正常に処理していることを確認するためphpinfo()
を実行するコードを記述したスクリプトファイルを作成する。
<?php phpinfo(); ?>
3.サービスリリース
CentOSが再起動されてもサービスを提供できるように、systemctlでnginx
とphp-fpm
の自動管理を有効にする。
[root@localhost]# systemctl enable nginx
[root@localhost]# systemctl enable php-fpm
一通りやってみた感想
Qiitaやgoogleで見つかった情報を参考にいろいろ試してみたが、実際に自分でやらないとわからない箇所が多く、やはり手順は自分で試して成功したものを正にするのが一番だなぁと思った。