Ubuntu 20.04.6 LTS Server 安装与生产环境配置全指南
1. 为什么今天还要写Ubuntu 20.04.6 Server的安装教程?
如果你点开这篇文章,心里可能在想:Ubuntu 24.04都发布了,为什么还要折腾一个2020年发布的LTS版本?这问题问得好。作为一个在运维和开发一线摸爬滚打多年的老手,我告诉你,Ubuntu 20.04.6 LTS(Focal Fossa)在今天依然是一个“黄金标准”。它不仅是大量企业生产环境、云服务器镜像的默认选择,更是无数成熟软件栈、教程文档和自动化脚本的“基准线”。它的内核、库版本和软件生态达到了一个非常稳定的平衡点,社区支持成熟,踩过的坑基本都有现成的解决方案。对于搭建一个需要长期稳定运行的服务,比如数据库服务器、Web应用后端、家庭NAS或者开发测试环境,选择20.04.6往往比追新更明智,它能让你把精力集中在业务上,而不是没完没了地解决新版本带来的兼容性问题。
今天这篇教程,我不打算给你一个干巴巴的、只告诉你“下一步、下一步”的安装指南。我要带你做的,是一个带有深度思考和实战预配置的完整安装过程。我们会从镜像下载、虚拟机或实体机环境准备开始,一步步走到系统安装完成,并且我会穿插讲解每一个关键选择背后的逻辑,比如分区方案怎么定、软件包怎么选、网络怎么配,以及安装完成后那些“必须做”的初始化设置。我的目标是,你跟着走完这一遍,得到的不仅是一个能开机的系统,更是一个安全、高效、随时可以投入使用的服务器基础平台。无论你是刚接触Linux的新手,还是想为团队标准化部署流程的老鸟,这篇超过5000字的详实记录,都值得你花时间读完。
2. 战前准备:镜像、环境与启动盘制作
动手安装之前,充分的准备能避免你过程中手忙脚乱。这一步的核心是获取正确的安装介质和搭建合适的安装环境。
2.1 获取官方Ubuntu 20.04.6 LTS Server镜像
首先,我们必须从官方渠道下载镜像。直接搜索“ubuntu 20.04.6 download”可能会找到一堆第三方站点,但为了安全性和完整性,强烈建议只从Ubuntu官方或国内可靠的镜像站获取。
访问官方发布页面:打开浏览器,访问
releases.ubuntu.com/20.04/。这个页面列出了20.04所有子版本的发布信息。我们需要的是ubuntu-20.04.6-live-server-amd64.iso这个文件。live-server意味着它是一个可以直接从ISO启动并安装的服务器版本,不包含图形桌面环境,更轻量、更安全。amd64就是我们常说的x86_64架构,适用于绝大多数Intel和AMD的台式机、笔记本和服务器。选择合适的下载源:官方页面会提供全球多个镜像站的链接。如果你在国内,下载速度可能较慢。一个更高效的方法是使用国内的镜像源,例如:
- 阿里云镜像:
mirrors.aliyun.com/ubuntu-releases/20.04/ - 清华大学镜像:
mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ - 华为云镜像:
repo.huaweicloud.com/ubuntu-releases/20.04/
在这些镜像站的目录里,找到并下载
ubuntu-20.04.6-live-server-amd64.iso文件。文件大小约1.1GB。下载完成后,务必校验文件的SHA256哈希值,与官方页面或镜像站提供的校验和进行比对,确保文件在下载过程中没有损坏。在Linux或Mac下,可以使用sha256sum ubuntu-20.04.6-live-server-amd64.iso命令;在Windows下,可以使用一些第三方工具如CertUtil(命令:certutil -hashfile ubuntu-20.04.6-live-server-amd64.iso SHA256)。- 阿里云镜像:
2.2 选择与配置安装环境:虚拟机 vs 物理机
接下来,你需要决定在哪里安装这个系统。对于学习和测试,虚拟机是绝佳的选择;对于生产环境或作为主力系统,则需要在物理机上安装。
虚拟机方案(推荐给初学者和测试者):
- 软件选择:VMware Workstation Player(免费)、VirtualBox(免费、开源)或 Parallels Desktop(macOS,付费)都是优秀的选择。VMware在性能和兼容性上通常更胜一筹。
- 关键配置:创建新虚拟机时,选择“稍后安装操作系统”,类型选“Linux”,版本选“Ubuntu 64位”。内存建议至少分配2GB(2048 MB),这是Subiquity安装器流畅运行的最低要求,如果主机内存充裕,分配4GB体验更好。处理器核心数分配1-2个即可。硬盘空间是关键,我建议新建虚拟磁盘,大小至少25GB,并选择“将虚拟磁盘拆分成多个文件”,这样便于迁移。最重要的是,在虚拟机设置中,将下载好的ISO文件指定为CD/DVD启动盘。
物理机方案(用于服务器或主力机):
- 制作启动U盘:你需要一个容量至少8GB的U盘。制作工具推荐Rufus(Windows)或balenaEtcher(跨平台)。以Rufus为例,插入U盘后打开软件,设备选择你的U盘,“引导类型选择”处点击“选择”,找到你下载的ISO文件。分区类型通常选“MBR”或“GPT”,取决于你的目标机器是传统BIOS还是UEFI启动(现代电脑基本都是UEFI,选GPT)。其他选项保持默认,点击“开始”即可。这个过程会清空U盘所有数据,请提前备份。
- 调整BIOS/UEFI设置:将制作好的U盘插入目标电脑,开机进入BIOS/UEFI设置界面(通常是按F2、F12、Del等键)。找到启动顺序(Boot Order)设置,将U盘设为第一启动项。同时,如果安装目标磁盘是NVMe SSD,可能需要将SATA模式从RAID或Intel RST改为AHCI,否则安装程序可能无法识别硬盘。保存设置并重启。
注意:在物理服务器上安装时,如果服务器配备了硬件RAID卡,你需要先在RA卡的管理界面(通常在开机时按Ctrl+R等组合键进入)配置好虚拟磁盘(VD),然后安装程序才能看到一块完整的“硬盘”。
无论选择哪种方式,确保你的设备已连接网络(网线或Wi-Fi,虚拟机通常使用NAT或桥接模式),安装过程中需要从网络下载更新和额外的软件包。
3. 步步为营:Subiquity安装器全流程详解
启动到安装介质后,你会看到一个紫色的GRUB引导菜单,直接回车进入安装流程。接下来的界面是Ubuntu Server自20.04以来使用的全新安装器——Subiquity。它基于Curtin,是一个文本和简单UI混合的安装程序,比老旧的Debian安装器更现代,但依然保持了简洁高效。
3.1 语言、键盘与网络配置
选择语言:第一个界面是选择安装语言。这里的选择决定了安装过程中提示信息的语言,但不会锁定系统语言。系统语言可以在安装后任意更改。为了方便,我们可以选择“English”。直接按回车。
键盘布局:接下来配置键盘。通常选择“English (US)”即可。安装器会让你按几个键来检测布局,一般直接选默认的“Done”。
网络连接:这是关键一步。安装器会自动探测网络接口。如果你用的是网线(虚拟机桥接或物理机直连),它应该能通过DHCP自动获取IP地址,界面上会显示如
ens33或enp0s3这样的网卡名及其获取到的IP。请务必记下这个IP地址,在安装完成后,你需要用它通过SSH登录服务器。- 如果没能自动获取IP(例如在纯内网或无DHCP环境),你需要选择对应的网卡,进入“Edit IPv4”进行手动配置,填写IP、网关、DNS等信息。
- 如果使用Wi-Fi,你需要选择“Choose WiFi Network”,然后选择你的Wi-Fi SSID并输入密码。
- 我的经验:在虚拟机中,我强烈推荐使用“桥接模式”而不是NAT。桥接模式会让虚拟机从你的家庭路由器获取一个独立的IP,和你的物理机在同一网段,这样后续SSH访问、服务端口测试都会方便得多,模拟了真实的服务器环境。
3.2 镜像源、存储与分区规划
配置镜像源(Proxy和Mirror Address):为了加速安装过程中软件包的下载,我们可以配置代理或更换镜像源地址。
- Proxy:如果你身处公司内网需要通过代理上网,在这里填写你的HTTP代理地址,例如
http://proxy.company.com:8080。 - Mirror address:这是国内用户必须修改的一项!默认的
archive.ubuntu.com在国内访问可能很慢。将其替换为国内镜像源地址,能极大提升安装速度。例如,输入mirrors.aliyun.com/ubuntu或mirrors.tuna.tsinghua.edu.cn/ubuntu。输入后按Tab键,安装器会自动补全为完整的镜像URL。
- Proxy:如果你身处公司内网需要通过代理上网,在这里填写你的HTTP代理地址,例如
存储配置——分区方案设计:这是整个安装的核心,也是新手最容易困惑的地方。Ubuntu Server安装器提供了几种方案:
- Use an entire disk:擦除整块磁盘并自动配置LVM(逻辑卷管理)。这是最简单推荐的方案,适合新手和大多数单磁盘服务器场景。安装器会自动创建
/boot、/(根分区)和swap分区,并使用LVM管理根分区,便于日后在线扩展。 - Use an entire disk and set up LVM:与上一个类似,但允许你自定义LVM的卷组和逻辑卷参数,更灵活。
- Custom storage layout:手动分区。只有在你明确知道需要特定分区结构(如分离
/home、/var、/tmp)时才选择此项。例如,数据库服务器可能希望将数据目录挂载到独立分区或磁盘。
对于绝大多数情况,我建议选择第一个“Use an entire disk”。它会为你做出合理且安全的默认分区。如果你选择了手动分区,一个经典的最小化服务器分区方案可以参考如下(假设磁盘为50GB):
- EFI系统分区(仅UEFI启动需要):
/boot/efi, FAT32格式, 512MB - 1GB。 - Boot分区:
/boot, ext4格式, 1GB - 2GB。存放内核和引导文件。 - 根分区:
/, ext4格式, 剩余大部分空间(例如40GB)。存放系统文件和应用程序。 - 交换分区:
swap, 大小通常为物理内存的1-2倍(如果内存>=8GB,4-8GB即可)。在物理内存不足时提供虚拟内存空间。
重要提示:在虚拟机或云服务器上,通常不需要单独的
/home分区。对于服务器,数据和配置文件更常存放在/srv、/var或挂载的独立数据盘上。手动分区时,务必为根分区/预留充足空间(建议不少于20GB)。- Use an entire disk:擦除整块磁盘并自动配置LVM(逻辑卷管理)。这是最简单推荐的方案,适合新手和大多数单磁盘服务器场景。安装器会自动创建
3.3 身份设定、SSH与软件包选择
Profile setup:
- Your name: 你的全名,如
Zhang San。这只是一个显示名。 - Your server‘s name: 主机名。起一个有意义的名字,比如
web-server-01、home-nas。它将在终端提示符和网络中显示。 - Pick a username:这是你登录系统使用的用户名,非常重要。避免使用
root、admin等常见名。建议使用英文小写字母和数字,如opsadmin、deploy。 - Choose a password/Confirm your password: 为上述用户设置一个强密码。服务器密码建议长度12位以上,包含大小写字母、数字和特殊符号。
- Your name: 你的全名,如
SSH Setup:强烈建议在此处安装OpenSSH server。勾选“Install OpenSSH server”选项。这样安装完成后,你就可以立即通过SSH客户端(如PuTTY、Termius、系统终端)远程连接服务器,无需坐在物理机前操作。
- 你还可以选择“Import SSH identity”,从GitHub或Launchpad导入你的公钥,实现免密码登录。这对于自动化部署至关重要。如果没有,可以安装后再手动配置。
Featured Server Snaps:这里列出了一些流行的服务器软件包,如Docker、MicroK8s、LXD等。我建议在首次安装时,这里一个都不要选。原因是:
- 这些Snap包可能会引入额外的复杂性和依赖。
- 我们完全可以在系统安装完成后,根据实际需要,使用更传统的
apt包管理器或官方脚本安装这些软件,这样对版本和环境有更精细的控制。 - 保持系统初始状态的纯净,有利于后续的问题排查和环境复现。
完成以上所有配置后,仔细检查一遍摘要信息。确认无误后,选择“Done”,然后勇敢地按下“Continue”开始安装。安装过程会格式化磁盘、复制系统文件、安装基础软件包和内核。根据你的网络速度和磁盘性能,这个过程可能需要10到30分钟。
4. 安装后的必修课:基础配置与安全加固
当安装器提示“Reboot Now”时,取出安装介质(U盘或在虚拟机设置中移除ISO镜像),然后重启系统。首次登录后,别急着部署应用,有几件关乎系统安全和可用性的大事必须立刻做。
4.1 首次登录、更新系统与基础工具安装
使用你创建的用户名和密码登录系统。首先,我们需要更新软件包列表并升级所有已安装的包到最新版本,这可以修复许多已知的安全漏洞。
# 切换到root权限,后续操作可能需要 sudo -i # 更新软件包源列表 apt update # 升级所有可升级的软件包(这是一个关键的安全操作) apt upgrade -y升级完成后,安装一些极其常用的系统管理工具,它们会让你后续的运维工作轻松百倍。
# 安装常用工具包 apt install -y vim curl wget net-tools htop tree unzip git ufw software-properties-common- vim: 比默认的nano更强大的文本编辑器。
- curl/wget: 命令行下载工具。
- net-tools: 包含
ifconfig、netstat等传统网络工具(虽然ip命令是未来,但很多脚本仍依赖它们)。 - htop: 交互式进程查看器,比
top更直观。 - ufw: 简单的防火墙配置工具。
- software-properties-common: 用于添加PPA软件源的依赖包。
4.2 配置静态IP地址(非DHCP环境必备)
如果你的服务器需要固定的IP地址(生产环境几乎都需要),就需要配置静态IP。在Ubuntu 20.04中,网络配置已从旧的/etc/network/interfaces迁移到了Netplan。
查看当前的Netplan配置文件,通常位于
/etc/netplan/目录下,文件名类似00-installer-config.yaml或50-cloud-init.yaml。ls /etc/netplan/使用vim编辑这个文件,例如:
vim /etc/netplan/00-installer-config.yaml将其内容修改为类似以下格式(请根据你的网络环境调整):
network: version: 2 ethernets: ens33: # 你的网卡名称,使用 `ip a` 命令查看 dhcp4: no # 关闭DHCP addresses: [192.168.1.100/24] # 静态IP和子网掩码 gateway4: 192.168.1.1 # 网关地址 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS服务器注意:YAML文件对缩进非常敏感,必须使用空格,不能使用Tab键。
addresses后面的/24是CIDR表示法,等同于子网掩码255.255.255.0。应用新的网络配置:
netplan apply测试网络连通性:
ping -c 4 8.8.8.8 ping -c 4 baidu.com
4.3 防火墙配置与SSH安全强化
一个暴露在网络中的服务器,防火墙是第一道防线。我们使用UFW(Uncomplicated Firewall)来简化iptables的操作。
设置默认策略:默认拒绝所有传入连接,允许所有传出连接。
ufw default deny incoming ufw default allow outgoing放行SSH端口:必须放行,否则你将无法远程连接。
ufw allow ssh # 或者指定端口,如果你修改了SSH默认端口(例如2222) # ufw allow 2222/tcp启用UFW:
ufw enable系统会提示操作可能中断现有SSH连接,输入
y确认。你可以用ufw status verbose查看规则。
SSH安全强化:仅开放防火墙还不够,还需要加固SSH服务本身。
编辑SSH配置文件:
vim /etc/ssh/sshd_config修改以下几项关键配置(找到对应行,取消注释并修改):
Port 22 # 可以考虑改为一个非标准端口,如 2222,减少被自动化脚本扫描的风险 PermitRootLogin no # 禁止root用户直接SSH登录,必须通过普通用户sudo PasswordAuthentication yes # 初期可以保持yes,方便密码登录。配置好密钥后,建议改为no PubkeyAuthentication yes # 启用公钥认证实操心得:修改
Port后,务必先在UFW中放行新端口,再重启SSH服务,否则你可能会把自己关在门外。一个稳妥的顺序是:1) 修改sshd_config; 2)ufw allow <新端口>/tcp; 3)systemctl restart sshd; 4) 用新端口测试连接成功; 5) 关闭旧端口ufw delete allow ssh。重启SSH服务使配置生效:
systemctl restart sshd
4.4 配置SSH密钥登录与禁用密码登录(最高推荐)
使用密钥对登录比密码安全得多,且便于自动化。在你的本地电脑(不是服务器)上操作:
生成密钥对(如果还没有):
# 在本地终端执行 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 一路回车,使用默认路径和空密码(或设置一个强密码)将公钥上传到服务器:
# 在本地终端执行,将 `your_username` 和 `server_ip` 替换为实际值 ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@server_ip如果修改了SSH端口,需要加上
-p参数,如ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 your_username@server_ip。测试密钥登录:
ssh -p 22 your_username@server_ip # 或使用你的新端口如果无需输入密码直接登录成功,说明密钥配置正确。
(可选但强烈推荐)禁用密码登录:在确认密钥登录无误后,回到服务器,编辑
/etc/ssh/sshd_config,将PasswordAuthentication设置为no,然后重启sshd服务。从此,只有持有私钥的用户才能登录,暴力破解密码攻击对你完全无效。
5. 生产环境预备:性能调优与监控基线
系统安全和基础网络搞定后,我们需要为它承担实际工作负载做好准备。这包括优化性能、建立监控和配置必要的系统服务。
5.1 交换空间(Swap)优化
安装程序创建的交换分区(swap)可能大小不合适。我们可以用交换文件来动态调整,这比调整分区更灵活。
检查现有交换空间:
swapon --show free -h如果内存较小(如小于2GB),或者你计划运行内存消耗大的应用(如数据库、Java应用),可以考虑增加交换空间。创建一个4GB的交换文件:
# 分配空间 fallocate -l 4G /swapfile # 设置正确的权限 chmod 600 /swapfile # 格式化为交换空间 mkswap /swapfile # 启用它 swapon /swapfile让系统启动时自动挂载此交换文件。编辑
/etc/fstab文件,在末尾添加一行:/swapfile none swap sw 0 0调整交换性(Swappiness)。这个值(0-100)决定了系统有多积极使用交换分区。对于服务器,可以适当降低以减少不必要的磁盘IO。临时修改:
sysctl vm.swappiness=10永久修改,编辑
/etc/sysctl.conf,添加或修改:vm.swappiness=10然后执行
sysctl -p使配置生效。
5.2 配置时区、语言与字符集
确保服务器使用正确的时间和字符集,避免日志时间混乱和乱码问题。
设置时区:
# 查看当前时区 timedatectl # 列出所有时区 timedatectl list-timezones | grep Shanghai # 设置时区为上海(亚洲/上海) sudo timedatectl set-timezone Asia/Shanghai # 再次确认 timedatectl安装中文语言包并配置本地化(如果系统需要显示中文):
apt install -y language-pack-zh-hans编辑
/etc/default/locale,设置:LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_ALL="zh_CN.UTF-8"然后执行
locale-gen zh_CN.UTF-8并重启系统或重新登录使其生效。对于纯服务器环境,保持LANG=”C.UTF-8″或”en_US.UTF-8″可能更简单,能避免一些软件的语言环境警告。
5.3 配置系统日志与基础监控
一个健康的系统需要可观察性。除了系统自带的journalctl,安装一些轻量级监控工具很有帮助。
安装并配置
logrotate:确保日志文件不会无限膨胀。Ubuntu默认已安装并配置了logrotate,你可以查看/etc/logrotate.conf和/etc/logrotate.d/下的配置。安装
netdata或cockpit(可选但推荐):- Netdata: 一个实时的、分布式的性能监控工具,安装极其简单,提供华丽的Web仪表盘。
安装后,通过# 一键安装脚本 bash <(curl -Ss https://my-netdata.io/kickstart.sh)http://你的服务器IP:19999访问。 - Cockpit: Red Hat发起的服务器管理图形界面,Ubuntu也支持。它提供了系统状态、日志、存储、网络和容器管理的Web界面。
安装后,通过apt install -y cockpit systemctl enable --now cockpit.sockethttps://你的服务器IP:9090访问。
这些工具能让你快速了解服务器的CPU、内存、磁盘、网络负载情况,在问题出现初期就能发现端倪。
- Netdata: 一个实时的、分布式的性能监控工具,安装极其简单,提供华丽的Web仪表盘。
5.4 定期安全更新与自动化维护
最后,配置自动化任务,让系统自我维护。
配置无人值守升级(Unattended Upgrades):自动安装安全更新,这是保持服务器安全最省心的方式。
apt install -y unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades在配置向导中,选择“Yes”启用自动更新。配置文件在
/etc/apt/apt.conf.d/50unattended-upgrades,你可以精细控制更新哪些包。设置定时任务(Cron)进行日常维护:例如,每周清理一次旧的日志和临时文件。编辑root用户的crontab:
crontab -e添加一行,例如每周日凌晨3点清理
/tmp下超过7天的文件:0 3 * * 0 find /tmp -type f -atime +7 -delete
走到这一步,你的Ubuntu 20.04.6 LTS Server已经从一个刚安装好的“毛坯房”,变成了一个网络通畅、安全加固、监控就位、可维护性高的“精装基础平台”。你可以在这个坚实的基础上,放心地去安装Docker、部署Web服务、搭建数据库,或是进行任何你想要的开发和生产工作。记住,好的开始是成功的一半,在系统初始化阶段多花些时间做好这些基础工作,未来它会用稳定和高效来回馈你。
