nginx+php-fpm on CentOS7で別々のサーバで構築する方法
実は、恥ずかしながら、WEBアプリを開発したことはありますが、2層構造やWEBサーバをApacheでしか構築した経験がありません。
そのため、今回はそんな初心エンジニアでもできるCentOS7がインストールされた2台のサーバ上でnginxとphp-fpmをそれぞれ導入して連携させたいと思います。
構築環境
今回の環境は以下の通りでやっていきます。
OS:CentOS7.6
nginx:1.17.0
php:7.0.33
目標
nginxがインストールされたサーバ(192.168.1.101:80)とphp-fpmがインストールされたサーバ(192.168.1.102:9000)を構築し、パソコン(192.168.1.100)からPHPが実行されたら目標達成。
構築
まず、CentOS7には、SELinuxというものとFirewalldがあり、標準のPHPバージョンが5.4っていう感じです。
SELinux無効化
SELinuxを切ります。
[user@web ~]$ getenforce Enforcing [user@web ~]$ sudo vi /etc/selinux/config
[/etc/selinux/config]
SELINUX=enforcing ↓ SELINUX=disabled
[user@web ~]$ reboot #再起動 [user@web ~]$ getenforce Disabled
firewallの設定追加
[user@web ~]$ systemctl status firewalld.service Active: active (running) [user@web ~]$ sudo firewall-cmd --add-service=http --permanent #http許可 [user@web ~]$ sudo firewall-cmd --add-service=ssh --permanent #ssh許可 [user@web ~]$ sudo firewall-cmd --reload
nginxインストールと設定
[user@web /etc/yum.repos.d/]$ sudo vi nginx.repo #新規ファイル作成
[/etc/yum.repos.d/nginx.repo]
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
[user@web ~]$ sudo yum install -y nginx #nginxインストール [user@web ~]$ sudo systemctl enable nginx #自動起動設定 [user@web ~]$ sudo systemctl start nginx #起動 [user@web ~]$ sudo vi /etc/nginx/conf.d/default.conf #編集
[/etc/nginx/conf.d/default.conf]
server{ location / { index index.html index.htm index.php; #index.phpを追加 } location ~ \.php$ { root /var/www/html fastcgi_pass 192.168.1.102:9000; #phpアプリケーションサーバの指定 fastcgi_index index.php; fastcgi_parm SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
[user@web ~]$ sudo systemctl restart nginx #nginx再起動
php-fpmインストールと設定
nginxサーバと違い、こちらのサーバはパソコンとか直接通信しないので、SELinuxとfirewalldを無効化しておいてください。
[user@app ~]$ sudo yum install -y --enablerepo=remi,remi-php7.0 php-fpm #php-fpmインストール [user@app ~]$ sudo systemctl enable php-fpm.service #自動起動設定 [user@app ~]$ sudo useradd nginx #ユーザ作成 [user@app ~]$ sudo passwd nginx #ユーザ(nginx)のパスワード設定 [user@app ~]$ sudo groupadd nginx [user@app ~]$ sudo usermod -aG nginx nginx #ユーザをグループに追加 [user@app ~]$ sudo vi /etc/php-fpm.d/www.conf #php-fpm設定
[/etc/php-fpm.d/www.conf]
user = apache group = apache ↓ user = nginx group = nginx listen = 127.0.0.1:9000 #アプリサーバ(自身)の待ち受けIPアドレスとポート指定 ↓ listen = 192.168.1.102:9000 listen.allowed_clients = 127.0.0.1 #アクセスできるWEBサーバの指定 ↓ listen.allowed_clients = 192.168.1.101
[user@app ~]$ sudo systemctl restart php-fpm #php-fpm再起動 [user@app ~]$ sudo vi /var/www/html/index.php #新規作成
[/var/www/html/index.php]
<?php echo "192.168.1.102"; phpinfo(); ?>
これでパソコンのブラウザのアドレスバーにhttp://192.168.101/index.phpでアクセスできるんではないでしょうか?