转自:http://www.cnblogs.com/helinfeng/p/4219051.html

基于最新的Ubuntu 14.04(2014年9月)搭建nginx、php、mysql环境,
以下全部命令行操作:

1,由于需要大量的权限操作,方便起见临时提升权限,使用root账号

sudo su

2,安装apt源管理工具、添加nginx和php的安装源

apt-get install python-software-properties
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php5

3,更新系统软件

apt-get update

4、安装mysql

apt-get install mysql-server

注:在安装过程中,会要求你输入MySQL的root账号的密码。

5、安装php及对mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

6、根据实际需要,选择性的安装php的各类功能模块(具体请自行百度)

apt-get install php-pear php5-dev php5-curl
apt-get install php5-gd php5-intl php5-imagick
apt-get install php5-imap php5-mcrypt php5-memcache
apt-get install php5-ming php5-ps php5-pspell
apt-get install php5-recode php5-snmp php5-sqlite
apt-get install php5-tidy php5-xmlrpc php5-xsl

7、安装nginx

apt-get install nginx

8、配置php

vi /etc/php5/fpm/php.ini
找到:;cgi.fix_pathinfo=1
改为:cgi.fix_pathinfo=0

9、配置nginx

mkdir /www
chmod /www

创建一个 /www 目录设置为 755 权限

vi /etc/nginx/sites-enabled/default

找到:root /usr/share/nginx/html;

改为:root /www;

说明:将网站根目录设置到/www 目录下,注意不要写成 /www/ 这种格式,

这个习惯性的小小洁癖给我带来了意想不到的困扰,后面细说。

找到:index index.html index.htm;
改为:index index.php index.html index.htm;

说明:在默认索引文件中增加 index.php

找到:location ~ .php$ { * } 区块
做如下调整(改动之处于行末有注释):

location ~ .php$ {
try_files $uri =; #增加
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:;
## With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock; #反注释
fastcgi_index index.php; #反注释
include fastcgi_params; #反注释
}

10、解决php-fpm与nginx的小bug

按上述步骤操作后,由于nginx与php-fpm之间的一个小bug,会导致这样的现象:
网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码,
但实际输出给浏览器的页面内容却是空白。

简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析,
相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。

为了解决这个问题,需要改动nginx默认的fastcgi_params配置文件:

vi /etc/nginx/fastcgi_params

在文件的最后增加一行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

关于这行的内容,多说几句,其中有两个参数:

$document_root 即是指网站的根目录,也就是我们在前面刚设置的 root /www;
$fastcgi_script_name 则是指网站上的各个 *.php 文件名(其实是文件的相对路径)
这两个合在一起形成完整的 php file path,比如你的网站有个 /test/script.php 文件,
nginx传递给php-fpm的完整路径就是:/www/test/script.php

我在前面说配置nginx时,写成了 root /www/; 这种写法,对于nginx不成问题,
但它在向php-fpm传递php文件路径时,会形成:/www//test/script.php
这样的文件地址无效(获取不到正确的php文件),于是出现返回空白的问题。
这个问题是如此之隐蔽,以至于我花了大量时间在查看LOG、寻找资料和调整设置上。

11,重启各项服务

service php5-fpm reload
service nginx reload

重新加载各项配置改动。

12、测试

vi /www/index.php

内容:

<?php echo phpinfo(); ?>

请打开你的浏览器访问:http://localhost 若一切正常,将输出php环境信息。

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式

以下内容转自:http://www.sundabao.com/nginx%E4%B8%8B%E6%94%AF%E6%8C%81thinkphp%E7%9A%84pathinfo%E5%92%8Curl-rewrite%E6%A8%A1%E5%BC%8F/

解决方案

我是在sites(vhost)下配置的,在/etc/nginx/sites-available/目录下。当然你也可以直接在/etc/nginx/nginx.conf里配置。
在localhost / {} 配置中加如下代码:

#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if (!-e $request_filename)
{
#地址作为将参数rewrite到index.php上。
rewrite ^/(.*)$ /index.php/$;
#若是子目录则使用下面这句,将subdir改成目录名称即可。
#rewrite ^/subdir/(.*)$ /subdir/index.php/$;
}

完整代码如下:

location / {
root /var/www;
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
if (!-e $request_filename)
{
rewrite ^/PHPParser/(.*)$ /PHPParser/index.php?s=$ last;
break;
}
}

