安裝nginx和php-fpm
yum install nginx php-fpm
爲php-fpm增加反向代理
cat >/etc/nginx/conf.d/my_php.conf<<EOF
server {
listen 80;
server_name my_php.lslxdx.com my_php.lslxdx.com;
root /var/www/html/my_php;
location / {
expires -1s;
try_files \$uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
fastcgi_param PATH_INFO \$fastcgi_path_info;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
EOF
創建網站目錄
mkdir -p /var/www/html/my_php
添加測試php文件
cat > /var/www/html/my_php/info.php<<EOF
<?php
phpinfo();
?>
EOF
啓動nginx和php-fpm
nginx
service php-fpm restart
注意
- php-fpm的默認監聽9000端口,且僅接受127.0.0.1地址的訪問, 這些配置在/etc/php-fpm.d/www.conf文件中
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
php-fpm是php的容器, 在使用nginx做反向代理時,應該使用fastcgi_pass,而非proxy_pass,這很關鍵
建議使用unix socket做本地轉發,而非127.0.0.1:9000的方式,此時應該修改2個文件:
# /etc/php-fpm.d/www.conf
listen = /tmp/my_php_fpm.sock
# /etc/nginx/conf.d/my_php.conf
fastcgi_pass unix:/tmp/my_php_fpm.sock;
使用unix socket可能會導致404,原因是php-fpm沒有對
/tmp/my_php_fpm.sock
的rw權限:
ll /tmp/my_php_fpm.sock
srw-rw—- 1 root root 0 7月 11 17:07 /tmp/my_php_fpm.sock
此時需要chmod a+rw /tmp/my_php_fpm.sock(這種方法不推薦,因爲每次啓動php-fpm後,都需要手動chmod),如果想從根本上解決這個問題,應該使用/etc/php-fpm.d/www.conf文件中配置的user
,啓動php-fpm