任意のユーザーでCGI版PHPを動かす

前回からの続きです。
アイキャッチ画像は、まったく関係ないけどApacheのイメージで連想されるものをチョイス(爆)

web経由のphp実行を任意のユーザーで行えるよう、PHP-FPMを設定していきます。

PHP-FPMの設定

cd /etc/php/7.4/fpm/pool.d

このディレクトリ内の設定ファイルをユーザー毎(厳密にはソケット毎)に用意します。

www.conf ファイルがベースファイルになるので、これをコピー。

sudo cp www.conf monmon.conf

情報を変更

ファイルの冒頭、pool name を始め以下の情報を任意のユーザーなどに諸々変更。

[monmon]
user = monmon
group = monmon
listen = /run/php/php7.4-fpm-monmon.sock

PHP-FPMを再起動すると……

sudo systemctl restart php7.4-fpm

あら不思議。以下に、独自のソケットができているはず。

ls /var/run/php
php7.4-fpm-monmon.sock

あとはapacheの設定ファイルに

sudo vi /etc/apache2/sites-available/monmon.jp-le-ssl.conf

こんな感じで phpファイルとソケットを紐付けると。

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php7.4-fpm-monmon.sock|fcgi://localhost"
</FilesMatch>

phpの実行ユーザーやグループなどが任意のものに変わっているはず。

余談ですが、PerlなどのCGIを同様にユーザー指定する場合は、suexecを利用するかんじです。

suexecもついでにインストール

sudo apt install apache2-suexec-custom

有効化して、

sudo a2enmod suexec

Apacheを再起動。

sudo systemctl restart apache2

Apacheの設定ファイルに、

sudo vi /etc/apache2/sites-available/monmon.jp-le-ssl.conf

このように設定すれば、任意ユーザーでのCGI起動ができるように。

SuexecUserGroup monmon monmon

うーん、どんどんサーバサイドの記事ばかりが増えていく(笑)
そろそろプログラム面でのネタというか、メモというか、も上げていきたい。