suexec、で、php、perlをVirtualHost毎に実行ユーザを設定できますが、今回は、phpの実行ユーザをphp-fpmで設定をします。
(かつては、suPHPというツールもありましたが、今の時代は、利用しているサーバーは少ないでしょう・・・)
php-fpmの設定変更
サーバーは、nginxで利用しています。
# ps ax |grep php 17159 ? Ss 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf) 17160 ? S 0:49 php-fpm: pool www 17161 ? S 0:49 php-fpm: pool www 18223 ? S 0:33 php-fpm: pool www
↑ 上記のようにphp-fpmが起動しています。
# cp /usr/local/etc/php-fpm.d/www.conf /usr/local/etc/php-fpm.d/test.conf
↑設定ファイルをコピーします。
vi /usr/local/etc/php-fpm.d/test.conf [www] ↓ [tests] user = nginx group = nginx ↓ user = tests group = users listen = 127.0.0.1:9000 ↓ listen = /var/run/php-fpm-tests.sock
↑設定内容を変更します。「user」が、実行ユーザになりますので、VirtualHostで設定したユーザ名と一致させます。
(FTPのユーザ名と一致させます)
# systemctl restart php-fpm # ps ax |grep php 26118 ? Ss 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf) 26119 ? S 0:00 php-fpm: pool tests 26120 ? S 0:00 php-fpm: pool tests 26121 ? S 0:00 php-fpm: pool www 26122 ? S 0:00 php-fpm: pool www
↑「pool tests」というプロセスが増えました。
nginxの設定変更
vi /usr/local/nginx/conf/xxxx.conf server { } の中の fastcgi_pass 127.0.0.1:9000; ↓ fastcgi_pass unix:/var/run/php-fpm-tests.sock;
↑該当の、「VirtualHost」の「server」ブロックの中の「fastcgi_pass」をソケットタイプに変更をして、php-fpmで指定したソケットと一致をさせます。
# systemctl restart nginx
↑ nginxを再起動させます。
502 Bad Gateway
↑ もし、「502 Bad Gateway」
となってしまったら、
vi /usr/local/etc/php-fpm.d/test.conf ;listen.owner = nginx ;listen.group = nginx ↓ listen.owner = nginx listen.group = nginx
とします。
これは、nginx(今回は)で、動作する、ユーザ名とグループになります。