Apache2でphp-fpmを動かす

スポンサーリンク

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