PHP Laravel NGINX html css Bootstrap Python Symfony Apache Windows linux jquery Django ASP vanilla Slim vagrant docker Homestead MySQL Redis Git SVN ssh Root vim PhpStorm Pycharm sass less PHP Laravel android html css Vue Angular React NGINX html css Javascript

阿里云服务器配置并安装Ubuntu Server 18.04 LTS

原创

原创不易 ~ 转载请注明出处哦

Ubuntu 18.04 LTS出来已经有一段时间了,但是在阿里云公共镜像中,并没有18.04 LTS版本供我们选择,最高只能选择Ubuntu 16.04 LTS

那么,如果我们想使用最新版本的Ubuntu,是不是就没有办法了呢?

答案自然是否定的,我们有不止一种办法可以在阿里云服务器上使用Ubuntu 18.04 LTS

如果你还没有云服务器,那么你需要先购买一个基础云服务器,你可以在以下地址领取阿里云的通用代金券:

【阿里云通用代金券领取】

并请参考我的另外一篇文章:

手把手教你购买-配置-远程连接自己的云服务器


接下来,我们来看一下安装Ubuntu 18.04 LTS的具体办法。

1. 从旧版本升级

第一种办法,从16.04 LTS升级。
在文首的教程中,我们在购买阿里云服务器时,会在公共镜像中选择Ubuntu 16.04 LTS。从Ubuntu 16.04 LTS可以使用命令升级到18.04 LTS

在购买完成后,我们远程连接上我们的云服务器:

$ ssh root@public-ip-address

进入系统后,我们发现系统并没有提示我们有新的Ubuntu版本发行。没关系,我们依然可以进行升级:

$ sudo apt-get install -y update-manager-core

接下来我们需要检查/etc/update-manager/release-upgrades文件中的参数设置是否正确:

$ sudo cat /etc/update-manager/release-upgrades

# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
Prompt=lts

确认Prompt=lts这一行中Prompt被设置为lts(因为我们需要升级为18.04 LTS而不要非LTS版本)。
这里普及一个小知识,Ubuntu系统通常每间隔2个版本为LTS版本,LTS 全称Long Term Support,即长期支持版本,由于16.04之后还有16.1017.0417.10等非LTS版本,因此我们需要在这里设置成lts

完成后,我们就可以运行以下命令进行升级了:

$ sudo do-release-upgrade

注意升级需要连网,并且可能需要花费一点时间,在此过程中如果遇到以下提示,请选择istall the package maintainer's version

ubuntu-upgrade.png

ubuntu-upgrade-2.jpg

命令完成后,我们重新启动以下系统就可以了:

$ sudo systemctl restart

2.导入RAW镜像文件并用该镜像创建实例

接下来我们要说的这个办法将会比直接升级复杂很多,所以在这里给大家先提个醒。

我们把基本的思路列出来:

  1. cloud-images.ubuntu.org上下载最新版本的Ubuntu 18.04 server发布版本镜像文件
  2. 修改镜像参数(例如root用户的密码及ubuntu用户的密码)
  3. 将镜像文件上传至阿里云OSS并导入为阿里云后台自定义镜像
  4. 修改实例系统盘为自定义镜像

可以看到,基本步骤还是比较清晰的,但实际操作起来会有很多坑,我们一步一步来操作。

首先我们先下载Ubuntu 18.04云镜像的最新版本:

http://cloud-images.ubuntu.com/releases/18.04/release/

老样子,先给官网链接,然后我们找到里面名为ubuntu-18.04-server-cloudimg-amd64.imgRAW格式镜像文件,添加到迅雷里下载:

http://cloud-images.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-cloudimg-amd64.img

下载可能非常慢,请耐心等待。

完成后,我们就可以进行镜像参数的修改了。


修改镜像文件链接参数:

下载完成镜像后,我们需要创建我们的用户数据,用来提供给cloud-init

我们创建一个名为seed的文件,并填入以下内容:

#cloud-config
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
ssh_import_id: kirkland

完成后,我们使用seed文件创建一个disk:

# 安装cloud-localds所需dependency
$ sudo apt install cloud-image-utils

# 创建disk
$ cloud-localds seed.img seed

$ ls -lha
-rw-rw-r--  1 eagle eagle 366K Oct 13 09:45 seed.img

接下来我们需要安装kvm:

$ sudo apt-get install qemu-kvm

完成后,我们可以测试是否可以载入img镜像:

$ kvm -cdrom seed.img -hda ubuntu-18.04-server-cloudimg-amd64.img

如果成功,那么我们CTRL + C先关闭程序,然后我们配置一下虚拟机让它速度更快:

$ kvm -m 8192 \
    -smp 4 \
    -cdrom seed.img \
    -device e1000,netdev=user.0 \
    -netdev user,id=user.0,hostfwd=tcp::5555-:22 \
    -drive file=ubuntu-18.04-server-cloudimg-amd64.img,if=virtio,cache=writeback,index=0

命令运行后,我们就可以使用ubuntu用户身份加上刚才我们在seed文件中指定的密码passw0rd登录我们的镜像系统了:

QEMU - kvm - login.png

接下来,我们需要配置root用户密码:

$ sudo su -
$ passwd root

按照提示输入两遍密码即可。

这个步骤完成之后,我们需要做几件事。首先我们选择了阿里云导入镜像,我们来看一下阿里云官方有什么要求:

https://help.aliyun.com/document_detail/48226.html

