nginx 的介绍我就不罗嗦了,先说下系统的安装环境。


0. 安装环境

系统:Ubuntu 14.04

PHP 版本:5.5.9

已有服务器软件:Apache (基本不影响,后文会提到)


1.安装 Nginx

sudo apt-get install nginx
登录后复制
如果你安装了 Apache ,并且此时 Apache 在运行,那么请先修改一下配置文件(没有的同学直接跳过):
#打开配置文件sudo vim /etc/nginx/sites-available/default
登录后复制
登录后复制
登录后复制

然后按以下两处修改(为了不和 Apache 冲突):

server {        #修改这里 我将 80 改为 88	listen 88 default_server;        #还有这里 同样改为你想要的监听端口	listen [::]:88 default_server ipv6only=on;        .....
登录后复制

此时,我们测试 nginx 是否安装成功,没做上述修改的直接在浏览器输入 localhost, 改了的记得加上端口,我的是 localhost:88, 如果出现下面界面则安装成功:


2.安装 php5-fpm

同样使用 apt-get:

sudo apt-get install php5-fpm
登录后复制


3. 修改配置文件以支持 PHP

同样打开配置文件:

#打开配置文件sudo vim /etc/nginx/sites-available/default
登录后复制
登录后复制
登录后复制
首先,在 index 后添加 index.php:
server {	listen 88 default_server;	listen [::]:88 default_server ipv6only=on;	root /usr/share/nginx/html;        #修改这里,在 index 后添加 index.php	index index.php index.html index.htm;	# Make site accessible from http://localhost/	server_name localhost;        ....
登录后复制
然后,可以再去掉如下注释,看清楚是哪里哦:
	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000	#	location ~ \.php$ {	#	fastcgi_split_path_info ^(.+\.php)(/.+)$;	#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini	#	#	# With php5-cgi alone:	#	fastcgi_pass 127.0.0.1:9000;	#	# With php5-fpm:		fastcgi_pass unix:/var/run/php5-fpm.sock;		fastcgi_index index.php;		include fastcgi_params;	}
登录后复制
接着进行重启:
#这一句虽然没必要但可以给你检查配置文件的错误sudo nginx -s reload#重启 php5-fpmsudo /etc/init.d/php5-fpm restart #重启 nginxsudo /etc/init.d/nginx restart 
登录后复制
4. 测试
#修改权限sudo chmod 777 /usr/share/nginx/html/#新建测试文件vim /usr/share/nginx/html/index.php
登录后复制
在文件中输入以下内容就好:
登录后复制
打开浏览器,再次输入地址,localhost 或 localhost:端口 (我是 localhost:88),看到如下界面则成功:



问题:安装后打开网页时出现 “502 Bad Gateway”

有的同学可能按照网上某些教程安装之后,测试时显示 “502 Bad Gateway”,噢,不要紧张,因为教程是错的而已....

不少教程是比较久之前的,所以在修改配置文件时,会告诉你注释得到这三行:

location ~ \.php$ {    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    include fastcgi_params;}
登录后复制
这里的 fastcgi_pass 变量应该是错的,适用于 PHP 5.3 及以下,在 PHP 5.4 之后,php5-fpm 并不是监听 9000 端口,可以看一下它的配置文件:
#php5-fpm 的配置文件sudo vim /etc/php5/fpm/pool.d/www.conf
登录后复制
里面有一段如下,注意最后一行的 listen,原版本是 listen = 127.0.0.1:9000, 但最新的版本是下面的:
; The address on which to accept FastCGI requests.; Valid syntaxes are:;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on;                            a specific port;;   'port'                 - to listen on a TCP socket to all addresses on a;                            specific port;;   '/path/to/unix/socket' - to listen on a unix socket.; Note: This value is mandatory.listen = /var/run/php5-fpm.sock
登录后复制
所以,所以 502 了.....

解决方法:

打开 nginx 配置文件:

#打开配置文件sudo vim /etc/nginx/sites-available/default
登录后复制
登录后复制
登录后复制
然后把 9000 的那句注释了,换成新的 fast_pass 变量:
	location ~ \.php$ {	#	fastcgi_pass 127.0.0.1:9000;		fastcgi_pass unix:/var/run/php5-fpm.sock;		fastcgi_index index.php;		include fastcgi_params;	}
登录后复制
应该是可以正常工作的,不信试试?

09-19 00:16