新人社内SEのメモ書き

琵琶湖生まれ琵琶湖育ち。京都の産業用機器メーカの社内SE。自身の体験した事や勉強したことなど記事にしてます。自作PCとドライブが大好き。

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でアクセスできるんではないでしょうか?