在阿里云轻量应用云服务器上安装 Ubuntu Server 20.04 LTS

今天 Ubuntu 20.04 LTS 发布了,因此在一个闲置的云服务器上尝尝鲜,顺便换掉让人不爽的阿里云魔改版系统。

准备工作:记录网络参数

备份好数据,记录 IP 地址、子网掩码、网关地址 。现在阿里云已经启用了内网 DHCP,如果没有特殊清空应该可以自动配置 IP 地址,但是为了防止内网 DHCP 失灵(毕竟阿里云没有官方文档说明内网 DHCP 的存在),因此还是进行一下备份。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.*.* 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.192.0 U 0 0 0 eth0

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.*.* netmask 255.255.192.0 broadcast 172.17.63.255
ether 00:16:3e:00:f6:b6 txqueuelen 1000 (Ethernet)
RX packets 1999830 bytes 2280360649 (2.2 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 864438 bytes 193348366 (193.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 129 bytes 11610 (11.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 129 bytes 11610 (11.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

下载 Netboot 镜像

首先下载 Ubuntu 镜像,由于阿里云轻量用用云服务器不支持自定义镜像,所以使用 Netboot 镜像的方式安装比较方便。

1
2
3
mkdir /boot/ubuntu-focal && cd /boot/ubuntu-focal
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/linux
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/initrd.gz

下载完成后,需要将 NetBoot 文件加入 GRUB 引导。编辑 /etc/grub.d/40_custom 文件,在文件末尾加入:

1
2
3
4
5
menuentry "Ubuntu 20.04 LTS Server Netboot Installer" {
set root="(hd0,msdos1)"
linux /boot/ubuntu-focal/linux
initrd /boot/ubuntu-focal/initrd.gz
}

由于阿里云默认的系统在引导时加载了 PNG 背景图片,在 VNC 连接时会花屏,还需要禁用 GRUB 的图形模式。编辑 /etc/default/grub 文件,修改或添加以下配置:

1
2
3
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=30
GRUB_TERMINAL=console

完成后,**不要忘记执行 update-grub**。接着就可以重启服务器了。

1
update-grub && reboot

安装流程

启动服务器,使用阿里云控制面板的“救援连接”功能打开 VNC。GRUB 会自动停止在选择操作系统页面。选择 Ubuntu 20.04 LTS Server Netboot Installer 启动即可。接下来的安装流程就和正常安装 Ubuntu 一样了。

选择语言,虽然现在中文的 bug 比较少了,但是由于中文系统的报错信息也是中文,导致在搜索解决方案的时候存在一些不便,因此将语言设置为英文。

选择语言

选择区域,这个区域也决定了系统的时区,因此我们选择东八区的香港。

选择区域和时区

选择键盘布局,不要使用自动探测,手动选择美式键盘。

选择键盘布局

顺便吐槽一下 Ubuntu 的键盘布局探测功能,步骤又多又麻烦,还不如直接选择键盘布局来的快。

一路 Continue,出现配置 hostname 页面(如下),表示可以成功配置网络。如果不能配置网络,会要求你手动输入 IP 地址等信息,输入之前记录的 IP 地址、子网掩码和网关地址即可。

配置主机名

随后配置 APT 软件源,阿里云有内网镜像,不占用出站流量,因此使用阿里云内网的镜像即可。

首先选择手动配置镜像:

配置 APT 镜像源

然后输入镜像地址。阿里云内网镜像的地址是:mirrors.cloud.aliyuncs.com,不用加 https,不用加后缀。

配置 APT 镜像源

配置用户名和密码。注意第一步让你输入的是用户全名(可以包含空格等字符)而不是用户名。第二步才是输入 UNIX 用户名。

配置 APT 镜像源

分区,直接使用整个分区即可。

硬盘分区

这一步是选择软件自动更新,服务器还是稳妥一点,不要自动更新了。

配置 APT 镜像源

安装软件包,因为是服务器就只选 OpenSSH Server 和 Basic Ubuntu Server 了。

注意:一定要选上 OpenSSH Server,否则出了问题只能回滚重装了!

硬盘分区

安装 GRUB,选是即可。

硬盘分区

设置 UTC,依然选是即可。

硬盘分区

安装完成,重启服务器。

硬盘分区

安装后配置

安装后启动,VNC 会变成紫屏,卡住:

紫屏卡住

此时使用左上角的“发送远程命令”切换到 TTY 即可:

切换 TTY

可以看到 TTY 变成金色的了(哇,金色传说):

金色字体的 TTY

和之前一样,安装新系统后依然要禁用 GRUB 的图形模式,防止 GRUB 花屏。编辑 /etc/default/grub 文件(新系统默认不是 root 了,不要忘记加 sudo!),修改这一行:

1
GRUB_TERMINAL=console

然后重启服务器:

1
sudo reboot

接下来要配置 ssh,首先去阿里云控制台的防火墙,把 22 端口放通。由于换了服务器,要清除本地 known_hosts 里的相关记录,我这里就直接删除整个 known_hosts 了。

1
2
3
4
5
6
rem 在 Windows 命令行中操作
del %userprofile%\.ssh\known_hosts
ssh <user>@<ip_addr>
mkdir .ssh
exit
scp %userprofile%\.ssh\id_rsa.pub <user>@<ip_addr>:~/.ssh/authorized_keys

使用 ssh 进入服务器,生成一个随机高位端口:

1
2
$ echo $((RANDOM % (65535 - 30000) + 30000))
62630

上面这个端口不是服务器实际使用的端口,不用试了,连不通的。编辑 /etc/ssh/sshd_config,修改一下行:

1
2
3
4
Port 62630 # 就是之前随机 roll 那个端口
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

重启 OpenSSH Server:

1
2
sudo service sshd restart
exit

然后启用 UFW:

1
2
sudo ufw allow 62630
sudo ufw enable

体验新版软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal

$ openssl version
OpenSSL 1.1.1f 31 Mar 2020

$ python3 --version
Python 3.8.2

$ php -v
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

$ nginx -v
nginx version: nginx/1.17.10 (Ubuntu)

$ mysql --version
mysql Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))

金色字体的 TTY