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

php中文网
发布: 2016-06-23 13:43:47
原创
1194人浏览过

这两天需要在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-FCGI

PHP-CGI是PHP自带的FastCGI管理器,启动PHP-CGI可以使用如下命令:

php-cgi -b 127.0.0.1:9000

PHP-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站点

以上配置完成之后,我们就可以写一个简单的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
本文地址:
转载请注明出处,谢谢!


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号