apache 2.4.x + php 7.4.x での、php-fpmの設定を改めて・・・
マルチプロセッシングモジュール (MPM)は、「event」で設定をしています。
目次
httpd 2.4.xの設定
# wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.gz # tar xzvf httpd-2.4.46.tar.gz # ./configure --enable-suexec --enable-ssl --with-suexec-caller=www --with-suexec-userdir=web --with-suexec-docroot=/home --with-suexec-logfile=/usr/local/apache2/logs/suexec_log --with-suexec-uidmin=100 --with-suexec-gidmin=100 --with-suexec-safepath=/bin:/usr/bin --enable-modules=all --enable-mods-shared=all --with-mpm=event --enable-mpms-shared='prefork worker event' # make # make install
↑ メモリ管理、「prefork」「worker」「event」の3つを入れて、「event」として設定をします。
# vi /usr/local/apache2/conf/httpd.conf User daemon Group daemon ↓ User www Group www
<Directory /> AllowOverride none Require all denied </Directory> ↓ <Directory /home> Options All -Indexes +SymLinksIfOwnerMatch -FollowSymLinks AllowOverride All </Directory>
<IfModule dir_module> DirectoryIndex index.html </IfModule> ↓ <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
<Files "xmlrpc.php"> Require all denied </Files> ↑加える(セキュリティ対策)
Include conf/extra/httpd-mpm.conf Include conf/extra/httpd-vhosts.conf Include conf/extra/httpd-ssl.conf ↑上記を有効にする LoadModule ssl_module modules/mod_ssl.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule cgid_module modules/mod_cgid.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so ↑上記も有効にする
mod_fcgidのインストール
# wget https://downloads.apache.org//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz # export APXS=/usr/local/apache2/bin/apxs # ./configure.apxs # make # make install
php-fpm
# wget https://www.php.net/distributions/php-7.4.19.tar.gz # tar xzvf php-7.4.19.tar.gz # cd php-7.4.19 # export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ # ./configure --with-apxs2=/usr/local/apache2/bin/apxs -with-mysqli --with-pdo-mysql --enable-mbstring --enable-pcntl --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-ftp --enable-gd --with-jpeg --with-webp --with-xpm --with-zlib --with-snmp --enable-sockets --with-freetype --enable-cgi --with-curl --enable-intl --with-gettext --with-openssl --enable-bcmath --enable-exif --with-pear
# make # make install
php-fpmの全体の設定
# cd /usr/local/etc/ # cp php-fpm.conf.default php-fpm.conf # vi php-fpm.conf ;pid = run/php-fpm.pid ↓ pid = /var/run/php-fpm.pid ;error_log = log/php-fpm.log ↓ error_log = /var/log/php-fpm.log include=NONE/etc/php-fpm.d/*.conf ↓ include=/usr/local/etc/php-fpm.d/*.conf
php-fpmの一般設定
# cd /usr/local/etc/ # cd php-fpm.d/ # cp www.conf.default www.conf
# vi www.conf user = nginx group = nginx ↓(httpd.confのユーザ/グループに合わせる) user = www group = www php_value[session.save_path] = /var/lib/php/www/session
php-fpm、特定ユーザの設定
# cd /usr/local/etc/ # cd php-fpm.d/ # cp www.conf.default test.conf
# vi test.conf [www] ↓ [test] user = www group = www ↓ user = test group = users listen = 127.0.0.1:9000 ↓ listen = /var/run/php-fpm-test.sock ;listen.owner = www ;listen.group = www ;listen.mode = 0660 ↓ listen.owner = www listen.group = www listen.mode = 0660 php_value[session.save_path] = /var/lib/php/test/session
セッションディレクトリ作成
php_value[session.save_path]
にて、ユーザ毎にセッション作成場所を作る。
# cd /var/lib/ # mkdir php # cd php # mkdir -p www/session # chown -R www.www www # mkdir -p test/session # chown -R test.users test
php スタートアップの設定
# cp sapi/fpm/php-fpm.service /etc/systemd/system/php-fpm.service # vi /etc/systemd/system/php-fpm.service ProtectKernelModules=true ↓ #ProtectKernelModules=true ProtectKernelTunables=true ↓ #ProtectKernelTunables=true ProtectControlGroups=true ↓ #ProtectControlGroups=true RestrictRealtime=true ↓ #RestrictRealtime=true RestrictNamespaces=true ↓ #RestrictNamespaces=true
# systemctl start php-fpm # systemctl enable php-fpm
再び、httpd の設定
# vi /usr/local/apache2/conf/httpd.conf LoadModule php7_module modules/libphp7.so ↓ # LoadModule php7_module modules/libphp7.so AddType application/x-httpd-php .php ↓ # AddType application/x-httpd-php .php
↑モジュールで組み込んでいた、phpを外します
全体のphpの設定
# vi /usr/local/apache2/conf/httpd.conf <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
個別のvitualhostのphpの設定
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf (/usr/local/apache2/conf/extra/httpd-vhosts.confも) <VirtualHost xx.xx.xx.xx:443> (略) <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php-fpm-test.sock|fcgi://localhost" </FilesMatch> (略) </VirtualHost>
# vi /usr/local/apache2/conf/extra/httpd-mpm.conf <IfModule mpm_event_module> ServerLimit 2 StartServers 2 MinSpareThreads 50 MaxSpareThreads 50 ThreadsPerChild 25 MaxRequestWorkers 25 MaxConnectionsPerChild 0 </IfModule>
↑上記の設定に変更(アクセス数などによる・・・)
apache 起動
phpinfo()で、みると
Server APIが、「FPM/FastCGI」
と、なっています。