CentOS中,使用PHP-FPM+Nginx运行PHP网站

来源:互联网 发布:淘宝店经营技巧 编辑:程序博客网 时间:2024/06/05 00:16

安装nginx和php-fpm

yum install nginx php-fpm

为php-fpm增加反向代理

cat >/etc/nginx/conf.d/my_php.conf<<EOFserver {  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<?phpphpinfo();?>EOF

启动nginx和php-fpm

nginx service php-fpm restart

注意

  1. php-fpm的默认监听9000端口,且仅接受127.0.0.1地址的访问, 这些配置在/etc/php-fpm.d/www.conf文件中
listen = 127.0.0.1:9000listen.allowed_clients = 127.0.0.1
  1. php-fpm是php的容器, 在使用nginx做反向代理时,应该使用fastcgi_pass,而非proxy_pass,这很关键

  2. 建议使用unix socket做本地转发,而非127.0.0.1:9000的方式,此时应该修改2个文件:

# /etc/php-fpm.d/www.conflisten = /tmp/my_php_fpm.sock# /etc/nginx/conf.d/my_php.conffastcgi_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

参考:

  1. Nginx + PHP-FPM + MySQL + phpMyAdmin on Ubuntu 12.04
  2. 安装了php-fpm, 就不需要安装php了(不确定)
0 0
原创粉丝点击