如何升级Ubuntu的LTS 12.04到Ubuntu 14.04 LTS

Ubuntu有两种版本:标准,这是每六个月释放,并且长期支持(或“LTS”),这是每两年释放。在本指南中,我们将复习如何安全地升级一个Ubuntu 12.04服务器14.04,同时注意保护我们现有的配置。

介绍

Ubuntu有两种类型的版本,标准和长期支持(或“LTS”)。 标准更新每六个月发布一次,并从Ubuntu接收至少九个月的安全更新,而LTS更新每两年发布一次,并至少支持五年。

如果您当前使用的是Ubuntu 12.04,则将至少在2017年10月之前进行安全更新。如果要延长此支持时间并获得新功能和更新,可以将服务器升级到最新的LTS版本。 在本指南中,我们将讨论如何安全地将Ubuntu 12.04服务器升级到14.04,注意保留我们现有的配置。

第一步 - 备份现有数据

由于您可能使用12.04服务器来处理敏感的任务或数据,因此您必须备份服务器配置和文件的当前状态。 虽然我们将要进行的过程是执行发行版升级的建议方式,但是没有办法保证发行版升级不会导致软件或配置问题。 预先备份数据将使升级后出现问题时更容易恢复。

在这一步中,我们将介绍多种备份方法。 如果您使用的是DigitalOcean,建议您通过控制面板创建快照,同时将文件同步到本地计算机。 这样,您可以恢复单个文件或还原整个快照,具体取决于需要还原的方案的性质。

将文件同步到本地计算机

有几种有效的方法来备份Ubuntu服务器上的文件。 在这个例子中,我们将使用rsync到我们的服务器的文件复制到备份文件夹我们的本地计算机上。 我们将无法备份文件系统中的每个文件夹,因为它们中的一些是用于运行进程的临时存储。 幸运的是,我们可以从我们的备份中排除这些文件夹。

您可以使用下面的命令来复制服务器的文件系统,同时注意改变标为红色的服务器凭据。 如果您的服务器上使用基于SSH密钥的认证,你的root用户将不会有一个密码默认设置,所以您需要为指向rsync到您的私钥文件。 这个文件通常是在发现/home/ username /.ssh/id_rsa 因为我们在本地下载服务器文件,所以该命令必须从本地计算机运行,而不是在我们要备份的服务器上运行。

sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} -e 'ssh -i /path/to/private_key' root@SERVER_IP_ADDRESS:/* ~/backup/

aAX标志告诉rsync保存重要的文件属性,如权限,所有权和修改时间。 如果您正在使用Docker或其它虚拟化工具,您应该添加S标志,这样rsync正确处理稀疏文件,如虚拟存储。

注: rsync是基于Unix的操作系统,如Linux和OS X.仅可如果你的本地计算机上运行的是Windows,你可以复制使用SFTP客户端像Filezilla的服务器的文件: 如何使用FileZilla中传输和安全地管理文件您的VPS

如果您需要以后还原服务器文件的部分,你可以用rsync并反转源和目标参数再次,就像这样: sudo rsync -aAXv -e 'ssh -i /path/to/private_key ' ~/backup/ root@ SERVER_IP_ADDRESS :/*

制作DigitalOcean Droplet快照

如果您使用的是DigitalOcean,您可以创建Droplet的快照,如果出现任何问题,您可以轻松地恢复。 从2016年10月开始,快照每月每GB费用为0.05美元,这取决于文件系统中使用的空间量。 如果您可以使用此选项,最好使用两种备份方法以实现冗余,而不是选择其中一种方法。 验证升级完成后没有问题,您可以删除快照。

首先,关闭服务器电源,以便为快照保留其当前状态。 虽然可以对正在运行的系统进行快照,但要确保磁盘上的数据一致,最好关闭电源:

sudo poweroff

接下来,登录到您的DigitalOcean控制面板,选择您要升级的Droplet。 进入快照面板,为您的新的快照填写一个名字,然后选择拍摄快照

拍摄快照

快照过程完成后,服务器将自动重新启动,因此您可以通过SSH重新连接到该服务器,以继续升级。

如果您需要将服务器恢复到该快照以后,您可以在Droplet控制面板的破坏部分从图像重建。

第二步 - 准备升级

在我们开始进行版本升级之前,我们需要确保已安装的软件是最新的。 更新我们安装的软件现在使许多软件包的版本升级少了一个跨越,这将减少错误的可能性。

我们将使用apt地更新我们的本地软件包索引,然后升级当前已安装的软件:

sudo apt-get update
sudo apt-get upgrade

我们将使用update-manager-core来管理发布升级。 这个包是默认安装在Ubuntu的大部分安装12.04,但我们可以验证它是否是通过安装在服务器上apt-cache

apt-cache policy update-manager-core

如果该命令不返回安装的版本号(如果它显示即Installed: (none) ),然后使用apt从Ubuntu的软件库下载更新管理器:

sudo apt-get install update-manager-core

一旦我们确认安装了更新管理器,我们就可以开始升级过程了。

第三步 - 升级到14.04

现在,我们可以运行do-release-upgrade具有root权限的命令。 这是一个自动化脚本,将从Ubuntu的存储库中提取最新的发行版软件,并将各种升级应用到您的服务器。 此升级可能需要几分钟时间,并会不时提示您,因此在升级过程中请密切关注您的SSH会话。

sudo do-release-upgrade

虽然更新管理器将处理涉及到移动到下一个LTS版本的大多数细节,我们仍然需要做出几个决定作为提示出来。 大多数这些提示将询问是否覆盖现有的配置文件。 默认操作是保留已存在的配置,这通常是确保稳定性的最佳选项。 但是,请务必在选择选项之前仔细阅读每个提示,并且不要害怕查找有问题的包以确保您做出适当的选择。

接近升级过程结束时,系统将提示您重新启动服务器。 使用“y”确认以启动重新启动。

您的SSH会话将断开连接,因此您需要重新连接,以确认升级是否按预期进行。 一旦你重新连接,使用lsb_release来验证您的新的Ubuntu版本号:

lsb_release -a

您应该看到类似于以下内容的输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

如果Release:显示14.04,那么你已经成功升级你的Ubuntu LTS服务器!

第四步 - 升级内核

即使您下载了一个新的内核来使用更新的版本,内核可能不会被用于托管服务器的软件激活。 如果您使用的是DigitalOcean,托管软件(称为KVM)会在服务器映像之外维护内核,并需要单独更新。

你可以看到哪些内核当前服务器使用的是带有版本uname

uname -ri

您的输出将如下所示:

3.2.0-24-virtual i686

如果内核版本低于3.13,这意味着您的服务器尚未使用Ubuntu 14.04的内核。 尽管较旧的内核不太可能会出现软件问题,但是您可能会看到新内核的性能提高或有用的新功能。

在升级过程中,您的服务器下载了一个新的内核以供在Ubuntu 14.04上使用。 你可以看到它的内核版本被检查的内容下载/lib/modules目录:

ls /lib/modules

您将看到一个类似以下内容的列表:

3.13.0-39-generic  3.2.0-24-virtual

为了使用新安装的内核,您必须更新Droplet控制面板中的内核选择,然后关闭并启动Droplet。

首先,登录到您的DigitalOcean控制面板,然后选择要升级的服务器。 设置面板中,选择内核选项卡。

在这里,您将看到一个可用内核的下拉列表。 选择所下载(之一的分配,释放和版本号匹配内核3.13.0-39-generic在上面的例子):

更改内核

一旦内核被选中,单击更改为内核加载到你的服务器。 要开始使用新内核,您需要关闭服务器电源。 虽然您可以在控制面板中执行此操作,这类似于从计算机拔下电源,因此建议您通过终端断电:

sudo poweroff

一旦服务器完全关闭,您可以在控制面板中将其启动。 电源面板中,选择启动

电源周期

现在,您可以重新连接通过SSH和使用你的服务器uname以确认新内核中使用:

uname -ri

您应该看到类似于以下内容的输出:

3.13.0-39-generic i686

如果内核版本与您在控制面板上加载的内核匹配,那么您已成功更新了内核。

结论

您现在已将Ubuntu服务器升级到最新的LTS版本,您可以访问最新的软件更新以及安全更新,直到至少2019.如果在升级后遇到程序的兼容性问题,请检查该程序的文档以查看如果有任何需要更改其配置的重大更改。