首页 > 网站 > WEB服务 > 正文

Ubuntu上配置nginx+php+fastcgi的流程

2020-03-22 17:53:17
字体:
来源:转载
供稿:网友
  • 这两天需要在Ubuntu14.04上搭建nginx和php的环境,配置的过程中在fastcgi的问题上花了很多时间,网上的资料大多年久失修,于是决定将整个过程记录下来,分享给大家。
    准备:
    apt-get update


    1. 安装nginx并启动
    apt-get install nginxsudo /etc/init.d/nginx start

    2. 安装php及相关
    sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

    3. FastCGI在运行php站点之前需要先了解下FastCGI,FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口,它采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,当HTTP服务器遇到动态请求时,会将请求转发给FastCGI进程,FastCGI进程执行动态脚本后再将结果返回给HTTP服务器,HTTP服务器最后将结果返回给浏览器,这在很大程度上提高了请求的响应速度。
    实现FastCGI有几种方式,PHP-CGI、PHP-FPM、Spawn-FCGIPHP-CGI是PHP自带的FastCGI管理器,启动PHP-CGI可以使用如下命令:php-cgi -b 127.0.0.1:9000PHP-CGI有两个问题,一是变更php.ini后需要重启php-cgi才能生效,二是php-cgi进程崩溃或者被杀死后php就不能运行了。
    PHP-FPM是从PHP 5.3.3之后新加入的CGI管理器,在更改PHP配置之后不需要重启,且由于加入了守护进程,所以即使被杀死之后也能快速重启。
    Spawn-FCGI是一个通用的FastCGI管理器,而不仅仅只针对PHP一种脚本语言。但它在效率、CPU占用等方面都不如PHP-FPM。
    4. PHP-FPM既然PHP-FPM的方式最好,那么我们现在就来配置一下。由于PHP-FPM是一个独立的进程,所以需要与Nginx进行通信。目前有两种通信方式,tcp和socket。两种方式的区别和配置方式可以参见这两篇文章:nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置Php-fpm TcpSocket vs UnixSocket

    在这里简要说一下配置方式,两种方式都主要修改nginx的配置文件(/etc/nginx/sites-available/default)和fpm的配置文件(/etc/php5/fpm/pool.d/www.conf)。
    TCP配置方式需要将nginx配置文件中相应的反向代理的fastcgi_pass参数改为127.0.0.1:9000,将fpm配置文件中的listen参数修改为127.0.0.1:9000。
    Socket配置方式需要将nginx配置文件中相应的反向代理的fastcgi_pass参数改为unix:/dev/shm/fpm-cgi.sock,将fpm配置文件中的listen参数修改为/dev/shm/fpm-cgi.sock,如果考虑到高并发可以将listen.backlog参数改为-1,内存积压无限大。另外,还可以提高内核级别的并发连接数,修改/etc/sysctl.conf:
    sudo echo 'net.core.somaxconn = 2048' >> /etc/sysctl.confsudo sysctl -p

    两种配置方式修改完之后都需要重启php-fpm和nginx。
    sudo service php5-fpm restartsudo /etc/init.d/nginx reload

    5. 运行php站点以上配置完成之后,我们就可以写一个简单的html' target='_blank'>php页面来测试一下。创建一个网站目录:
    sudo mkdir /var/www/

    在nginx配置文件中修改root目录为 root /var/www;添加一个测试页面:
    sudo vi /var/www/test.php

    加入以下代码:
    <?php phpinfo();?>

    此时在浏览器输入地址http://localhost/test.php,就可以看到php的信息了。
    常用命令:1. 检查nginx启动出错
    sudo nginx -c /etc/nginx/nginx.conf -t


    如果大家觉得对自己有帮助的话,还希望能帮顶一下,谢谢:)
    个人博客:http://blog.csdn.net/zhaoxy2850
    本文地址:http://blog.csdn.net/zhaoxy_thu/article/details/41851389
    转载请注明出处,谢谢!
    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表