同時処理によりWebの表示速度が爆上げになったHTTP/2、最近の普及率は結構高くなってきていました。今後はむしろHTTP/2のほうこそ主流だと思います。今回はowner203の世界にようやくHTTP/2を実装したので、その詳細をメモしておきます。
実装環境
まず実装前の環境を説明します。OSはUbuntu 20.04 LTSで、Apacheのバージョンは2.4.43です。そしてPHPのバージョンは7.4.7です。インストールしているPHP関連のパッケージはこちらです。
php7.4
libapache2-mod-php7.4
php7.4-mysql
php7.4-gd
php7.4-json
php7.4-curl
php7.4-mbstring
php7.4-intl
php7.4-xml
php7.4-xmlrpc
php7.4-soap
php7.4-zip
php7.4-bz2
php7.4-bcmath
php7.4-gmp
php-imagick
php-apcu
PHP-FPMを導入
HTTP/2導入するためにPHPモジュールを追加します。
sudo apt install php7.4-fpm
それから、指示通りにApacheのFastCGI modを有効化します。
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
最後に従来のPHP7.4のmodを無効化して、Apacheを再起動します。
sudo a2dismod php7.4
sudo systemctl restart apache2.service
MPMを変更
従来のMPM (Multi-Processing Module)はHTTP/2に完全対応していないので、従来の「prefork」から「event」に変更します。
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2.service
sudo systemctl restart php7.4-fpm.service
HTTP/2を有効化
ApacheでHTTP/2を有効化して、再起動します。
sudo a2enmod http2
sudo systemctl restart apache2.service
バーチャルホストの設定変更
ホスト中のサイトのconfファイルでHTTP/2を優先させるよう記載します。
sudo vi /etc/apache2/sites-available/owner.pw.conf
/etc/apache2/sites-available/owner.pw.conf #前略... <VirtualHost *:443> #以下の行を追記する Protocols h2 http/1.1 #中略... </VirtualHost>
PHPの設定ファイル
PHP-FPMの使用によって、使用されるphp.iniファイルが変わります。必要に応じてphp.iniファイルをカスタマイズします。
sudo vi /etc/php/7.4/fpm/php.ini
/etc/php/7.4/fpm/php.ini memory_limit = 1G post_max_size = 5G upload_max_filesize = 5G
PHP-FPMの設定
PHP-FPMの設定によってサーバーの性能が変わります。しかし不適切な設定は逆に性能が落ちることやメモリリーク等につながるので注意しましょう。
sudo vi /etc/php/7.4/fpm/pool.d/www.conf
/etc/php/7.4/fpm/pool.d/www.conf pm = static #プロセス制御方法をstaticにする(プロセス起動数が少ないため) pm.max_children = 2 #最大プロセス数を2にする(サーバーのCPUコア数を考慮する) pm.max_requests = 500 #プロセスごとの最大リクエスト数を制限する(メモリリークを防ぐため)