VPS的新机安装:Apache+PHP VS Nginx+PHP 以及快速安装

王志勇 发表于 2018年10月31日 10:10

我使用VPS已经2年多,最初需要搜索、学习、测试、调试,需要经历7-15天的折腾期,并在本机做关键的调试笔记,最后才能得到快速安装的熟练方法。

VPS与我们用的Windows系统不同的一点是,VPS重装系统是在主机自带的SolusVM面板下,一键重装系统,一键切换各种系统、各种版本。所以,本文标题的“新机安装”,指的就是在SolusVM面板下,一键重装系统之后的新机状态。

经历过很多的折腾期之后,才会发现这些环境的不同。比如:

  1. 我们会发现CentOS 5、Ubuntu 12,都自带Apache。但从CentOS 6、Ubuntu 14默认就不自带Apache。这是为什么呢?因为很可能从那个时期开始,Nginx开始流行,正如现在国内的Wordpress用户,大多数用的是Nginx。所以新版本的系统默认不再自带Apache。
    (附:操作系统、软件,现在大部分都是版本越低,运行反而越快,所以我尽量使用低版本。)
  2. 每一个系统、系统的版本,对第三方软件的支持不是完美的。其实这更取决于第三方软件的开发程度,例如在我的调试中,CentOS 5/6/7+Apache下安装的Let’s Encrypt免费SSL证书,安装完成后的https链接,总是自签名证书页面,提示“此连接不受信任”。
    Ubuntu 12下安装的Let’s Encrypt,安装完成后的https链接,网页无法显示。
    Ubuntu 14+Nginx下安装的Let’s Encrypt,则完美完成,顺利访问https链接。使用的命令为:
    wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto && ./certbot-auto

    成功的关键只在于,运行上述命令之前,必须先给Nginx建立站点,在/etc/nginx/sites-enabled/default文件里建立站点。

    特别是这个certbot-auto文件,大小约61K。这个文件的内容,都是Let’s Encrypt的开发者写好的shell命令、shell程序。Ubuntu 14+Nginx下安装的这个SSL,整个过程都是这个certbot-auto里的shell命令在自动完成的,全程无需对Nginx的配置文件做任何手动改动。安装完成后,会发现/etc/nginx/sites-enabled/default文件会被自动修改,里面自动添加了listen 443 ssl;等内容。

相比较来说,Apache+PHP比Nginx+PHP容易很多。与上面的Let’s Encrypt例子相似,Apache+PHP的官方支持非常好,比如CentOS 5/Ubuntu 12只需下列个命令,就能一步支持PHP,apache的配置文件不需任何改动,php.ini需要做一点改动(后面会讨论):

CentOS 5:
yum -y install php

Ubuntu 12:
apt-get -y install php5

到了CentOS 6、Ubuntu 14,只需手动安装apache,再执行上述的php命令,例如:

CentOS 6:
yum -y install httpd

Ubuntu 14:
apt-get -y install apache2

php.ini的配置文件,
CentOS路径为/etc/php.ini,
Ubuntu路径为/etc/php5/apache2/php.ini,
找到short_open_tag = 这一行,很多默认是Off。这会导致很多短标签的PHP程序为空白、不运行,解决办法是把php.ini的short_open_tag = Off这行,修改为:
short_open_tag=On

(附:从2017年开始,CentOS 5被官方抛弃,需要在网上找一个可用的软件源,替换掉/etc/yum.repos.d/CentOS-Base.repo文件,就可以顺利安装PHP。CentOS系统安装PHP之前,无需运行update;Ubuntu系统需要先运行update,才能安装PHP。)

CentOS和Ubuntu的区别,CentOS对PHP的安装更简便,主要是体现在配置步骤上。目前已知的区别是,CentOS+PHP,直接支持Rewrite;Ubuntu需要在apache2的配置文件里修改一下才能支持Rewrite。
Ubuntu和Debian,基本相似。
有一些CentOS+PHP无法实现的功能,正好Ubuntu+PHP能实现,比如PHP对SQLite3文件读取,CentOS+PHP无法实现,Ubuntu+PHP能实现。这个时候需要使用2台VPS,一台安装CentOS+PHP,一台安装Ubuntu+PHP,VPS之间用php调用wget命令、FTP远程传送文件、用file_get_contents()函数传输大数据、或者用$_GET传输少量数据等方法。

