ubuntu 安装php nginx环境

内容纲要

Nginx是一个非常轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。下面说下Linux系统的安装环境。

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-fpm
sudo /etc/init.d/php5-fpm restart 
#重启 nginx
sudo /etc/init.d/nginx restart

4. 测试

#修改权限  
sudo chmod 777 /usr/share/nginx/html/  
#新建测试文件  
vim /usr/share/nginx/html/index.php 

在文件中输入以下内容就好:

<?php  
  
phpinfo();  
  
?> 

打开浏览器,再次输入地址,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 了.....

如果之前是9000可以尝试改成以上监听 测试可行

解决方法:

打开 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;
 }

应该是可以正常工作的,不信试试?

CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1  http://www.linuxidc.com/Linux/2016-09/134804.htm

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3下Nginx性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3下配置Nginx加载ngx_pagespeed模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4安装配置Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx日志过滤 使用ngx_log_if不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx的500,502,504错误解决方法 http://www.linuxidc.com/Linux/2015-03/115507.htm

CentOS 7 编译安装Nginx1.10.2 脚本启动失败解决思路 http://www.linuxidc.com/Linux/2017-01/139794.htm

Nginx 的详细介绍请点这里
Nginx 的下载地址
请点这里

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140111.htm

发表回复