
설치했습니다아파치/2.4.54,PHP72-FPM,PHP74-FPMArch Linux의 다른 버전의 PHP-FPM도 있습니다. 분명히 일부 구성이 잘못되었습니다.httpd.conf, PHP는 아무것도 해석할 수 없으며 브라우저는 코드를 주석 처리합니다.
내가 시도한 것:
httpd.conf:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
httpd-vhosts.conf:
<VirtualHost *:80>
LoadModule php7_module modules/libphp72.so
AddHandler php72-script php
Include conf/extra/php72-module.conf
...
php72-module.conf:
<IfModule dir_module>
<IfModule php_module7>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
SetHandler "proxy:unix:/run/php72-fpm/php-fpm.sock|fcgi://localhost/"
...
php72-fpm is active.
그리고
php -v
보고:PHP 8.1.12 (cli)
업데이트됨:
나는 움직였다:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php72-fpm/php-fpm.sock|fcgi://localhost/"
에 <VirtualHost>
그리고 얻었습니다 [503 Unavailable]
,
오류 기록:
[proxy:error] FCGI: attempt to connect to Unix domain socket /run/php-fpm72/php-fpm.sock (*:80) failed
[proxy_fcgi:error] failed to make connection to backend: httpd-UDS
답변1
귀하의 구성에서 php-fpm과 modphp를 혼합하고 있다고 생각합니다. 수행해야 할 유일한 단계는 다음과 같습니다.
sudo a2dismod php7.x # disable modphp (optional)
sudo a2dismod mpm_prefork # to use php-fpm, you need to switch to mpm_event
sudo a2enmod mpm_event # enable mpm_event
sudo a2enmod proxy proxy_fcgi # enable proxy_fcgi, required for php-fpm
sudo a2enconf php7.2-fpm # enable php7.2-fpm
Archlinux가 apache helpers와 함께 제공되지 않는 한 vhosts 파일을 업데이트할 필요가 없습니다 a2*
.
업데이트 후 업데이트
특정 위치에 Unix 소켓이 있는지 확인하십시오. 구성 에서 /etc/php/fpm/pool.d/xxx.conf
소켓의 정확한 위치를 확인한 다음 php-fpm을 다시 시작해야 합니다.
답변2
Ubuntu 20-22 사용자의 경우:
목적:
소켓 + fcgid 모듈을 사용하여 fpm을 설치하고 도메인당 요청에 사용자 권한을 적용합니다.
1단계: 설치
sudo apt-get update
sudo systemctl stop apache2
sudo apt-get install libapache2-mod-fcgid
sudo apt-get install php8.1-fpm
# ubuntu 20 missing libs?!
sudo apt-get install php-mbstring
sudo apt-get install php-gd
2단계: 모듈 비활성화/활성화
sudo a2dismod php* mpm_prerfork cgi cgid
sudo a2enmod mpm_event fcgid proxy_fcgi headers rewrite
# Ubuntu 20
sudo a2enconf php7.4-fpm
# Ubuntu 22
sudo a2enconf php8.1-fpm
3단계: 구성 명령 추가
사용자: "john"
도메인: "mydomain.com"
(ㅏ). 아파치 FPM 구성
sudo nano /etc/apache2/mods-available/fcgid.conf
유형:
<IfModule mod_fcgid.c>
FcgidConnectTimeout 20
AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php
<IfModule mod_mime.c>
AddHandler fcgid-script .fcgi
</IfModule>
</IfModule>
(비). FPM 구성
# Ubuntu 20
sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/mydomain.com.conf
# Ubuntu 22
sudo cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/mydomain.com.conf
변화:
[www] -> [mydomain.com]
user = www-data -> user = john
group = www-data -> group = john
추가하거나 비워 두세요:
;;;;;;;;;;
; Memory ;
;;;;;;;;;;
php_admin_value[memory_limit] = 12M
php_admin_value[post_max_size] = 12M
php_admin_value[upload_max_filesize] = 12M
;;;;;;;;;;;;
; Settings ;
;;;;;;;;;;;;
php_value[user_ini.filename] = ".user.ini"
php_value[default_charset] = "UTF-8"
php_flag[short_open_tag] = Off
php_flag[display_errors] = On
php_flag[display_startup_errors] = On
php_flag[log_errors] = On
php_value[log_errors_max_len] = 1024
php_flag[report_memleaks] = On
php_flag[html_errors] = On
php_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
php_flag[file_uploads] = On
php_value[max_file_uploads] = 20
php_flag[allow_url_fopen] = On
php_flag[allow_url_include] = Off
php_value[session.save_handler] = files
php_flag[session.use_strict_mode] = 1
php_flag[session.use_cookies] = 1
php_flag[session.use_only_cookies] = 1
; temporary disabled fro STEP 5 system('whoami') to run!
;php_admin_value[disable_functions] = exec,passthru,shell_exec,system
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
php_admin_value[error_log] = "/var/www/mydomain.com/log/php_errors.log"
php_admin_value[open_basedir] = "/var/www/mydomain.com/"
php_admin_value[doc_root] = "/var/www/mydomain.com"
php_admin_value[sys_temp_dir] = "/var/www/mydomain.com/tmp"
php_admin_value[upload_tmp_dir] = "/var/www/mydomain.com/tmp"
php_admin_value[session.save_path] = "/var/www/mydomain.com/session"
php_admin_value[soap.wsdl_cache_dir] = "/var/www/mydomain.com/tmp"
php_admin_value[curl.cainfo] = "/var/www/mydomain.com/server/registry/cacert.pem"
php_admin_value
, php_admin_flag
: 사용자가 변경할 수 없습니다.
php_value
, php_flag
: 사용자가 변경할 수 있음
(씨). 가상호스트 생성
sudo nano /etc/apache2/sites-available/mydomain.com.conf
유형:
<VirtualHost *:80>
ServerName mydomain.com.localhost
ServerAlias mydomain.com.localhost
ServerAdmin [email protected]
DocumentRoot /var/www/mydomain.com
Header set Access-Control-Allow-Origin "*"
<IfModule mod_fcgid.c>
FcgidConnectTimeout 20
AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php
# Ubuntu 20
ProxyPassMatch " ^/(.*\.php(/.*)?)$" "unix:/run/php/php7.4-fpm.mydomain.com.sock|fcgi://localhost/var/www/mydomain.com/"
# Ubuntu 22
ProxyPassMatch " ^/(.*\.php(/.*)?)$" "unix:/run/php/php8.1-fpm.mydomain.com.sock|fcgi://localhost/var/www/mydomain.com/"
<Directory /var/www/mydomain.com/>
Options +ExecCGI
Options -Indexes
AllowOverride None
Require all granted
# FRONT CONTROLLER PATTERN
# RewriteEngine On
# RewriteCond "%{REQUEST_URI}" "!=/public_html/index.php"
# RewriteRule "^(.*)$" "/public_html/index.php?$1" [NC,NE,L,PT,QSA]
</Directory>
</IfModule>
# CPU usage limits 5s 10s
RLimitCPU 5 10
# memory limits to 10M 20M
RLimitMEM 10000000 20000000
# limit of forked processes 20 30
RLimitNPROC 20 30
LogLevel warn
ErrorLogFormat connection "[%t] New connection: [%{c}L] [ip: %a]"
ErrorLogFormat request "[%t] [%{c}L] New request: [%L] [pid %P] %F: %E"
ErrorLogFormat "[%t] [%{c}L] [%L] [%l] [pid %P] %F: %E: %M"
ErrorLog /var/www/mydomain.com/log/apache_error.log
CustomLog /var/www/mydomain.com/log/apache_access.log combined
ServerSignature Off
</VirtualHost>
(디). 회로망
sudo nano /etc/hosts
유형(*):
127.0.0.1 localhost
127.0.0.1 mydomain.com
127.0.1.1 aspire1.machine.com aspire1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
파일 생성 또는 편집:
sudo nano /etc/localhost
거기에 입력하세요(*):
aspire1
(*) aspire1
원하는 짧은 이름으로 바꾸세요.
4단계: 가상 호스트 로드
sudo a2ensite mydomain.conf
5단계: 도메인 파일 + 권한 생성
sudo mkdir -p /var/www/mydomain.com/public_html
sudo mkdir /var/www/mydomain.com/log/
sudo touch /var/www/mydomain.com/public_html/info.php
sudo nano /var/www/mydomain.com/public_html/info.php
유형 info.php
:
<?php
echo '<b>';
echo php_sapi_name();
echo '</b><br>';
printf("%s<br>", 'DOCUMENT_ROOT=<b>'.$_SERVER['DOCUMENT_ROOT'].'</b>');
printf("%s", 'User=<b>');
system('whoami');
echo '</b><br>';
phpinfo();
권한 할당:
sudo chown -R john:john /var/www/mydomain.com
sudo find /var/www/mydomain.com -type d -name '*' -exec chmod 700 {} \;
sudo find /var/www/mydomain.com -type f -name '*' -exec chmod 600 {} \;
# open execute
sudo chmod 711 /var/www/mydomain.com
sudo chmod 711 /var/www/mydomain.com/public_html
6단계: 점화!
# Ubuntu 20
sudo service php7.4-fpm reload
sudo service php7.4-fpm restart
# Ubuntu 22
sudo service php8.1-fpm reload
sudo service php8.1-fpm restart
sudo systemctl restart apache2
7단계: 조종석!
rewrite
vhost 파일을 활성화하지 않았다고 가정하고 브라우저를 열고 다음을 입력하십시오.
mydomain.localhost/public_html/info.php
8단계: Apache 구성 전환
FPM에서 modphp로 전환해 보겠습니다.
# Ubuntu 20
sudo a2disconf php7.4-fpm
sudo a2enmod php7.4
# Ubuntu 22
sudo a2disconf php8.1-fpm
sudo a2enmod php8.1
######
sudo a2dismod mpm_event
sudo a2dismod fcgid
sudo a2dismod proxy_fcgi
sudo a2enmod mpm_prefork
sudo systemctl restart apache2
modphp에서 FPM으로 전환해 보겠습니다.
# Ubuntu 20
sudo a2enconf php7.4-fpm
sudo a2dismod php7.4
# Ubuntu 22
sudo a2enconf php8.1-fpm
sudo a2dismod php8.1
######
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enmod fcgid
sudo a2enmod proxy_fcgi
# Ubuntu 20
sudo service php7.4-fpm reload
# Ubuntu 22
sudo service php8.1-fpm reload
######
sudo systemctl restart apache2
행운을 빌어요!
참조:
- https://www.linode.com/docs/guides/how-to-install-and-configure-fastcgi-and-php-fpm-on-ubuntu-18-04/
- https://www.linode.com/docs/guides/how-to-install-and-configure-fastcgi-and-php-fpm-on-debian-10/
- https://askubuntu.com/questions/1029564/php-7-2-fastcgi-doesnt-work-on-ubuntu-18-04-server/1458664#1458664