为什么必须用 Ubuntu16?

Joomla之门在之前已专门撰写教程,演示如何在CentOS 7 纯净版(minimal)上面安装 VestaCP 这个免费的 web 环境来实现“傻瓜式部署 LAMP 网站运行环境”。但是由于 CentOS 本身受制于 RedHat 官方的开发进度,所以到目前为止 CentOS 7.2 上面仍然不提供 PHP7 的直接安装。2016年11月25日,随着 VestaCP 0.9.8-17 版本的发布,增加了对 Ubuntu 16.04(Xenial) 的支持 —— 这意味着在 Ubuntu16 上面安装 VestaCP 就可以直接获得 PHP 7.0 环境了!

为什么我这么重视 PHP7 呢?之前 Joomla 之门也写过专门的文章,因为PHP7相对于 PHP5其执行效率(performance)几乎翻了一倍!所以我一直强调:PHP7 是(当前)Joomla 运行的最佳平台

因此,为了能顺利获得 PHP7 环境,我们必须抛弃 CentOS7,换用 Ubuntu 16 作为 VPS 服务器的操作系统。

前面啰嗦这么一大堆,就是要给读者您解释清楚:我们为什么必须用Ubuntu16。

阿里云 ECS 服务器不提供 Ubuntu 16

但是,在给阿里云的 ECS 云服务器安装操作系统时,“公共镜像”里面列出的 Ubuntu 最高版本是14.04,没有 Ubuntu16 的影子!而Ubuntu 14.x 无法实现 PHP7,怎么办?

b_600_0_16777215_00_images_stories_article_tutorial_2017tutorial_aliyun-public-images-ubuntu.png

 

为了解决这个问题,我专门在微博(账号:@joomlagate)上面向 @阿里云 反映了此事,但是 @阿里云客户满意中心 的回复却是这样的:

b_600_0_16777215_00_images_stories_article_tutorial_2017tutorial_alikefu-ubuntu16-not-provided-yet.png

 

 

阿里客服很轻松的一句“目前还不支持ubuntu 16 操作系统哦”就把客户所有的希望浇灭了。

话说别的云服务器提供商(例如:腾讯云)早就给客户提供 Ubuntu16 镜像了,但是我们不能马上换过去,因为换服务器提供商还是很麻烦的一件事。所以,我们只能想办法来自己破解这个难题。

 

突破阿里云限制,手工升级 Ubuntu 14 到 Ubuntu 16

在网上搜索了一下网友的经验,发现有人写了一篇教程,非常短,只有不到200字吧,说阿里云的 ubuntu14 可以升级到 16,执行下面一条命令即可:

 

# sudo do-release-upgrade -d   

 

那篇文章中说执行这个就顺利完成升级了。但是我测试时发现,执行之后立即报错,根本没法顺利执行下去。

后来,经过一番摸索,才发现还有一些小问题需要解决,才能通过上述命令实现从 Ubuntu 14.04 到 Ubuntu 16.04 的升级。所以,今天专门写一篇详细教程来介绍这个过程。

 

第一步:对现有 Joomla 网站做全站备份,网站离线(给访客显示“正在维护”);备份其它可能存在的数据(例如:RoundCube 里面的邮件,等等)。如果你的 ECS 服务器是全新的,还没有搭建网站也没有个人数据,就忽略这一步,从下一步开始。

第二步:在阿里云ECS控制台将云服务器实例“停止”,然后选择“重置系统盘”。接下来进入镜像选择页面(如本文开头截图所示),选择“公共镜像”里面的 Ubuntu 14.04 来安装(需要手工填写root用户密码,确保密码记录下来),整个安装过程非常快,大概不到1分钟就完成了。

第三步:将全新的Ubuntu14服务器“启动”,然后通过 Xshell 或者 Putty 等 SSH 终端,以 root 用户身份连接这个服务器(用户名:root,密码:安装镜像时你所填写的密码)。

实际上,在 SSH 连接建立的时候,屏幕上已有升级提示:

Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-86-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

New release '16.04.1 LTS' available.

Run 'do-release-upgrade' to upgrade to it.

Welcome to aliyun Elastic Compute Service!

 

 

第四步:在 Xshell 命令行界面输入前面提到的命令:

 

# sudo do-release-upgrade -d    

 

执行的结果是:

Checking for a new Ubuntu release

0% [Working]                                                                                                    

0% [Connecting to mirrors.aliyun.com]                                                                           

0% [Connecting to mirrors.aliyun.com (112.124.140.210)]                                                         

0% [Waiting for headers]                                                                                        

Get:1 Upgrade tool signature [836 B]                                                                            

0% [1  0 B/836 B 0%]                                                                                            

