阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 14.04安装Nginx+PHP+MySQL

147次阅读
没有评论

共计 2471 个字符,预计需要花费 7 分钟才能阅读完成。

基于 Ubuntu 14.04 搭建 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 环境信息,如:

Ubuntu 14.04 安装 Nginx+PHP+MySQL

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL  http://www.linuxidc.com/Linux/2014-05/102351.htm

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-05/131138.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2471字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中