Linux镜像中的要求我摘录了出来:

  • 导入Linux操作系统的镜像前,请确认文件系统的完整性。
  • 请检查系统盘的剩余空间,确保系统盘没有被写满。
  • 关闭防火墙,并放行TCP 22端口。
  • 安装虚拟化平台XEN或者KVM驱动。
  • 建议 安装 cloud-init,以保证能成功配置hostname、NTP 源和yum源。
  • 需要开启DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。
  • root账号的登录密码必须是8−30个字符,并且同时包含大写或小写字母、数字和特殊符号。其中特殊字符可以是 ( ) ` ~ ! @ # $ % ^ & * - + = | { } [ ] : ; ‘ < > , . ? /
  • 请勿修改关键系统文件,如/sbin、/bin和/lib*等目录。

首先Ubuntu Server云镜像已经安装了cloud-init,所以我们不需要再安装。
但是我们仍然需要手动关闭防火墙:

$ sudo systemctl disable ufw

完成后,我们还需要做一件非常重要的事,就是允许root或我们的管理用户ssh远程登录。

要完成上述操作,我们需要修改/etc/ssh/sshd_config这个文件。打开/etc/ssh/sshd_config,找到

# PermitRootLogin prohibit-password

这行,将注释去掉,改为yes:

PermitRootLogin yes

这样我们就允许root使用密码远程登录。

如果我们要添加其他可远程登录的用户,可以在底下添加一行:

AllowUsers eagle ubuntu

这里我额外授予了eagleubuntu这两个用户远程登录的权限。

然后我们保存。注意因为我们处于镜像中,可以不用重新加载ssh服务,如果我们这步在云服务器上操作,需要再运行

$ sudo systemctl reload ssh

来重新加载配置文件。

这一步完成后,我们就可以退出镜像系统了。


将镜像文件上传至阿里云OSS并导入为阿里云后台自定义镜像

配置好我们的镜像之后,我们需要将其上传至阿里云oss中(阿里云后台导入要求文件必须存在oss里才能导入)。

首先我们去开通一个oss存储包:

https://common-buy.aliyun.com/

oss存储包很便宜,活动价40G半年5块钱,很合算:

https://blog.sbot.io - 阿里云oss购买.png

注意:一定要购买和你云服务器一个地域的oss服务,例如服务器在华东2,你的oss也需要购买华东2。

购买后,我们在oss后台创建一个bucket,然后将我们的镜像上传至oss

接着我们在oss后台中将该镜像的读写权限设置为公共读。然后我们记录下镜像文件的oss外网访问地址。

为了使阿里云服务可以访问我们的镜像文件,我们还需要给予其相应的访问权限。

我们打开阿里云,登录账户后进入控制台,然后将鼠标移到我们头像上,在悬浮的下拉菜单中点击accesskeys一项,在接下的来安全提示中,选择开始使用子用户AccessKey

aliyun accesskey.jpg

接着我们先不创建子用户,找到左侧的角色管理,切换到角色管理页面并点击右上角按钮创建一个新角色。

角色类型我们选择服务角色(受信云服务可以通过扮演该角色来访问您的云资源),下一步类型信息中选择ECS 云服务器
您可以授权ECS来访问您在其他云服务中的云资源),下一步我们给角色起一个名字为ecs

完成后我们在新建角色右侧选择授权,然后在新弹出的窗口左侧列表中选择AliyunOSSReadOnlyAccess
只读访问对象存储服务(OSS)的权限这个权限添加到右侧列表:

aliyun role authorization.jpg

然后我们点击确定。

这一步完成后,我们就可以开始导入镜像了!

首先我们点击控制台左侧列表中快照和镜像一栏里的镜像子菜单,然后在右上方点击导入镜像
aliyun image import.jpg

可以看到,阿里云提示了以下几个步骤:

创建镜像的同时系统默认会创建相关快照,当前阿里云快照已经商业化,保有镜像会产生一定的快照费用。
导入/导出镜像步骤:
首先需要您开通OSS
将制作好的镜像文件上传到与导入镜像相同地域的bucket下。
请确认已经授权ECS官方服务账号可以访问您的OSS的权限[确认地址]
在导入/导出镜像之前,请务必满足自定义镜像要求

我们点击确认地址,然后在授权信息中点击授权。接下来我们就可以填入相应的镜像信息了。

在图中我已经做出了标注,唯一注意的是,系统盘大小必填(虽然没有红星标注),具体根据你云服务器的磁盘大小来决定。

完成后,我们点击确定。如果提示我们导入成功,那么我们就快要大工告成了!我们会看到刚刚导入的镜像出现在列表中,但是我们需要等候一段时间,直到进度镜像上面的进度提示我们100%。


好了,我们已经成功导入镜像,那么最后一步,我们要修改实例系统盘为自定义镜像

首先我们先停止实例。因为要更换系统盘,实例状态必须为停止状态。

接着我们点击更多-磁盘和镜像-更换系统盘
阿里云实例更换系统盘.png

然后在自定义镜像中,选择我们导入的镜像。然后选择保留镜像文件的配置,即不要创建我们自己的远程连接信息。点击确认,然后静待我们的实例重新启动。

aliyun.jpg

当我们的实例重新启动后,我们就可以使用我们在配置镜像时使用的用户进行远程连接了!是不是很激动呢?

但是有一点需要注意,由于阿里云快照已经商业化,当实例完成创建后,我们需要在镜像中将我们导入的镜像强制删除,然后在快照中将系统自动生成的快照删除,否则可能会产生一定的快照费用。

参考资料:

HOWTO: Launch an Ubuntu Cloud Image with KVM from the Command Line
Create a new SSH user on Ubuntu Server


正在加载验证码......
请先完成验证