WordPressでWEBサーバ、NFS、DBサーバの冗長構成 2 [Webサーバの設定]

2020年11月1日

前回に引き続きWordPressの冗長構成について説明していきます。

今回はWebサーバの設定です。

WebサーバにはNginxを利用します。Apacheと違ってNginxだけではPHPは動かず、PHP-FPMも必要なので注意しましょう。

OSはCentOS7です。

Nginxのインストール

#Nginx用のリポジトリを取得
yum -y update
yum -y install wget
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

#Nginxのインストール
yum -y install nginx

#Nginxの起動・自動起動の有効化
systemctl start nginx
systemctl enable nginx

設定完了後、Webブラウザから「http://サーバのIPアドレス」にアクセスすると、Nginxの設定画面が見れるかと思います。
見れない場合は80ポートが空いてないかもしれないので確認してみてください。

PHPのインストール

PHP7.3をインストールします。標準のリポジトリだとPHP5.6になってしまうので、PHP7用のリポジトリを取得し必要なものをまとめてインストールします。

yum -y install yum-utils
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php73
yum -y install --enablerepo=remi,remi-php73 php php-fpm php-mbstring php-mysql php-gd php-devel php-pecl-zendopcache php-pear php-json

#phpのバージョンを確認
php -v

phpのバージョンが表示されれば成功です。

※これで特にエラーがなくインストールできればいいのですが、自分の環境だとどうしてもphp-develでエラーが発生してインストールできませんでした。そのため、下記の方法でphp-develのみ別でインストールしました。

 

php-develがインストールできない場合

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libedit-devel-3.0-12.20121213cvs.el7.x86_64.rpm
yum install -y libedit-devel-3.0-12.20121213cvs.el7.x86_64.rpm
yum -y install --enablerepo=remi,remi-php73 php-devel
```

Nginx・PHP-FPMの設定

さて、必要なものはそろったのであとはサーバの設定をしていきます。

PHP-FPMの設定

/etc/php-fpm.dの中のapacheをnginxに変更します。

vi /etc/php-fpm.d/www.conf

#apacheをnginxに変更
user = nginx
group = nginx
#php-fpm起動・自動起動の有効化
systemctl start php-fpm
systemctl enable php-fpm

Nginxの設定

今回はLBで443(HTTPS)で受けて、LB->Webは80(HTTP)の想定なので、80番ポートの設定のみ行います。

vi /etc/nginx/nginx.conf

#下記部分変更
root /var/www/html

location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

必要な場合は下記のように静的ファイルのキャッシュ設定もしておきましょう。

location ~ .*\.(html?|jpe?g|gif|pdf|png|css|js|ico|swf|inc) {
expires 30d;
access_log off;
}
#Nginx・PHP-FPMの再起動
systemctl restart nginx
systemctl restart php-fpm

ここまで来たら、/var/www/html/index.phpを作成してみましょう。

vi /var/www/html/index.php

<?php phpinfo(); ?>

「http://サーバのIPアドレス」 にアクセスして確認します。
phpの情報が表示されていたら完了です!