「広告」

apache (event) + php-fpmの設定。ユーザ毎の権限で実行

「広告」
記事内に広告が含まれています。
「広告」

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」
と、なっています。

 

タイトルとURLをコピーしました