99% [Working]                                                                                                   

99% [Waiting for headers]                                                                                       

Get:2 Upgrade tool [1,266 kB]                                                                                   

0% [2  0 B/1,266 kB 0%]                                                                                         

51% [2  648 kB/1,266 kB 51%]                                                                                    

96% [2  1,228 kB/1,266 kB 96%]                                                                                  

100% [Working]                                                                                                  

Fetched 1,267 kB in 0s (0 B/s)                                                                                  

authenticate 'xenial.tar.gz' against 'xenial.tar.gz.gpg' 

extracting 'xenial.tar.gz'

Reading cache

Checking package manager

Continue running under SSH? 

This session appears to be running under ssh. It is not recommended 

to perform a upgrade over ssh currently because in case of failure it 

is harder to recover. 

If you continue, an additional ssh daemon will be started at port 

'1022'. 

Do you want to continue? 

Continue [yN] y

Starting additional sshd 

To make recovery in case of failure easier, an additional sshd will 

be started on port '1022'. If anything goes wrong with the running 

ssh you can still connect to the additional one. 

If you run a firewall, you may need to temporarily open this port. As 

this is potentially dangerous it's not done automatically. You can 

open the port with e.g.: 

'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT' 

To continue please press [ENTER]

Reading package lists... 0%

Reading package lists... 100%

Reading package lists... Done

Building dependency tree... 0%

Building dependency tree... 50%

Building dependency tree        

Reading state information... 0%

Reading state information... Done

   

Building data structures... 0%

   

Building data structures... 1%

...

Building data structures... 99%

Building data structures... Done 

Required depends is not installed 

The required dependency 'dpkg (>= 1.17.5ubuntu5.6)' is not installed. 

 

 

这么多返回结果,大家只看开头和末尾就行了:开头几行显示找到了升级信息(意味着有新版本可升级),接下来在用户输入“y”表示同意之后,进行了那么多的下载、读取、构建工作,就在我们窃喜以为要成功的时候,最后两行显示了报错消息然后该命令终止执行:

 

Required depends is not installed 

The required dependency 'dpkg (>= 1.17.5ubuntu5.6)' is not installed. 

 

 

这里提到了“必须的依赖包”叫做 dpkg 。由于缺少这个依赖包,导致升级无法进行下去。这就是本次升级过程关键所在,解决这个问题就能顺利升级了。

 

第五步:手工安装 dpkg 依赖包

在 Xshell 命令行执行下面的指令:

# cd /tmp   

# wget http://mirrors.aliyuncs.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.6_amd64.d     

这是从阿里云仓库下载 dpkg 安装包(我们下载到了 /tmp 临时目录中)。很快就下载完成了(文件大小约 1.9MB),然后执行安装命令:

 

#  sudo dpkg -i dpkg_1.17.5ubuntu5.6_amd64.deb    

 

安装成功之后,再执行升级命令:

 

# sudo do-release-upgrade -d   

 

在升级过程中,多次需要用户选择“是”或“否”,建议直接按 Enter (回车键),表示“接受默认选择”。整个升级过程大概10分钟,最后屏幕上显示:

 

System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.

If you select 'y' the system will be restarted.

Continue [yN]

 

 

我们按下 y 同意之后,系统重启。然后查看操作系统版本:

 

# lsb_release -a   

执行这个命令返回的结果是:

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 16.04.1 LTS

Release: 16.04

Codename: xenial

 

这就证明我们已经将阿里云 ECS 自带的 Ubuntu 14.04 成功升级到了 16.04 版本。尽管这篇文章看起来很长,但是算上安装 dpkg 的指令及升级系统的指令,是不是只用了3行代码?我们就成功突破了阿里云的限制。

 

接下来,你可以按照 Joomla之门 网站上的教程来安装 VestaCP,从而顺利获得 PHP7 环境。Joomla 在 PHP7 上面运行时网站速度将得到大幅提升(目前 www.joomlagate.com 已经按照此方法运行在 PHP 7.0.8 上面,欢迎体验)。

顺便说一下:Ubuntu 16.04 搭建的服务器比 CentOS 还有一个重大的改进,就是自动使用内存创建了虚拟磁盘(RamDisk),使得服务器速度大幅提升。

  1. 评论 (0)

  2. Add Yours

评论 (0)

这里还没有人发表评论

免费下载最新Joomla!核心中文版

扫描此二维码,立即开始下载 Joomla 3 核心中文版

付费下载汉化版扩展

付费后即可下载独家海量

Joomla! CMS 扩展汉化版

了解付费会员制度

点击这里给我发消息

了解 joomlagate.com 网站的付费会员制度