ubuntu 14.04 nginx php mysql_ubuntu 14.04安装nginx+php+mysql

前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,

所以在这里也简单把过程重新整理一遍,争取一帖解决问题。

基于最新的Ubuntu14.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

内容:

若返回“502 bad gateway”~~请尝试:

(((

PHP fixed a security bug where o had rw permission to the socket file.

Open /etc/php5/fpm/pool.d/www.conf

Uncomment all permission lines, like:

listen.owner = www-data

listen.group = www-data

listen.mode = 0660

Restart fpm – sudo service php5-fpm restart

Note: if your webserver runs as as user other than www-data, you will need to update the www.conf file accordingly

)))

若一切正常,将输出php环境信息,如:

3,Ubuntu是个好玩具,自06年之后,再度推荐下:

http://www.ubuntu.com

注意:别去用那个集成了一堆垃圾软件的所谓中国版。

limingx.com/ 2014-09-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值