跳转到内容

Debian/Ubuntu 系统优化设置完全指南 | 性能调优与安全配置教程

Debian Ubuntu System Optimization

为什么需要系统优化?

新安装的 Debian/Ubuntu 系统通常包含大量不必要的软件包和服务,这会:

  • ⚠️ 占用磁盘空间:默认安装可能占用 2-5GB
  • ⚠️ 消耗内存资源:后台服务占用 100-300MB 内存
  • ⚠️ 安全风险:不必要的服务增加攻击面
  • ⚠️ 影响性能:多余进程降低系统响应速度

通过系统化优化,可以:

  • ✅ 释放 1-3GB 磁盘空间
  • ✅ 节省 200-500MB 内存
  • ✅ 提升系统响应速度 20-30%
  • ✅ 减少安全漏洞风险

系统下载与选择

Debian vs Ubuntu 对比

特性DebianUbuntu
稳定性⭐⭐⭐⭐⭐(极稳定)⭐⭐⭐⭐(稳定)
软件新鲜度较旧(保守)较新
社区支持庞大更大
商业支持Canonical 官方支持
适用场景服务器、生产环境桌面、开发、服务器
更新周期2-3 年LTS 5 年,常规 9 个月
包管理apt/dpkgapt/dpkg(相同)

推荐选择:

  • 🖥️ VPS 服务器: Debian 12(轻量、稳定)
  • 💻 开发环境: Ubuntu 22.04/24.04 LTS(软件新、文档多)
  • 🏢 企业生产: Ubuntu LTS(有商业支持)

初始化系统检查

在开始优化前,先了解系统当前状态:

bash
# 查看系统信息
lsb_release -a
uname -r

# 查看磁盘使用
df -h

# 查看内存使用
free -h

# 查看 CPU 信息
lscpu

# 查看运行时间
uptime

步骤一:开启 SSH 服务远程登录

安装必要工具

sh
sudo apt update
sudo apt install net-tools openssh-server nano htop curl wget git -y

工具说明:

  • net-tools: 网络工具(ifconfig, netstat)
  • openssh-server: SSH 服务端
  • nano: 文本编辑器
  • htop: 进程监控
  • curl/wget: 下载工具
  • git: 版本控制

查看 SSH 服务状态

sh
# 检查是否安装
dpkg -l | grep ssh

# 查看服务状态
systemctl status ssh

# 如果没有启动,启动服务
sudo systemctl start ssh
sudo systemctl enable ssh  # 开机自启

预期输出:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
     Active: active (running) since ...

配置 SSH 端口(可选但推荐)

bash
# 编辑 SSH 配置
sudo nano /etc/ssh/sshd_config

# 修改端口(取消注释并改为其他端口,如 2222)
Port 2222

# 重启 SSH 服务
sudo systemctl restart ssh

注意: 修改端口后,连接时需要指定端口:

bash
ssh -p 2222 root@your_server_ip

步骤二:清理不必要的软件包

删除桌面环境软件(服务器版)

如果你安装的是桌面版但用作服务器,可以删除图形界面:

sh
# 卸载 GNOME 桌面环境
sudo apt --purge remove ubuntu-desktop gnome-shell gnome-core

# 卸载常用桌面应用
sudo apt --purge remove thunderbird totem rhythmbox empathy brasero \
  simple-scan gnome-mahjongg aisleriot gnome-mines cheese \
  transmission-common gnome-orca gnome-sudoku remmina

# 自动卸载不需要的依赖
sudo apt autoremove --purge

# 清理缓存
sudo apt autoclean
sudo apt clean

释放空间估算:

  • GNOME 桌面:~1.5GB
  • 桌面应用:~500MB
  • 依赖包:~200MB
  • 总计可释放:~2.2GB

验证清理效果

bash
# 清理前后对比
df -h

# 查看已安装的包数量
dpkg -l | wc -l

步骤三:系统时间同步

