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

这两天需要在Ubuntu14.04上搭建nginx和php的环境,配置的过程中在fastcgi的问题上花了很多时间,网上的资料大多年久失修,于是决定将整个过程记录下来,分享给大家。

准备:

apt-get update

1. 安装nginx并启动

apt-get install nginx
sudo /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.conf
sudo sysctl -p

两种配置方式修改完之后都需要重启php-fpm和nginx。

sudo service php5-fpm restart
sudo /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
本文地址:http://blog.csdn.net/zhaoxy_thu/article/details/41851389
转载请注明出处,谢谢!

时间: 2024-11-05 13:26:52

Ubuntu上配置nginx+php+fastcgi的流程的相关文章

在ubuntu上配置nginx+php+mysql+phpmyadmin

1.先更新ubuntu系统 更新命令 sudo apt-get update sudo apt-get upgrade 2 添加ubuntu nginx更新源镜像 cd /etc/apt/ sudo cp sources.list sources.list_bak 将如下代码添加到sources.list文件中 deb http://nginx.org/packages/ubuntu/ precise nginx deb-src http://nginx.org/packages/ubuntu/

记录一下在ubuntu 上配置nginx+uwsgi+flask出现的一点问题.

还没有解决 现在的情况很奇怪, 配置uwsgi通过启动脚本启动后,无法正常运行,相同代码在centos上完全没有问题,同样用的是venv的环境, ubuntu,贴上nginx配置和uwsgi配置 uwsgi.ini [uwsgi] socket = 127.0.0.1:8001 wsgi-file=/home/rod/www/app.py callable=app touch-reload=/home/rod/www/ daemonize=/home/rod/uwsgi.log pidfile=

Ubuntu上配置 Apache服务器和Tomcat服务器

                    Ubuntu上配置Apache服务器 1. 安装Apache sudo apt-get install apache2 Apache安装完成后,默认的网站根目录是 /var/www/html, 该目录下有一个index.html文件 (在浏览器中输入:127.0.0.1或localhost可以打开该页面) 2. 配置文件 Apache有两个配置文件: apache2.conf (/etc/apache2/apache2.conf); 和 000-defau

在 Ubuntu 上配置高性能的 HHVM 环境

HHVM全称为 HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用.HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取得了非凡的性能.到目前为止,相对于 PHP + APC (Alternative PHP Cache) ,HHVM 为 FaceBook 在 HTTP 请求的吞吐量上提高了9倍的性能,在内存的占用上,减少了5倍左右的内存占用. 同时,HHVM 也可以与基于 FastCGI 

五步完成在 Ubuntu 上配置高性能的 HHVM 环境

HHVM全称为 HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用.HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取得了非凡的性能.到目前为止,相对于 PHP + APC (Alternative PHP Cache) ,HHVM 为 FaceBook 在 HTTP 请求的吞吐量上提高了9倍的性能,在内存的占用上,减少了5倍左右的内存占用. 同时,HHVM 也可以与基于 FastCGI

在ubuntu上面配置nginx实现反向代理和负载均衡

上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托管(Self-hosting)的应用程序,然后将其部署到了一台Ubuntu的虚拟机上面,通过mono将其顺利地运行了起来,这样也就实现了.NET应用程序在Liunx系统上面的移植. 这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡. 关于ng

在Ubuntu上安装 nginx, MySQL, PHP (LEMP),phpmyadmin和WordPress

转载自 http://www.cnblogs.com/eecs/p/3963869.html 1)更新 Apt-Get 终端命令:sudo apt-get update 2)安装MySql 终端命令: sudo apt-get install mysql-server php5-mysql 3)安装Nginx sudo apt-get install nginx nginx不会自己启动,你需要启动它sudo service nginx start 命令如下所示,如果nginx安装成功了,可以在浏

VPS上配置NGINX+UWSGI+DJANGO+MYSQL

1.安装Django 参见:http://djangobook.py3k.cn/2.0/chapter02/ 2.安装pip $ sudo apt-get install python-pip python-dev build-essential $ sudo pip install --upgrade pip $ sudo pip install --upgrade virtualenv $ sudo apt-get install libmysqld-dev 3.安装MySQL $ apt-

docker上配置nginx负载均衡

采用ubuntu系统,docker安装自行百度 1.安装tomcat docker run -d -p 8088:8080 tomcat docker run -d -p 8089:8080 tomcat 安装两个实例,端口分别为8088,8089 2.安装nginx docker run -p 8080:80 -d docker.io/nginx 安装nginx,端口为8080.在测试的过程中,发现ubuntu上对80端口有限制,不能直接访问,所以映射为8080 3.修改nginx配置 3.1