「広告」

apache (event) + php(CGI/FastCGI)の設定。ユーザ毎の権限で実行

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

apache 2.4.x + php 7.4.x での、php (CGI/fastCGI)の設定、覚え書きです。
マルチプロセッシングモジュール (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 fcgid_module modules/mod_fcgid.so
↑ 上記も有効にする
# LoadModule cgid_module modules/mod_cgid.so
# LoadModule proxy_module modules/mod_proxy.so
# LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
↑上記は、コメントのままでOK

 

「広告」

php 7.4.x

# 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
「広告」

全体を、CGI/FastCGIにする場合

# vi /usr/local/apache2/conf/httpd.conf
<Directory /home>
    Options All -Indexes +SymLinksIfOwnerMatch -FollowSymLinks
    AllowOverride All
    AddHandler fcgid-script .php
    FcgidWrapper /usr/local/bin/php-wrapper .php
</Directory>

↑ 後半の2行を加えます。

# vi /usr/local/bin/php-wrapper

#!/bin/sh
export PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_CHILDREN=0
exec /usr/local/bin/php-cgi
# chown www.www /usr/local/bin/php-wrapper
# chmod a+x /usr/local/bin/php-wrapper

↑ 実行権限を設定する

「広告」

個別に、CGI/FastCGIにする場合(ユーザ毎の権限で実行)

# vi /usr/local/apache2/conf/httpd.conf

LoadModule suexec_module modules/mod_suexec.so

↑ SuEXECを有効にします。

SuexecUserGroup test_user users
AddHandler fcgid-script .php
FcgidWrapper /home/test_user/php-wrapper .php

↑「VirtualHost」の中で、上記を設定します。

「SuexecUserGroup」で実行するユーザ/グループを指定します。

# vi /home/test_user/php-wrapper

#!/bin/sh
export PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_CHILDREN=0
exec /usr/local/bin/php-cgi

↑ 各ユーザ毎に、php-wrapperと言うファイルを作成します。

exec /usr/local/bin/php-cgi -c /home/test_user/php.ini

↑ というふうに、ユーザ毎のphp.iniファイルを指定することも可能です。

CGI(.phpファイル)にアクセスするたびに

test_users  4246  5.6  1.8 200348 33888 ?        S    15:39   0:00 /usr/local/bin/php-cgi

↑ というようにユーザ権限で、プログラムが実行されます。
アクセスがないと、phpは、実行されず、プロセスも起動しません。メモリも消費されません。

X-serverのX10などの共用サーバーで、設定されている方式です

「広告」

apache 起動

phpinfo()で、みると

Server APIが、「CGI/FastCGI」
と、なっています。

 

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