ubuntu 14.04安装nginx+php

转自: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 755 /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 =404; #增加
    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; #反注释
}

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/$1;
        #若是子目录则使用下面这句,将subdir改成目录名称即可。
        #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
}

完整代码如下:

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=$1 last;
            break;
    }
}

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

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

完整配置如下

 location ~ \.php$ {
    root /var/www;
    try_files $uri = 404;
    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;
    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;
}
时间: 2024-11-05 19:32:34

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

ubuntu 14.04安装nginx+php+mysql

前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,所以在这里也简单把过程重新整理一遍,争取一帖解决问题. 基于最新的Ubuntu 14.04(2014年9月)搭建nginx.php.mysql环境,以下全部命令行操作: 1,由于需要大量的权限操作,方便起见临时提升权限,使用root账号sudo su 2,安装apt源管理工具.添加nginx和php的安装源apt-get install python-software-propertiesadd-apt-repository

在Ubuntu 14.04安装Nginx

###介绍 Nginx是世界上最流行的网络服务器中的一种,负责托管网络上一些流量最高的网站.在多数情况下,Nginx比Apache在资源上更加友好,可以作为网络服务器或反向代理服务器. 这篇教程中,我们将讨论怎样在Ubuntu 14.04服务器上安装Nginx. ###预备工作 在开始这篇教程前,你的服务器上应该已经有了普通非根用户,并配置了`sudo`权限.也可以在我们的[Ubuntu 14.04初始服务器设置指南](https://www.digitalocean.com/community

[操作系统][Ubuntu 14.04] 安装Flash 安装QQ2013

[操作系统][Ubuntu 14.04] 安装Flash 安装QQ2013_郑少群个人网 一.安装Flash 打开Firefox浏览器弹出的Flash安装提醒早都烦死了,那么Ubuntu14.04怎么安装Flash呢? 1.32位系统命令行安装: 第一步 更新库: ? sudo apt-get update ? ? 第二步 安装Flash用下面的代码: sudo apt-get install flashplugin-installer ? 这样就将Flash和依赖装好了. 2.32位系统可视化

ubuntu 14.04安装 DevStack的脚本配置文件——localrc

本文ubuntu 14.04安装 DevStack的脚本配置文件——localrc,本文件名已经逐渐被取代,但是出于后向兼容性,使用该文件仍然可以为stack.sh安装脚本指定安装DevStack时的配置信息. 以下是localrc文件的一些常用配置及解释 # Misc DATABASE_PASSWORD=123456 ADMIN_PASSWORD=123456 SERVICE_PASSWORD=123456 SERVICE_TOKEN=123456 RABBIT_PASSWORD=123456

dell optiplex ubuntu 14.04 安装 NVIDIA 显卡驱动

公司配置的 dell optiplex使用核显带起双屏幕,玩dota2无法特效全开.so,在京东上买了一块750Ti.安装驱动的时候需要切换到ubuntu的全命令行模式,关掉桌面系统才能安装.这时候这个坑出现了,要想安装驱动,就必须进入全命令行模式,要想进入命令行模式必须有驱动.反复尝试后,发现只能用DP口带单屏幕才能成功.在这里特别记录下.嘎嘎dell optiplex ubuntu 14.04 安装 NVIDIA 显卡驱动,布布扣,bubuko.com

Ubuntu 14.04安装redmine

公司要安装项目管理系统,采用redmine,新来的我就来做这个小小的任务了,中途也出过几次问题,搭建redmine,他的依赖包很多,所以我建议用apt装,下面开始吧. 首先升级一下源 apt-get update apt-get upgrade 更新完成 PS:(如果图省事,可以选择LAMP套件安装,此处指mysql和apache此处不用套件安装了 ) 安装apache2和apache2的一个模块 apt-get install apache2 libapache2-mod-passenger

ubuntu 14.04 安装 vmware 10 X64 后无法启动解决方法

ubuntu 14.04 安装成功后,平时的工作什么的都够用了, 最近需要做一个测试,测试环境还必须是windows的.所以就准备整个虚拟机来,kvm 跟 vmware 考虑再三,选择了 vmware .vmware 10的安装方法,就不做说明了.度娘或谷哥还是有蛮多方法.我这里所写的是,vmware 安装后,启动时报错. 报错图片如下: 解决方法: 当然方法有很多种,我也试过几种方法,有使用patch 的,但是我用这种方法的时候,出现错误了,继续找方法的时候,有网友有告诉过这样一种方法,就是手

Ubuntu 14.04 安装 SteamOS 会话

如何在Ubuntu 14.04上安装steamos会话,以使用户的SteamOS 大图片模式直接从lightdm GTK迎宾开始进入. SteamOS是一个开源的基于Debian Wheezy分支的.为游戏的优化的操作系统.不像Debian 7,它使用的是xcompmgr图形合成器.SteamOS由维尔福公司设计开发,使用于Steam Machine游戏终端机上.在2013年12月13日首次发布. 在这篇文章中我将告诉你如何在Ubuntu 14.04上安装steamos会话,以使用户的Steam

ubuntu 14.04安装压缩包版的mysql

既有环境: 1)下载MySQL Community Server 5.6.17 压缩版(mysql-5.6.17-linux-glibc2.5-x86_64.tar.gz) 2)安装目录: /opt/library/mysql-5.6.17-linux-glibc2.5-x86_64 3)软链接为/opt/library/mysql,指向同目录下的mysql-5.6.17-linux-glibc2.5-x86_64 1. 创建mysql专有的用户和组 ? 1 2 $ sudo groupadd