然后在localhost ~ \.php{}配置栏目中添加如下两行:

fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;

完整配置如下

 location ~ \.php$ {
root /var/www;
try_files $uri = ;
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:;
fastcgi_param PATH_INFO $fastcgi_path_info;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

ubuntu 14.04安装nginx+php的更多相关文章

  1. ubuntu 14.04安装nginx+php+mysql

    前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,所以在这里也简单把过程重新整理一遍,争取一帖解决问题. 基于最新的Ubuntu 14.04(2014年9月)搭建nginx.php ...

  2. 在Ubuntu 14.04安装Nginx

    ###介绍 Nginx是世界上最流行的网络服务器中的一种,负责托管网络上一些流量最高的网站.在多数情况下,Nginx比Apache在资源上更加友好,可以作为网络服务器或反向代理服务器. 这篇教程中,我 ...

  3. ubuntu 14.04安装 nginx直播服务平台

    在官网上下载nginx,可以选中直接从ubuntu的源红直接安装:sudo apt-get install nginx.还有就是源码编译安装,我选择的是源码编译安装.具体的步骤如下: ll /usr/ ...

  4. 【精选】Ubuntu 14.04 安装Nginx、php5-fpm、ThinkPHP5.0(已经测试上线)

    sudo apt-get update 安裝Nginx https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04 安裝完成後,Nginx的 ...

  5. 在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器.然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的 ...

  6. [转]在Ubuntu 14.04安装和使用Docker

    在Ubuntu 14.04安装和使用Docker 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs Docker是一个开源软件,它可以把一 ...

  7. Ubuntu 14.04 安装VMware 12

    /*********************************************************************** * Ubuntu 14.04 安装VMware 12 ...

  8. Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flas

    转自Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player Chromium谷歌的开源浏览器将不再支持Netscape浏览器插件API,Adobe ...

  9. ubuntu 14.04 安装搜狗拼音输入法

    原文:ubuntu 14.04 安装搜狗拼音输入法 ubuntu桌面系统下终于有了好用的拼音法-搜狗拼音输入法,欲在ubuntu 14.04下安装搜狗拼音输入法相当的简单. 先到搜狗拼音官网下载对应的 ...

随机推荐

  1. 【iOS】那些年,遇到的小坑

    'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second ...

  2. python-函数的使用

    一.函数的定义 首先,我们来看一个简单的例子来定义函数: def test(): print('hello') 在其中 def  : 关键字,用来告诉解释器,接下来的一段代码是一个函数 test : ...

  3. windows mklink

    https://blog.csdn.net/kilosnow/article/details/7179705 创建目录链接E:\>mklink /d c:\b d:\a为 c:\b <&l ...

  4. 关于前端token

    主要是一些前端使用的流程: 客户端使用用户名密码登录.服务端收到请求,去验证用户名与密码.验证成功后,服务端会签发一个 Token,把这个 Token 发送给客户端.客户端将收到的Token存储起来. ...

  5. Java面向对象知道这些就够了

    面向对象 面向对象是一种思维方式,相对于面向过程而言的. 面向过程在流程中关注动作执行的每一个细节 — 自己动手做 面向对象重点找这个对象,只要找到了对象,那么这个对象所具有的功能就能够被使用 — 找 ...

  6. java中静态代理和动态代理

    一.概述 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象.如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能 ...

  7. DBCacheServer升级

    前段时间完成了该服务的设计的功能,花了很多时间和经历,最终完成了一个版本,已经测试了:现在后期再次在以前的基础上,完成了一些扩展. 1.扩展了内存存储 最初版本只是采用了gauva cache进行存储 ...

  8. css3 笔记

    1.元字符使用: []: 全部可选项 ||:并列 |:多选一 ?: 0个或者一个 *:0个或者多个 {}: 范围 2.CSS3属性选择器: E[attr]:存在attr属性即可: E[attr=val ...

  9. 重装系统后激活win10和office2016

    激活win10: 重装的版本和电脑刚买来是的系统一样的话直接联网,过一段时间就会自动激活.如果不一样可以下载Kms工具激活. 激活office2016: 在开始菜单里双击“我的Office”,登录账号 ...

  10. javaWeb项目加载HTML文件时报错 [No Find /index.html]

    直接上主题: 在web.xml文件中添加如下信息: <display-name>Spring MVC Application</display-name> <servle ...