Apache2.4とPHP7.4の連携

動作中のシステムを、そろそろ各種バージョンアップした新サーバーに移す作業に入ったが、新サーバーで、ApacheからPHPが動作しなかった。

新サーバーのバージョン

CentOS8.2
Apache2.4.37
PHP7.4.10

原因

以前のApacheのデフォルトが 、MPM prefork だったのが、今回は MPM event になっていた。

(確認)

/etc/httpd/conf.modules.d/00-mpm.confの中を見ると、ロードするモジュールがMPM eventのモジュールに変わってる。

対応

以前のpreforkにするということも考えられるが、MPM eventで突き進むことにした。

連携するために追加でやったことは、以下。

1.php-fpmの有効化

php-fpmをサービス起動するように設定

systemctl enable php74-php-fpm
systemctl start php74-php-fpm

2.mod_proxy_fcgiを有効化

今までは、/etc/httpd/conf.modules.d/00-proxy.confは、すべてコメントアウトしていたが、以下を有効にする。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

CertbotによるSSL証明書の設定

CentOS 8.2 にLet’s encrypt でSSL証明書を設定した時のメモ。

検索すると、古いやり方が出てくる。最新のやり方は、Certbotの本家サイトに行くのがいい。

https://certbot.eff.org/lets-encrypt/centosrhel8-apache

OSとWebサーバーを選んで、後は指示通りにやるだけ。

一応、CentOS 8.2 で、Apache 2.4 でやった時の手順は以下(2020年9月3日時点)。

1.SSLサーバーの設定

mod_sslは既に入れてあり、SSLは有効化されている。

ただし、SSL証明書を取得したいドメインについては、バーチャルホストとして定義することが必要。

デフォルトの/etc/httpd/conf/httpd.confではなく、/etc/httpd/conf.d以下に、バーチャルホストを定義する。ここに定義した、XXXX.com.confに対して、後の手順4で、Certbotが、XXXX.com-le-ssl.confを作成して、XXXX.com.confについても、httpsリダイレクトに修正してくれる。

2.EPELライブラリの有効化

https://fedoraproject.org/wiki/EPEL#Quickstart

これも既にやってあったけど、一応、以下をやる。

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

後、一応、こちらも入れておいた方がいいい。

sudo dnf config-manager --set-enabled PowerTools

3.Certbotのインストール

sudo dnf install certbot python3-certbot-apache

4.証明書のインストール

HTTP用にバーチャルホストが定義してあれば、自動で証明書を取得して、定義ファイルも作ってくれる。

sudo certbot --apache

SSL化したいバーチャルホストを選択すれば、後は自動でやってくれる。ドメイン定義がちゃんとあっていることが前提なので、新サーバーに移行する場合の、新サーバー側で事前のSSL証明書取得についてはできない。

5.自動更新の設定

crontabに直接、定期的に更新するのを設定する。

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

6.確認

https://www.ssllabs.com/ssltest/