方法 1:使用 systemd-timesyncd(推荐)

现代 Debian/Ubuntu 默认使用 systemd 时间同步:

bash
# 检查状态
timedatectl status

# 启用 NTP 同步
sudo timedatectl set-ntp true

# 验证
timedatectl

预期输出:

               Local time: Sat 2026-04-11 19:30:00 CST
           Universal time: Sat 2026-04-11 11:30:00 UTC
                 RTC time: Sat 2026-04-11 11:30:00
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

方法 2:使用 chrony(更精确)

bash
# 安装 chrony
sudo apt install chrony -y

# 启动服务
sudo systemctl enable --now chrony

# 查看同步状态
chronyc tracking

# 查看时间源
chronyc sources -v

方法 3:传统 ntpdate(备用)

sh
# 安装 ntpdate
sudo apt install ntpdate -y

# 手动同步(中国用户推荐)
sudo ntpdate cn.pool.ntp.org

# 或全球 NTP 服务器
sudo ntpdate pool.ntp.org

# 将时间写入硬件时钟
sudo hwclock --systohc

# 添加到 crontab 每天同步
echo "0 3 * * * root ntpdate cn.pool.ntp.org && hwclock --systohc" | sudo tee -a /etc/crontab

NTP 服务器推荐:

  • 🇨🇳 中国:cn.pool.ntp.org
  • 🌏 亚洲:asia.pool.ntp.org
  • 🌍 全球:pool.ntp.org
  • 🇺🇸 美国:us.pool.ntp.org

步骤四:修改主机名

临时修改(重启失效)

bash
sudo hostname new-hostname

永久修改

bash
# 编辑主机名文件
sudo nano /etc/hostname
# 输入新的主机名,如:my-vps

# 编辑 hosts 文件
sudo nano /etc/hosts
# 找到 127.0.1.1 行,修改为:
# 127.0.1.1   my-vps

# 重启生效
sudo reboot

# 验证
hostname

主机名命名建议:

  • 小写字母、数字、连字符
  • 避免特殊字符和空格
  • 有意义且易识别(如:web-01, db-prod, vps-us)

步骤五:内核参数优化

网络优化

编辑 sysctl 配置:

bash
sudo nano /etc/sysctl.d/99-network.conf

添加以下优化参数:

ini
# === 网络性能优化 ===

# 增加 TCP 最大缓冲区大小
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# 增加 TCP 读写缓冲区
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 启用 TCP BBR 拥塞控制(参考我们的 BBR 教程)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

# 增加 SYN 队列长度
net.ipv4.tcp_max_syn_backlog = 8192

# 启用 TCP Fast Open
net.ipv4.tcp_fastopen = 3

# 减少 TIME_WAIT 超时时间
net.ipv4.tcp_fin_timeout = 15

# 重用 TIME_WAIT socket
net.ipv4.tcp_tw_reuse = 1

# 增加本地端口范围
net.ipv4.ip_local_port_range = 1024 65535

# 增加文件描述符限制
fs.file-max = 2097152

应用配置:

bash
sudo sysctl --system

内存优化

bash
sudo nano /etc/sysctl.d/99-memory.conf
ini
# === 内存优化 ===

# Swappiness 设置(参考我们的 Swap 教程)
vm.swappiness = 10

# 虚拟内存脏页比例
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

# OOM Killer 调整
vm.oom_kill_allocating_task = 1

步骤六:安全加固

1. 配置防火墙(UFW)

bash
# 安装 UFW
sudo apt install ufw -y

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH(如果修改了端口,改为对应端口)
sudo ufw allow 22/tcp
# 或
sudo ufw allow 2222/tcp

# 允许 HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 启用防火墙
sudo ufw enable

# 查看状态
sudo ufw status verbose

2. 禁用 Root 密码登录(推荐密钥登录)

bash
# 编辑 SSH 配置
sudo nano /etc/ssh/sshd_config