CentOS 6安装Apache+PHP,我前几天用秒表计时全程9秒钟完成,命令是:
yum -y install httpd php

这说明服务器版的CentOS/Ubuntu/Debian系统,对Apache+PHP的支持非常好,在php.ini和apache的配置文件未加任何改动的情况下,都能顺利运行PHP。

Nginx+PHP的安装,就复杂很多。如今我必须使用Nginx+PHP的原因,是因为Let’s Encrypt对Ubuntu+Nginx的支持很好。记得以前在CentOS下安装Nginx+PHP成功,折腾了不少于3天。如今必须在Ubuntu下安装Nginx+PHP,需要重新调试,折腾了1天,尚未完成。

Apache的配置文件只有1个,安装后,默认已经配置好,安装PHP后无需任何改动直接支持PHP;
Nginx的配置文件有4个,安装后,安装PHP后需要做很多的手动配置,调试过程中有各种难以解决的问题:PHP程序为空白,502错误,找不到文件。

2018-11-01 12:07更新:
我的PHP主力环境是CentOS 5或6+Apache+PHP,每次重装系统都是把Apache和PHP的配置文件,都下载到本地,然后用自己编写的一个小工具,自动完成这2个文件的配置。由于这个自动化,且PHP一直运转正常,有些重要的设置我也彻底忘记了,因为不需要我手动去一一修改。但是写本文,则需要把这些设置写出来,否则会遇到错误。比如php.ini的配置文件,CentOS路径为/etc/php.ini,Ubuntu路径为/etc/php5/apache2/php.ini,找到short_open_tag = 这一行,很多默认是Off。这会导致很多PHP程序空白,比如<?$e1=5;?>,而不是<?php $e1=5;?>,这种标签的简略形式,会显示空白。解决的办法是修改为short_open_tag=On

6条评论:
1   自由勇 2018-11-01 09:13
Ubuntu 14下安装Nginx+PHP,计时20秒完成,命令:

apt-get -y install nginx php5-fpm

2   自由勇 2018-11-01 10:27
Ubuntu 14下的update,计时29秒完成,命令:

apt-get update

当然,这些消耗的时间只能作参考,消耗的时间主要受当时服务器的网速的影响。

3   自由勇 2018-11-01 11:42
Trackback来自《VPS的新机安装:3步配置快速完成Ubuntu 14+Nginx+PHP的安装;解决Nginx下PHP空白的问题

我写的程序是以CentOS+Apache+PHP平台为主,因为有些功能无法在CentOS中实现,所以也使用Ubuntu+Nginx+PHP来实现。

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

4   自由勇 2018-11-01 13:30
2018-11-01 12:07更新:
我的PHP主力环境是CentOS 5或6+Apache+PHP,每次重装系统都是把Apache和PHP的配置文件,都下载到本地,然后用自己编写的一个小工具,自动完成这2个文件的配置。由于这个自动化,且PHP一直运转正常,有些重要的设置我也彻底忘记了,因为不需要我手动去一一修改。但是写本文,则需要把这些设置写出来,否则会遇到错误。比如php.ini的配置文件,CentOS路径为/etc/php.ini,Ubuntu路径为/etc/php5/apache2/php.ini,找到short_open_tag = 这一行,很多默认是Off。这会导致很多PHP程序空白,比如<?$e1=5;?>,而不是<?php $e1=5;?>,这种标签的简略形式,会显示空白。解决的办法是修改为short_open_tag=On
5   自由勇 2018-11-03 09:09
Trackback来自《VPS新机安装分享:Let’s Encrypt的https正确安装方法

完成上述这2个条件之前,还有一个重要条件,服务器必须先确保安装Apache、或Nginx。

6   自由勇 2018-11-06 06:41
Trackback来自《VPS的快速安装和PHP调试导航页

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

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

正文:

  记住信息?

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

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

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

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写