スマートフォン・タブレットからインターネットサーバーオペレーション
HTTP/2 対応は急がなくてもいいが、どこかのタイミングで切り替えたいと考えていました。ただ、同時に PHP モジュール版から CGI 版の PHP-FPM に替えなければならない点で、ほとんどのウェブページで PHP スクリプトコードを使用していることから、あらかじめ検証したいと思っていました。
10 年ぐらい前は、PHP モジュール版のほうが速いといわれていましたが、PHP 7 になってものすごく高速になって、現在では、FastCGI(PHP-FPM & mod_fcgid )版が速いといわれています。
今回は、Raspberry Pi 4 model B / 4GB に Ubuntu 19.10 をセットアップしてウェブサイトの環境を構築し、HTTP/2 への移行手順を確認します。
最初は、Ubuntu 19.10 の Apache 2.4 で HTTP/2 に対応するための手順です。
まず、PHP7.3-FPM のインストールがされていない場合は、あらかじめインストールします。
$ sudo apt install php7.3-fpm
PHP7.3-FPM が起動していることを確認します。
$ sudo systemctl status php7.3-fpm
PHP7.3 のモジュール版を解除して、PHP7.3 の FastCGI(PHP-FPM & mod_fcgid )版を有効にします。
$ sudo a2dismod php7.3
$ sudo a2enmod proxy_fcgi setenvif
$ sudo a2enconf php7.3-fpm
そして、MPM を prefork から event に変更します。
$ sudo a2dismod mpm_prefork
$ sudo a2enmod mpm_event
HTTP/2 モジュールを有効にします。
$ sudo a2enmod http2
/etc
<IfModule mod_ssl.c>
<VirtualHost *:443>
:
:
Protocols h2 http/1.1
:
:
</VirtualHost>
</IfModule>
続いて、.html 拡張子ファイル内の PHP スクリプトコードが実行されることの確認です。
これまでの PHP モジュール版では、.htaccess に次のような設定をすることで、.html 拡張子ファイル内の PHP スクリプトコードが実行されました。
AddType application/x-httpd-php .html
ところが、FastCGI(PHP-FPM & mod_fcgid )版にすると、これだけでは .html 拡張子ファイル内の PHP スクリプトコードが実行されませんでした。Apache2.4 において、この先の情報が見つからず、ハマってしまいました。
Google 検索していると、現在のトレンドの nginx の HTTP/2 対応には、 PHP7.3-FPM への fastcgi_pass などの設定があるのに、Apache 2.4 では見られなかったことから、そのところに注目しながら設定ファイルを探していると、/etc
ここに .html 拡張子を加えてみました。
# <FilesMatch ".+\.ph(ar|p|tml)$">
# SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
# </FilesMatch>
<FilesMatch ".+\.(phar|php|phtml|html)$">
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
</FilesMatch>
ところが、Access denied. と表示されてしまい、なにがなんだか?ここでお手上げ、と思ったところ、 AWS EC2 Amazon Linux 2 AMI + Apache 2.4 + PHP-FPM 7.2 の構成にて、.html拡張子でPHPを動作させる - Qiita という記事が見つかりました。記事によると、さらに、/etc
;security.limit_extensions = .php .php3 .php4 .php5 .php7
security.limit_extensions = .php .html
これで .html 拡張子ファイル内の PHP スクリプトコードが実行されました。わたしの自力だけでここまではたどり着けなかったでしょう。HTTP/2 対応の見通しが立ちました。