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

介绍

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

如果你目前正在使用Ubuntu 12.04,你将至少有安全更新直到2017年10月。如果你想延长支持时间,并获得新的功能和更新,你可以升级你的服务器到最新的LTS版本。

<$>[警告] 警告: 与操作系统的主要版本之间几乎任何升级一样,此过程具有固有故障、数据丢失或软件配置故障的风险。

为了避免这些问题,如果可能的话,我们建议迁移到新的Ubuntu 14.04服务器,而不是在现场升级,您可能需要在升级时查看软件配置的差异,但核心系统可能具有更大的稳定性。

步骤一:备份现有数据

由于您可能正在使用 12.04 服务器来处理敏感任务或数据,因此您非常重要的是备份服务器配置和文件的当前状态. 虽然我们将讨论的过程是执行版本升级的建议方式,但没有任何方法可以保证版本升级不会导致软件或配置问题。

在此步骤中,我们将涵盖多个备份方法. 如果您正在使用DigitalOcean,建议您通过控制面板拍照,除了将文件同步到本地计算机之外。

将文件同步到本地计算机

在这个例子中,我们将使用rsync将我们的服务器的文件复制到我们本地计算机上的备份文件夹。我们将无法备份文件系统中的每个文件夹,因为其中一些是临时存储来运行流程。

如果您在您的服务器上使用基于 SSH 密钥的身份验证,您的 root 用户将没有默认设置的密码,因此您需要指向rsync到您的私钥文件。

1sudo 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美元,基于文件系统中使用的空间量。如果这个选项可供你使用,这是一个好主意,为了备份而使用两种方法,而不是选择一种方法。

首先,关闭您的服务器,以便其当前状态保留在快照中. 虽然可以拍摄运行系统的快照,以确保数据在磁盘上是一致的,最好关闭:

1sudo poweroff

接下来,登录你的DigitalOcean控制面板,选择你要升级的Droplet。 进入 Snapshots面板,填写你的新 snapshot的名称,然后选择 Take Snapshot

Take Snapshot

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

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

步骤二:准备升级

在我们开始发布升级之前,我们需要确保已经安装的软件是最新的。

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

1sudo apt-get update
2sudo apt-get upgrade

我们将使用update-manager-core来管理版本升级. 此包默认安装在大多数 Ubuntu 12.04 安装中,但我们可以通过使用apt-cache来验证它是否安装在服务器上:

1apt-cache policy update-manager-core

如果命令不返回已安装的版本号码(即显示安装:(没有)),则使用apt从Ubuntu的软件存储库下载更新管理器:

1sudo apt-get install update-manager-core

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

第三步:升级至 14.04

我们现在可以使用 root 权限运行Do-release-upgrade命令,这是一个自动化脚本,它将从Ubuntu的存储库中提取最新的发布软件,并将各种升级应用到您的服务器上。

1sudo do-release-upgrade

虽然更新管理器将处理到下一个 LTS 发布过程中涉及的大部分细节,但我们仍然需要做出一些决定,因为提示会出现. 这些提示大多数会要求重写现有配置文件。 默认操作是保持已经存在的配置,这通常是确保稳定性的最佳选择。 但是,在选择一个选项之前,请确保仔细阅读每个提示,并且不要害怕查看相关的包,以确保您做出合适的选择。

在升级过程结束时,您将被要求重新启动您的服务器,并用y确认重新启动。

您的 SSH 会话将被断开连接,因此您需要重新连接以确认升级顺利完成,一旦重新连接,请使用lsb_release来验证您的 Ubuntu 版本号:

1lsb_release -a

你应该看到一个类似于以下的输出:

1No LSB modules are available.
2Distributor ID:	Ubuntu
3Description:	Ubuntu 14.04.1 LTS
4Release:	14.04
5Codename:	trusty

如果发布:显示 14.04,那么您已经成功升级了Ubuntu LTS服务器!

第四步:升级内核

即使您已下载了一种新的内核,以便在更新版本中运行,内核可能不会被用于托管服务器的软件激活,如果您正在使用 DigitalOcean,则托管软件(称为 KVM)会将内核保留在服务器图像之外,并且需要单独更新。

您可以看到您的服务器目前使用的内核版本为uname:

1uname -ri

你的输出将看起来像这样的东西:

13.2.0-24-virtual i686

如果 kernel 版本低于 3.13,这意味着您的服务器尚未使用 Ubuntu 14.04 的 kernel。

在升級過程中,您的伺服器下載了一個新的內核,可在Ubuntu 14.04上使用。

1ls /lib/modules

您将看到一个列表,看起来像如下:

13.13.0-39-generic 3.2.0-24-virtual

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

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

在这里,您将看到可用的内核的下落列表. 选择与您下载的分布、发布和版本号匹配的内核(在上面的示例中,‘3.13.0-39-generic’):

Change Kernel

一旦选择了内核,点击 Change 来将该内核加载到您的服务器上。 要开始使用新内核,您将需要下电服务器。 虽然您可以在控制面板上这样做,这类似于从计算机上卸电,所以建议您通过终端下电:

1sudo poweroff

一旦服务器完全关闭,您可以在控制面板上备份服务器,在 Power面板中选择 Boot

Power Cycle

现在,您可以通过SSH重新连接到您的服务器,并使用uname来确认新内核正在使用:

1uname -ri

你应该看到一个类似于以下的输出:

13.13.0-39-generic i686

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

结论

您现在已将 Ubuntu 服务器升级到最新的 LTS 版本,使您能够访问最新的软件更新以及至少到 2019 年为止的安全更新。

Published At
Categories with 技术
comments powered by Disqus