# 修改以下配置
PermitRootLogin prohibit-password  # 禁止 root 密码登录,允许密钥
PasswordAuthentication no          # 禁用所有密码登录
PermitEmptyPasswords no            # 禁止空密码

# 重启 SSH
sudo systemctl restart ssh

⚠️ 重要提醒: 在禁用密码登录前,务必先配置好 SSH 密钥登录

3. 安装 Fail2ban

bash
# 安装 Fail2ban
sudo apt install fail2ban -y

# 启动服务
sudo systemctl enable --now fail2ban

# 详细配置参考我们的 Fail2ban 教程

4. 定期自动更新安全补丁

bash
# 安装无人值守更新
sudo apt install unattended-upgrades -y

# 配置自动更新
sudo dpkg-reconfigure -plow unattended-upgrades

# 编辑配置
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

关键配置:

text
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

步骤七:性能监控工具

安装监控工具集

bash
sudo apt install -y \
  htop \        # 进程监控
  iotop \       # IO 监控
  iftop \       # 网络流量监控
  nethogs \     # 按进程显示网络使用
  sysstat \     # 系统统计(sar)
  tmux \        # 终端复用器
  screen        # 会话管理

常用监控命令

bash
# 实时监控 CPU 和内存
htop

# 监控磁盘 IO
iotop

# 监控网络流量
iftop

# 查看系统负载历史
sar -u 1 5

# 查看内存使用历史
sar -r 1 5

# 查看网络统计
sar -n DEV 1 5

步骤八:日志管理

配置日志轮转

bash
# 编辑 journald 配置
sudo nano /etc/systemd/journald.conf
ini
[Journal]
# 限制日志大小
SystemMaxUse=500M
RuntimeMaxUse=100M

# 日志保留时间
MaxRetentionSec=1month

# 压缩日志
Compress=yes

重启服务:

bash
sudo systemctl restart systemd-journald

清理旧日志

bash
# 查看当前日志占用
journalctl --disk-usage

# 清理超过 7 天的日志
sudo journalctl --vacuum-time=7d

# 限制日志大小为 500MB
sudo journalctl --vacuum-size=500M

步骤九:创建交换空间(Swap)

对于小内存 VPS(≤2GB),强烈建议配置 Swap:

bash
# 参考我们的 Swap 详细教程
# 快速创建 2GB Swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 设置 swappiness
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swap.conf
sudo sysctl --system

步骤十:系统备份与快照

创建系统快照脚本

#!/bin/bash
# /usr/local/bin/system-backup.sh

BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
HOSTNAME=$(hostname)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份重要配置
tar czf $BACKUP_DIR/config_$HOSTNAME_$DATE.tar.gz \
  /etc/ssh/ \
  /etc/fstab \
  /etc/hostname \
  /etc/hosts \
  /etc/sysctl.d/ \
  /etc/ufw/ \
  /root/.ssh/

# 备份用户数据(如果有)
# tar czf $BACKUP_DIR/data_$HOSTNAME_$DATE.tar.gz /home/

# 保留最近 7 天的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "Backup completed: $BACKUP_DIR/config_$HOSTNAME_$DATE.tar.gz"

设置定时任务:

bash
# 每周日凌晨 2 点备份
echo "0 2 * * 0 root /usr/local/bin/system-backup.sh" | sudo tee -a /etc/crontab

完整优化脚本(一键执行)

创建一个自动化脚本,一次性完成所有优化:

#!/bin/bash
# system-optimize.sh - Debian/Ubuntu 系统优化脚本

set -e

echo "=== 开始系统优化 ==="

# 1. 更新系统
echo "[1/10] 更新系统..."
apt update && apt upgrade -y

# 2. 安装必要工具
echo "[2/10] 安装必要工具..."
apt install -y net-tools openssh-server nano htop curl wget git ufw fail2ban

# 3. 清理不必要软件
echo "[3/10] 清理系统..."
apt autoremove --purge -y
apt autoclean

# 4. 配置时间同步
echo "[4/10] 配置时间同步..."
timedatectl set-ntp true

# 5. 配置防火墙
echo "[5/10] 配置防火墙..."
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

# 6. 创建 Swap(如果内存 < 2GB)
MEM=$(free -m | awk '/^Mem:/{print $2}')
if [ $MEM -lt 2048 ]; then
    echo "[6/10] 创建 Swap..."
    fallocate -l 2G /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile none swap sw 0 0' >> /etc/fstab
    echo 'vm.swappiness=10' >> /etc/sysctl.d/99-swap.conf
fi

# 7. 优化内核参数
echo "[7/10] 优化内核参数..."
cat > /etc/sysctl.d/99-optimize.conf <<EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3
vm.swappiness = 10
EOF
sysctl --system

# 8. 配置日志限制
echo "[8/10] 配置日志管理..."
sed -i 's/#SystemMaxUse=/SystemMaxUse=500M/' /etc/systemd/journald.conf
systemctl restart systemd-journald

# 9. 启用自动安全更新
echo "[9/10] 启用自动更新..."
apt install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades

# 10. 清理
echo "[10/10] 最终清理..."
apt clean
journalctl --vacuum-time=7d

echo "=== 系统优化完成!请重启服务器 ==="
echo "重启命令:sudo reboot"

使用方法:

bash
# 下载脚本
wget https://example.com/system-optimize.sh

# 赋予执行权限
chmod +x system-optimize.sh

# 执行(需要 root 权限)
sudo ./system-optimize.sh

# 重启
sudo reboot

优化效果验证

性能对比测试

bash
# 1. 检查内存使用
free -h

# 2. 检查磁盘空间
df -h

# 3. 检查运行服务
systemctl list-units --type=service --state=running

# 4. 检查网络连接
ss -tuln

# 5. 压力测试(可选)
apt install stress -y
stress --cpu 2 --io 1 --vm 1 --vm-bytes 256M --timeout 60s

预期优化效果

指标优化前优化后改善
内存占用300-500MB100-200MB-60%
磁盘占用2-5GB1-2GB-50%
启动时间30-60秒10-20秒-60%
运行服务数20-30个8-12个-60%
安全评分CA+显著提升

常见问题排查

Q1: 优化后无法 SSH 连接?

解决方案:

bash
# 通过 VNC 控制台登录
# 检查 SSH 服务状态
systemctl status ssh

# 检查防火墙规则
ufw status

# 临时禁用防火墙测试
ufw disable

# 恢复 SSH 配置
nano /etc/ssh/sshd_config
# 确保 PermitRootLogin 和 PasswordAuthentication 配置正确

Q2: 系统更新后优化失效?

解决方案:

bash
# 重新应用内核参数
sudo sysctl --system

# 检查服务状态
systemctl status ssh ufw fail2ban

# 重新启用必要的服务
sudo systemctl enable --now ssh ufw fail2ban

Q3: Swap 未生效?

解决方案:

bash
# 检查 Swap 状态
swapon --show
free -h

# 如果没有显示,重新激活
sudo swapon /swapfile

# 检查 fstab 配置
cat /etc/fstab | grep swap

最佳实践总结

新服务器初始化清单

必做事项(前 30 分钟):

推荐事项(第 1 天):

进阶事项(第 1 周):

定期维护计划

每日:

  • 检查系统负载(htop
  • 查看失败登录尝试(fail2ban-client status

每周:

  • 系统更新(apt update && apt upgrade
  • 清理日志(journalctl --vacuum-time=7d
  • 检查磁盘空间(df -h

每月:

  • 审查防火墙规则
  • 检查备份完整性
  • 审计用户账户和密钥
  • 性能基准测试

相关教程推荐

通过本指南的系统化优化,你的 Debian/Ubuntu 服务器将更加安全、稳定、高效!🚀✨


免责声明

本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。