Ubuntu 20.04.6 LTS Server 安装与生产环境配置全指南
1. 为什么今天还要写Ubuntu 20.04.6 Server的安装教程如果你点开这篇文章心里可能在想Ubuntu 24.04都发布了为什么还要折腾一个2020年发布的LTS版本这问题问得好。作为一个在运维和开发一线摸爬滚打多年的老手我告诉你Ubuntu 20.04.6 LTSFocal 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 DesktopmacOS付费都是优秀的选择。VMware在性能和兼容性上通常更胜一筹。关键配置创建新虚拟机时选择“稍后安装操作系统”类型选“Linux”版本选“Ubuntu 64位”。内存建议至少分配2GB2048 MB这是Subiquity安装器流畅运行的最低要求如果主机内存充裕分配4GB体验更好。处理器核心数分配1-2个即可。硬盘空间是关键我建议新建虚拟磁盘大小至少25GB并选择“将虚拟磁盘拆分成多个文件”这样便于迁移。最重要的是在虚拟机设置中将下载好的ISO文件指定为CD/DVD启动盘。物理机方案用于服务器或主力机制作启动U盘你需要一个容量至少8GB的U盘。制作工具推荐RufusWindows或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卡的管理界面通常在开机时按CtrlR等组合键进入配置好虚拟磁盘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。存储配置——分区方案设计这是整个安装的核心也是新手最容易困惑的地方。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”。它会为你做出合理且安全的默认分区。如果你选择了手动分区一个经典的最小化服务器分区方案可以参考如下假设磁盘为50GBEFI系统分区仅UEFI启动需要/boot/efi FAT32格式 512MB - 1GB。Boot分区/boot ext4格式 1GB - 2GB。存放内核和引导文件。根分区/ ext4格式 剩余大部分空间例如40GB。存放系统文件和应用程序。交换分区swap 大小通常为物理内存的1-2倍如果内存8GB4-8GB即可。在物理内存不足时提供虚拟内存空间。重要提示在虚拟机或云服务器上通常不需要单独的/home分区。对于服务器数据和配置文件更常存放在/srv、/var或挂载的独立数据盘上。手动分区时务必为根分区/预留充足空间建议不少于20GB。3.3 身份设定、SSH与软件包选择Profile setupYour 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位以上包含大小写字母、数字和特殊符号。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-commonvim 比默认的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.com4.3 防火墙配置与SSH安全强化一个暴露在网络中的服务器防火墙是第一道防线。我们使用UFWUncomplicated Firewall来简化iptables的操作。设置默认策略默认拒绝所有传入连接允许所有传出连接。ufw default deny incoming ufw default allow outgoing放行SSH端口必须放行否则你将无法远程连接。ufw allow ssh # 或者指定端口如果你修改了SSH默认端口例如2222 # ufw allow 2222/tcp启用UFWufw 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 sshd4.4 配置SSH密钥登录与禁用密码登录最高推荐使用密钥对登录比密码安全得多且便于自动化。在你的本地电脑不是服务器上操作生成密钥对如果还没有# 在本地终端执行 ssh-keygen -t rsa -b 4096 -C your_emailexample.com # 一路回车使用默认路径和空密码或设置一个强密码将公钥上传到服务器# 在本地终端执行将 your_username 和 server_ip 替换为实际值 ssh-copy-id -i ~/.ssh/id_rsa.pub your_usernameserver_ip如果修改了SSH端口需要加上-p参数如ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 your_usernameserver_ip。测试密钥登录ssh -p 22 your_usernameserver_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.swappiness10永久修改编辑/etc/sysctl.conf添加或修改vm.swappiness10然后执行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设置LANGzh_CN.UTF-8 LANGUAGEzh_CN:zh LC_ALLzh_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.socket安装后通过https://你的服务器IP:9090访问。这些工具能让你快速了解服务器的CPU、内存、磁盘、网络负载情况在问题出现初期就能发现端倪。5.4 定期安全更新与自动化维护最后配置自动化任务让系统自我维护。配置无人值守升级Unattended Upgrades自动安装安全更新这是保持服务器安全最省心的方式。apt install -y unattended-upgrades dpkg-reconfigure --prioritylow unattended-upgrades在配置向导中选择“Yes”启用自动更新。配置文件在/etc/apt/apt.conf.d/50unattended-upgrades你可以精细控制更新哪些包。设置定时任务Cron进行日常维护例如每周清理一次旧的日志和临时文件。编辑root用户的crontabcrontab -e添加一行例如每周日凌晨3点清理/tmp下超过7天的文件0 3 * * 0 find /tmp -type f -atime 7 -delete走到这一步你的Ubuntu 20.04.6 LTS Server已经从一个刚安装好的“毛坯房”变成了一个网络通畅、安全加固、监控就位、可维护性高的“精装基础平台”。你可以在这个坚实的基础上放心地去安装Docker、部署Web服务、搭建数据库或是进行任何你想要的开发和生产工作。记住好的开始是成功的一半在系统初始化阶段多花些时间做好这些基础工作未来它会用稳定和高效来回馈你。