Raspbian(Buster)上で、wordpressの環境を構築して、「遅いなぁー。」と思いながらも、色々とドタバタしていたので放置していたのですが、久しぶりに環境を見てみると、php-fpmが使われていなかったです。
システム環境
$ uname -rm 4.19.118-v7+ armv7l $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
php-fpmについて
マニュアルには、「FPM (FastCGI Process Manager) は PHP の FastCGI 実装のひとつで、 主に高負荷のサイトで有用な追加機能を用意しています。」という記載があります。
参考URL : https://www.php.net/manual/ja/install.fpm.php
要するに、これを利用することで、高負荷なサーバーでの高速化望めるということ。
FastCGIの利用で高速化になる理由
CGIは、リクエストがあるたびに、プロセスを生成し破棄します。FastCGIは初回リクエスト時に生成したプロセスをメモリーに保持し、次回からのリクエストは、メモリーに保持されたプロセスを実行します。これにより、プロセスの生成時間を短縮することが可能となります。
php-fpmのインストール
$ sudo apt install php-fpm Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: rpi-eeprom-images <= 不要なパッケージになった Use 'sudo apt autoremove' to remove it. The following NEW packages will be installed: php-fpm 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. : (割愛) Preparing to unpack .../php-fpm_2%3a7.3+69_all.deb ... Unpacking php-fpm (2:7.3+69) ... Setting up php-fpm (2:7.3+69) ... $ sudo apt autoremove Reading package lists… Done Building dependency tree Reading state information… Done The following packages will be REMOVED: rpi-eeprom-images 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. : (割愛) Removing rpi-eeprom-images (7.8-1) … $ sudo a2enmod proxy_fcgi setenvif <= proxy_fcgiとsetenvifのロードを有効 Considering dependency proxy for proxy_fcgi: Enabling module proxy. Enabling module proxy_fcgi. Module setenvif already enabled To activate the new configuration, you need to run: systemctl restart apache2 $ sudo a2enconf php7.3-fpm <= php7.3-fpm定義を有効 Enabling conf php7.3-fpm. To activate the new configuration, you need to run: systemctl reload apache2 $ : 定義の変更 $ cd /etc/php/7.3/fpm/pool.d/. $ sudo cp -p www.conf BK_www.conf.original $ vi www.conf : (割愛) listen = 127.0.0.1:9000 : (割愛) $ : 定義の追加 $ cd /etc/apache2/sites-available/. $ cp -p 000-default.conf 000-default.conf.original $ vi 000-default.conf <VirtualHost *:80> : (割愛) <FilesMatch "\.php$"> SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch> </VirtualHost> $ sudo systemctl restart php7.3-fpm $ sudo systemctl restart apache2