VPS的新机安装:3步配置快速完成Ubuntu 14+Nginx+PHP的安装;解决Nginx下PHP空白的问题

王志勇 发表于 2018年11月01日 11:32

我写的程序是以CentOS+Apache+PHP平台为主,因为有些功能无法在CentOS中实现,所以也使用Ubuntu+Nginx+PHP来实现,比如Let’s Encrypt对Nginx的支持比较好,SQLite3对Ubuntu+PHP的支持比较好。

Nginx+PHP的配置,比Apache+PHP复杂很多,Apache+PHP的快速安装和配置如前文。Nginx+PHP前年我成功安装过,当时也是调试了几天。

这次调试了将近2天,遇到了各种问题,终于完成,所以立即把成功的步骤记录下来。这次调试的系统版本是Ubuntu 14.04 x64 Minimal。其它的Ubuntu版本、或者Debian系统,步骤大体相同。Ubuntu 14的服务器版,x64和x86有一点不同的是,x64版不带Apache;x86自带Apache,需要先卸载Apache。

网上的资料,十分丰富,但是文章的发布者,按照文章亲自试一遍,却很少,并非是他的亲自安装记录。当然,也有一些文章受时效的影响,有一些系统、或第三方软件由于更新,导致以前的安装步骤失效
Ubuntu+Nginx+PHP,会遇到很多问题,比如PHP程序为空白,502错误,找不到文件。根据很多资料的尝试,也没有解决问题。

请严格按照本文的步骤,定能一次成功,配置步骤十分简化,只需3个配置步骤。安装前的准备工作,请确定系统内没有Apache,因为如果Apache不停止、或不卸载会导致Nginx无法启动,用这行shell命令检测:

if which apache2; then echo "Yes"; else echo "No"; fi;

如果显示No,则跳过下列这步,如果显示Yes,则需要用下列这条命令卸载Apache:
service apache2 stop && apt-get remove apache*

建议朋友们尝试、练习调试时,先给主机重装系统为Ubuntu 14.04 x64 Minimal,与本文调试的版本完全相同,熟练后再安装其它的Ubuntu版本。重装系统前要备份站点文件。

命令1,update,耗时约29秒:

apt-get update

命令2,安装nginx和php,耗时约20秒:

apt-get -y install nginx php5-fpm

至此Ubuntu 14+Nginx+PHP已经安装完毕。接下来需要做3个关键配置:

1. 使用Xftp软件,连接VPS。找到/etc/nginx/sites-available路径,下载该目录下的default文件。
用文本工具打开此文件,找到如下这些代码:

#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;
#}

上述的代码删除,修改为:

location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;}

这一步和很多网络文章不同,只有2行。连fastcgi_param这一行都省略了,但是PHP能正常运行,以前我是一行一行删除后测试能否运行,之后仅剩这2行。

2. /etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock这一行修改为:

listen=127.0.0.1:9000

3. /etc/php5/fpm/php.ini
找到short_open_tag这一行,默认的设置为short_open_tag = Off,改为:

short_open_tag=On

之后,重启Nginx、PHP,命令:
service nginx restart && service php5-fpm restart

此时,已经能够顺利运行PHP程序,其它的配置文件无需再修改。
这时,上传一个写好的PHP程序1.php到默认的/usr/share/nginx/html目录,测试一下吧。
1.php写入内容:
<?phpinfo();?>

成功如下截图:

最后,要重点说第3步。前年的时候,这个问题就曾经困扰过我很久,这次再次因为这个很小的问题白白浪费了一天的时间调试,查遍了很多文章,各种方法都试遍了都没有解决。因为我习惯这样写PHP程序:<?$e1=5;?>,而不是<?php $e1=5;?>。这种标签的简略形式很多版本的CentOS、Ubuntu下安装的PHP,PHP语句会不运行、空白。因为很多版本的php.ini的short_open_tag默认是关闭的。

导致这2年我总是把这个很小的问题忽略的原因,是因为每次重装系统,php.ini文件我是用本机编写的小程序,自动修改php.ini里的配置,比如自动去掉;号的注释行、short_open_tag自动修改为On,自动关闭错误日志,这样一个68.2K的php.ini文件,就变成了只有3.84K。由于自动化,我自己竟然忘记了这个重要设置。

2条评论:
1   自由勇 2018-11-06 06:43
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

2   自由勇 2018-11-07 09:04
Trackback来自《VPS新机安装:2步配置快速完成CentOS 6+Nginx+PHP的安装;解决Nginx下PHP空白的问题

由于之前的Ubuntu 14+Nginx+PHP安装成功,本文和之前的方法几乎是类似的,这一篇是从前一篇的Ubuntu的方法里移植过来的,只有少量的不同。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:1980-09-26 (38周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2018年11月
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue