Webサーバー環境を設定します。
今回はPails5に標準搭載されたPumaをアプリケーションサーバーとして使用し、Nginxをリバースプロキシサーバーとして使用することにします。
nginx 環境構築
nginxをインストールします。
sudo su yum -y install nginx nginx -v
nginx version: nginx/1.10.2
nginxをスタートします。自動起動の設定もしておきます。
systemctl start nginx systemctl enable nginx
サービス設定状態を見るにはこれで確認。前バージョンではchkconfig –listコマンドですね。
systemctl list-unit-files --type=service
Railsとの接続
NginxとPumaはUnix-socketで接続します。
動作確認にはRails5インストールで作成したサンプルアプリケーションを使用します。
まずはNginxの設定から、
vim /etc/nginx/conf.d/sample.conf
# pumaで生成した socket に接続 upstream backend { server unix:///home/sample/tmp/sockets/puma.sock; } server { listen 80; server_name sample; location / { proxy_pass http://backend/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; } }
構文チェックしてから再起動します。
nginx -t systemctl restart nginx
次にPumaの設定ファイルにソケットにbindする設定を追加します。
vim /home/sample/config/puma.rb
# Unix-socketにbind bind "unix:///home/sample/tmp/sockets/puma.sock"
pumaをデーモンで起動します。
bundle exec puma -C /home/sample/config/puma.rb -d
ブラウザから http://xxx.xx.xx.xx にアクセスしてみます。
さて、このpumaですが本格運用をするためには自動起動する必要があります。
systemdユニットを作成します。
vim /etc/systemd/system/puma.service
[Unit] Description=Puma Application Server After=network.target [Service] Type=simple User=root WorkingDirectory=/home/sample Environment=RAILS_ENV=development ExecStart=/usr/local/rbenv/shims/bundle exec puma -C /home/sample/config/puma.rb TimeoutSec=300 Restart=always [Install] WantedBy=multi-user.target
pumaをスタートしてみます。自動起動の設定もしておきます。
chmod +x /etc/systemd/system/puma.service systemctl start puma.service systemctl enable puma.service
reboot後にpumaデーモンプロセスが起動しているはずです。
phpとの接続
NginxとphpもUnix-socketで接続します。
まず最新のphpをインストールするためにRemiリポジトリを追加します。
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
インストールします。
yum -y install --enablerepo=remi-php71 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc
文字コード設定などを追加しておきます。
vim /etc/php.ini
追加設定例
error_log = /var/log/php_errors.log mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.detect_order = auto expose_php = off date.timezone = Asia/Tokyo
PHPのFastCGIの設定を変更します。
vim /etc/php-fpm.d/www.conf
; プロセスのユーザー/オーナーをapacheからnginxに変更 ;user = apache user = nginx ;group = apache group = nginx ; TCP接続からソケット接続に変更 ;listen = 127.0.0.1:9000 listen = /run/php-fpm/php-fpm.sock ; リスナーソケットのユーザー/オーナーをnginxに設定 listen.owner = nginx listen.group = nginx
構文チェックしてから起動します。
php-fpm -t systemctl start php-fpm systemctl enable php-fpm
Nginx側にテスト用ページの設定をします。
vim /etc/nginx/conf.d/test.conf
server { listen 80; server_name test; root /home/html; location / { index index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } }
構文チェックしてから再起動します。
nginx -t systemctl restart nginx
PHPテスト用ページを作成
vim /home/html/index.php
<html> <head> <title>PHP Test</title> </head> <body> <?php function show_text($text) { echo "$text<br>"; } show_text("Hello PHP"); show_text(phpversion()); ?> </body> </html>
ブラウザから http://xxx.xx.xx.xx にアクセスしてみます。
これでRails5/PHP7 on Nginx on CentOS7 の環境構築まで完了しました。
次回はRailsアプリケーションのバージョンアップや、Let’s Encryptのサーバー引き継ぎなどです。