MENU
カテゴリー
アーカイブ

FPM/FastCGI(php7.2-fpm,proxy_fcgi)

公開中のサイトをパーミッション(ディレクトリー:705、ファイル:604)で動作させるよう設定を変更した。
具体的には Apache の実行ユーザー(www-data)と php の実行ユーザー(hoge)を分けて、ファイルやディレクトリーの所有者を hoge にする。
これで、 ftp アカウントも hoge でログインするから以前のこんなことで悩まなくても良くなった。

次のサイトで懇切丁寧に説明されているので一読されることをお勧めする。

1 FastCGI Process Manager のインストール

sudo apt install php-fpm

2 www.conf、php.ini の編集

www.conf はとりあえず user と group だけ変更。

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = hoge
group = hoge

php.ini は /etc/php/7.2/fpm/php.ini を使うことになるから、それまで使っていた php.ini の設定を変更していたら適宜、修正すること。

3 CGI版PHPの有効化

sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi

1行目でFPM(FastCGI Process Manager)が有効になる。設定ファイル php7.2-fpm.conf の中身はこんなので、ファイルの拡張子を見て php-fpm にリダイレクトする。
2行目は mod_proxy_fcgi.so を有効化するもの。

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
    # Enable http authorization headers
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+\.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^\.ph(ar|p|ps|tml)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule>

4 モジュール版PHPの無効化

Apache の php モジュール版を無効化する( CGI 版との同居は不可)。

sudo a2dismod php7.2

5 リスタート

sudo service apache2 restart

6 確認

<?php phpinfo(); ?>

Server API が FPM/FastCGI になっていればOK。

その他細かなチューニングは必要だけど、とりあえずこれで目的は達成できた。

コメント

コメントする

目次