介绍
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。
一旦快照过程完成,您的服务器将自动重新启动,因此您可以通过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 来将该内核加载到您的服务器上。 要开始使用新内核,您将需要下电服务器。 虽然您可以在控制面板上这样做,这类似于从计算机上卸电,所以建议您通过终端下电:
1sudo poweroff
一旦服务器完全关闭,您可以在控制面板上备份服务器,在 Power面板中选择 Boot。
现在,您可以通过SSH重新连接到您的服务器,并使用uname
来确认新内核正在使用:
1uname -ri
你应该看到一个类似于以下的输出:
13.13.0-39-generic i686
如果内核版本与您在控制面板上加载的内核相匹配,那么您已成功更新内核。
结论
您现在已将 Ubuntu 服务器升级到最新的 LTS 版本,使您能够访问最新的软件更新以及至少到 2019 年为止的安全更新。