FreeBSDで、Let’s EncryptでTLS(SSL)の証明書を設定し、HTTP2プロトコルを有効にしたWebサーバを、Apache 2.4とPHP 8.2で作成する。
以下、簡単な手順を記述。
root権限でpkgで必要なものをインストールする。PHPの追加パッケージはお好みで。
pkg install php82 php82-gd php82-mbstring php82-mysqli php82-pgsql pkg install apache24 ap24-mod_http2 pkg install py39-certbot py39-certbot-apache
/etc/rc.conf にApache Web Serverの起動設定を行う。
apache24_enable="YES"
Apache Web Serverを起動する。ここではhttpのみの起動となる。
/usr/local/etc/rc.d/apache24 start
Let’s Encryptの実行をして証明書を取得する。httpでサーバにアクセスがあるので、Apache Web Serverの起動されていることが前提。
certbot certonly --webroot -w /usr/local/www/apache24/data -d www.example.com
crontabで定期的に更新するように設定。
0 9 1,15 * * /usr/local/bin/certbot renew
SSLの設定を行う。
cp /usr/local/etc/apache24/extra/httpd-ssl.conf /usr/local/etc/apache24/modules.d/000_httpd-ssl.conf
SSLの設定ファイルをコピーして編集する。Let’s Encryptで作ったキーファイルを指定
ファイル内の書き換える箇所のみ引用SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.example.com/cert.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.example.com/privkey.pem"
SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.example.com/fullchain.
pem"
Apacheの設定では、 /usr/local/www/apache24/httpd.conf を書き換えする。
LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so # LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
mod_mpm_preforkがデフォルトになっているが、これではHTTP2でPHPを実行できないので、mod_mpm_eventを有効にする。
設置されている /usr/local/etc/apache24/modules.d/200_mod_h2.conf を編集する
LoadModule http2_module libexec/apache24/mod_h2.so
/usr/local/etc/apache24/modules.d/001_php.conf というファイルを作成して編集。
HTTP2の環境でのPHPはmod_phpではなく、php-fpmでの実行となる。
LoadModule proxy_module libexec/apache24/mod_proxy.so LoadModule proxy_http2_module libexec/apache24/mod_proxy_http2.so LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
/etc/rc.conf で起動するように設定
php_fpm_enable="YES"
php-fpmを起動し、Apache Web Serverを再起動する。
/usr/local/etc/rc.d/php-fpm start /usr/local/etc/rc.d/apache24 restart