安装和配置 Ubuntu 组件:完整指南
Ubuntu 仍然是世界上最受欢迎的 Linux 发行版之一——这是有充分理由的。它的灵活性、强大的软件包生态系统和强大的社区支持使其成为开发人员、系统管理员和企业的理想平台。无论您是在设置本地开发机器还是在云中配置 VPS Hosting 环境,了解如何正确安装和配置 Ubuntu 组件是一项基础技能,在基础设施的各个级别都能带来回报。
本综合指南将引导您完成每个关键步骤:更新系统、安装基本软件包、配置防火墙、设置数据库服务器、优化性能等等。完成本指南后,您的 Ubuntu 系统将得到加固、高效,并准备好处理生产工作负载。
目录
- 在安装任何东西之前更新 Ubuntu
- 安装基本组件
- 配置软件存储库
- 使用 UFW 安装和配置防火墙
- 安装和配置数据库服务器
- 安装其他工具和实用程序
- 自定义 Ubuntu 系统设置
- 设置自动备份
- 系统监控和性能优化
- 生产就绪 Ubuntu 系统的最终提示
1. 在安装任何东西之前更新 Ubuntu
在接触任何软件包之前,始终将您的系统完全更新。这确保您使用的是最新的安全补丁、错误修复和软件兼容性改进。
sudo apt update && sudo apt upgrade -y这样做的作用:
apt update— 从所有配置的存储库刷新本地软件包索引。apt upgrade -y— 将所有已安装的软件包升级到其最新可用版本,自动确认提示。
> 专业提示:在新配置的服务器上——特别是如果您在 Dedicated Server 上运行 Ubuntu——这一步是不可协商的。过时的软件包是最常见的安全漏洞向量之一。
升级后,如果内核已更新,请重新启动:
sudo reboot2. 安装基本组件
Ubuntu 的强大之处在于其可扩展性。以下小节涵盖了任何严肃 Ubuntu 部署中最关键的软件包。
2.1. 构建基础
build-essential 软件包安装了从源代码编译软件所需的精选工具集,包括 GCC(GNU 编译器集合)、Make 和标准 C/C++ 库。
sudo apt install build-essential -y验证安装:
gcc --version
make --version此软件包是许多其他工具和语言运行时(例如 Python 扩展、Ruby gems、Node.js 本机模块)的先决条件。
2.2. Git — 版本控制系统
Git 是源代码管理、协作开发和部署管道的行业标准工具。
sudo apt install git -y安装后,配置您的全局身份:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"验证您的配置:
git config --list可选但推荐:将您的默认分支名称设置为 main 以符合现代惯例:
git config --global init.defaultBranch main2.3. 网络工具:curl 和 wget
这些实用程序对于从命令行下载文件、测试 API 和调试网络连接是不可或缺的。
sudo apt install curl wget -y快速使用示例:
# Download a file with wget
wget https://example.com/file.tar.gz
# Test an API endpoint with curl
curl -I https://example.com其他有用的网络诊断工具:
sudo apt install net-tools dnsutils traceroute -ynet-tools— 提供ifconfig、netstat和相关命令。dnsutils— 包括dig和nslookup用于 DNS 故障排除。traceroute— 追踪到远程主机的网络路径。
2.4. 文本编辑器
每个系统管理员都需要一个可靠的命令行文本编辑器。Ubuntu 根据您的偏好和工作流程支持多个选项。
Nano(初学者友好):
sudo apt install nano -yVim(强大、高度可配置):
sudo apt install vim -yEmacs(功能丰富、可扩展):
sudo apt install emacs -y> 建议:对于服务器环境,Vim 是最普遍可用和功能强大的选项。投入时间学习其核心命令——这将显著加快您的工作流程。
2.5. Web 服务器安装
Web 服务器对于托管网站、Web 应用程序和 API 至关重要。Ubuntu 上的两个主要选择是 Nginx 和 Apache。
#### 安装 Nginx(推荐用于高性能)
sudo apt install nginx -y启动并启用 Nginx 以在启动时自动启动:
sudo systemctl start nginx
sudo systemctl enable nginx验证它正在运行:
sudo systemctl status nginx在重新加载之前测试您的配置:
sudo nginx -t#### 安装 Apache
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2Nginx 与 Apache——您应该选择哪一个?
| 功能 | Nginx | Apache |
|---|---|---|
| 高负载下的性能 | 优秀(事件驱动) | 良好(进程/线程基础) |
| 静态文件服务 | 非常快 | 快 |
| .htaccess 支持 | 否 | 是 |
| 模块生态系统 | 不断增长 | 广泛 |
| 内存使用 | 较低 | 较高 |
对于大多数现代部署——特别是在云 VPS Hosting 环境中——Nginx 是首选,因为它在处理并发连接方面表现优异,内存占用较少。
3. 配置软件存储库
Ubuntu 的默认安装仅启用 Main 和 Restricted 存储库。要访问更广泛的软件范围,您应该启用 Universe 和 Multiverse 存储库。
方法 1:使用 GUI(桌面 Ubuntu)
- 从应用菜单打开 Software & Updates。
- 在 Ubuntu Software 选项卡下,勾选 Universe 和 Multiverse 的复选框。
- 单击 Close,并在提示时重新加载软件包列表。
方法 2:使用命令行(推荐用于服务器)
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt update存储库概览:
| 存储库 | 内容 |
|---|---|
| Main | 官方支持的开源软件 |
| Restricted | 具有官方支持的专有驱动程序 |
| Universe | 社区维护的开源软件 |
| Multiverse | 具有许可限制的软件 |
添加第三方 PPA
对于官方存储库中不可用的软件,您可以添加个人软件包存档 (PPA):
sudo add-apt-repository ppa:repository-name/ppa
sudo apt update
sudo apt install package-name> 安全说明:仅从受信任的知名来源添加 PPA。第三方存储库可能会将未经审查的软件引入您的系统。
4. 使用 UFW 安装和配置防火墙
Ubuntu 附带 UFW(Uncomplicated Firewall),这是 iptables 的用户友好前端。正确配置防火墙是任何面向互联网的服务器最重要的安全步骤之一。
启用 UFW
sudo ufw enable允许基本服务
在启用防火墙之前始终允许 SSH,以避免将自己锁定在外:
sudo ufw allow ssh或明确指定端口:
sudo ufw allow 22/tcp允许 Web 服务器的 HTTP 和 HTTPS 流量:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp允许特定应用程序配置文件:
sudo ufw allow 'Nginx Full'
# or
sudo ufw allow 'Apache Full'检查防火墙状态
sudo ufw status verbose其他 UFW 命令
# Deny a specific port
sudo ufw deny 8080/tcp
# Delete a rule
sudo ufw delete allow 8080/tcp
# Reset all rules
sudo ufw reset
# Disable UFW
sudo ufw disable> 最佳实践:遵循最小权限原则——仅打开您的服务明确需要的端口。每个不必要的开放端口都是潜在的攻击面。
5. 安装和配置数据库服务器
数据库是几乎每个 Web 应用程序的骨干。Ubuntu 通过其软件包存储库支持所有主要的关系型和 NoSQL 数据库系统。
5.1. 安装 MySQL
MySQL 是世界上部署最广泛的开源关系数据库。
sudo apt install mysql-server -y安装后,运行安全加固脚本:
sudo mysql_secure_installation此交互式脚本将:
- 设置 root 密码(或验证密码强度)
- 删除匿名用户
- 禁止远程 root 登录
- 删除测试数据库
- 重新加载权限表
启动并启用 MySQL:
sudo systemctl start mysql
sudo systemctl enable mysql验证服务正在运行:
sudo systemctl status mysql连接到 MySQL shell:
sudo mysql -u root -p5.2. 安装 MariaDB(MySQL 兼容替代品)
MariaDB 是 MySQL 的社区开发分支,具有增强的性能和其他功能:
sudo apt install mariadb-server mariadb-client -y
sudo mysql_secure_installation
sudo systemctl enable --now mariadb5.3. 安装 PostgreSQL
PostgreSQL 是一个强大的企业级对象关系数据库系统,以其标准合规性和可扩展性而闻名。
sudo apt install postgresql postgresql-contrib -y启动并启用 PostgreSQL:
sudo systemctl start postgresql
sudo systemctl enable postgresql切换到 PostgreSQL 管理用户并打开 shell:
sudo -i -u postgres
psql创建新数据库和用户:
CREATE DATABASE myapp_db;
CREATE USER myapp_user WITH ENCRYPTED PASSWORD 'strong_password';
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;
q6. 安装其他工具和实用程序
除了基础知识外,以下工具可以显著提高您的生产力、系统可见性和部署能力。
Docker — 容器运行时
Docker 使您能够将应用程序及其依赖项打包到便携式容器中,确保开发、暂存和生产环境之间的一致性。
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker将您的用户添加到 Docker 组以运行命令而无需 sudo:
sudo usermod -aG docker $USER
newgrp docker验证 Docker 是否正常工作:
docker run hello-world对于生产部署,也考虑安装 Docker Compose:
sudo apt install docker-compose -yhtop — 交互式进程查看器
htop 提供系统进程、CPU 使用率、内存消耗等的实时彩色视图——远优于标准 top 命令。
sudo apt install htop -y
htop关键 htop 快捷键:
F6— 按列排序进程F9— 杀死进程F10— 退出/— 搜索进程
Tmux — 终端多路复用器
Tmux 允许您在单个 SSH 连接中创建、管理和持久化多个终端会话——对于远程服务器上的长时间运行任务非常宝贵。
sudo apt install tmux -y基本 Tmux 命令:
# Start a new session
tmux new -s mysession
# Detach from session (keeps it running)
Ctrl+B, then D
# List all sessions
tmux ls
# Reattach to a session
tmux attach -t mysession其他推荐的实用程序
# fail2ban — Intrusion prevention system
sudo apt install fail2ban -y
# unzip — Extract ZIP archives
sudo apt install unzip -y
# tree — Display directory structure
sudo apt install tree -y
# ncdu — Disk usage analyzer
sudo apt install ncdu -y
# jq — JSON processor for the command line
sudo apt install jq -y7. 自定义 Ubuntu 系统设置
7.1. 启用自动安全更新
保持系统补丁是至关重要的——特别是在可公开访问的服务器上。Ubuntu 的 unattended-upgrades 软件包自动化了这个过程。
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades要自定义行为,请编辑配置文件:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades要审查的关键设置:
Unattended-Upgrade::Allowed-Origins— 定义哪些存储库触发自动更新。Unattended-Upgrade::Automatic-Reboot— 设置为true以在内核更新后允许自动重启。Unattended-Upgrade::Mail— 为更新活动配置电子邮件通知。
7.2. 管理启动应用程序(桌面 Ubuntu)
控制哪些应用程序在登录时启动有助于减少启动时间并节省系统资源。
- 在 GNOME 应用菜单中搜索 Startup Applications。
- 查看已启用的启动程序列表。
- 关闭您在登录时不需要的任何应用程序。
- 使用 Add 按钮注册新的启动脚本或应用程序。
对于服务器环境,使用 systemd 管理服务:
# Disable a service from starting at boot
sudo systemctl disable service-name
# Enable a service at boot
sudo systemctl enable service-name
# List all enabled services
sudo systemctl list-unit-files --state=enabled7.3. 配置系统时区
正确的时区配置对于日志准确性、计划任务和 SSL 证书验证至关重要。
# Check current timezone
timedatectl
# List available timezones
timedatectl list-timezones
# Set timezone
sudo timedatectl set-timezone Europe/London7.4. 为安全远程访问配置 SSH
如果您管理远程服务器,加固 SSH 配置至关重要。
sudo nano /etc/ssh/sshd_config推荐的安全设置:
# Disable root login
PermitRootLogin no
# Disable password authentication (use SSH keys instead)
PasswordAuthentication no
# Change default SSH port (optional but reduces automated scanning)
Port 2222
# Limit login attempts
MaxAuthTries 3进行更改后,重新启动 SSH:
sudo systemctl restart sshd> 重要:在关闭当前连接之前,始终在单独的终端会话中测试新的 SSH 配置,以避免被锁定。
8. 设置自动备份
数据丢失是灾难性的。无论您是在运行个人项目还是业务关键应用程序,自动备份都是不可协商的。
使用 Ubuntu 的内置备份工具(桌面)
- 在应用菜单中搜索 Backups(Déjà Dup)。
- 配置您的备份目标:外部驱动器、网络共享或云存储。
- 在 Scheduling 选项卡下设置备份计划。
- 启用 Automatic Backup 并配置保留期。
使用 rsync 进行命令行备份(推荐用于服务器)
rsync 是 Linux 服务器上高效、增量文件备份的黄金标准。
# Basic local backup
rsync -avz /source/directory/ /backup/destination/
# Remote backup over SSH
rsync -avz -e ssh /local/directory/ user@remote-server:/backup/path/
# Exclude specific directories
rsync -avz --exclude='*.log' --exclude='tmp/' /source/ /destination/使用 Cron 自动化备份
crontab -e在凌晨 2:00 添加每日备份作业:
0 2 * * * rsync -avz /var/www/ /backup/www/ >> /var/log/backup.log 2>&1备份最佳实践
- 遵循 3-2-1 规则:3 份数据副本、2 种不同的媒体类型、1 份异地副本。
- 定期通过执行恢复演练来测试您的备份。
- 加密敏感备份数据。
- 监控备份日志以查找故障。
9. 系统监控和性能优化
内置监控工具
GNOME 系统监视器(桌面):
提供 CPU、内存、磁盘 I/O 和网络使用情况的图形概览。从应用菜单启动它或通过以下方式启动:
gnome-system-monitorhtop(命令行):
htopvmstat — 虚拟内存统计:
vmstat 1 10iostat — CPU 和 I/O 统计:
sudo apt install sysstat -y
iostat -x 1 5free — 内存使用情况:
free -hdf — 磁盘空间使用情况:
df -hnetstat / ss — 网络连接:
ss -tuln9.1. 使用 Prometheus 和 Node Exporter 设置系统监控
对于生产环境,适当的监控堆栈提供历史数据、警报和仪表板。
# Install Node Exporter for system metrics
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo systemctl enable --now node_exporter10. 优化系统性能
10.1. 禁用不必要的启动服务
识别并禁用您不需要的服务:
# List all running services
sudo systemctl list-units --type=service --state=running
# Disable a specific service
sudo systemctl disable --now bluetooth.service
sudo systemctl disable --now cups.service10.2. 配置和启用交换空间
交换空间在 RAM 耗尽时充当溢出内存。在 RAM 有限的服务器上,正确配置的交换可以防止内存不足崩溃。
# Create a 2GB swap file
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Make swap permanent across reboots
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab调整 swappiness(较低的值 = 较少激进的交换):
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf10.3. 删除未使用的软件包并清理软件包缓存
随着时间的推移,孤立的软件包和缓存的下载会消耗大量磁盘空间:
# Remove automatically installed packages no longer needed
sudo apt autoremove -y
# Remove cached package files
sudo apt autoclean
# Full clean of the package cache
sudo apt clean10.4. 使用 Deadline 调度程序优化磁盘 I/O
对于 SSD,none(noop)调度程序通常提供更好的性能:
# Check current scheduler
cat /sys/block/sda/queue/scheduler
# Set scheduler temporarily
echo none | sudo tee /sys/block/sda/queue/scheduler10.5. 启用和配置 Fail2Ban
Fail2Ban 监控日志文件并自动禁止
