Appearance
Ubuntu 服务器初始化标准化 SOP
适用版本:Ubuntu 20.04 LTS / 22.04 LTS / 24.04 LTS 场景覆盖:物理机 (Laptop/MiniPC) / 云服务器 (ECS) / 虚拟机 (VM)
📋 0. 准备工作
在开始之前,请确认:
- 物理机/VM:已完成系统基础安装,可进入终端。
- 云服务器:已获取公网 IP 及初始 root 密码或密钥。
- 网络:确认服务器具备互联网访问能力。
🚀 1. 账户与权限管理 (Access Control)
原则:禁止直接使用 root 账户进行日常操作,应使用具有 sudo 权限的普通用户。
1.1 创建运维用户
创建一个用于日常维护的非 root 账号。
bash
# 1. 创建新用户 (将 'deployer' 替换为你常用的用户名)
sudo adduser deployer
# 2. 授予 sudo 权限
sudo usermod -aG sudo deployer
# 3. 验证权限
su - deployer
sudo whoami
# 应输出: root
exit1.2 SSH 密钥登录配置 (推荐)
在本地电脑 (Client) 上执行,将公钥上传至服务器以实现免密且安全的登录。
bash
# [本地电脑] 生成密钥 (如已有可跳过)
# ssh-keygen -t ed25519 -C "your_email@example.com"
# [本地电脑] 上传公钥 (替换为实际 IP)
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@<SERVER_IP>🛠️ 2. 基础系统优化 (System Tuning)
2.1 切换国内镜像源
针对国内环境,建议切换至阿里云或清华大学镜像源以提升软件下载速度。
注意:云服务器(如阿里云 ECS)通常已内置内网源,建议保留默认配置。物理机或虚拟机建议手动替换。
bash
# 1. 备份原始文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 2. 自动替换为阿里云源 (针对 x86_64 架构)
# 如果是 ARM 架构,请将 ubuntu 替换为 ubuntu-ports
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 3. 更新系统软件
sudo apt update && sudo apt upgrade -y2.2 设置时区与时间同步
确保系统时间为上海时间,防止日志时间错乱导致排障困难。
bash
sudo timedatectl set-timezone Asia/Shanghai
# 验证状态
timedatectl status2.3 配置 Swap 交换分区 (内存 < 4GB 推荐)
在内存资源有限的服务器上配置 Swap 可以防止因内存溢出 (OOM) 导致的服务崩溃。
bash
# 检查现有 Swap
free -h
# 创建 4G Swap 文件 (大小可根据磁盘空间调整)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 配置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 优化 Swappiness (设置为 10,优先使用物理内存)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p2.4 系统日志限制
防止 systemd-journald 日志无限增长占满磁盘空间。
bash
sudo vim /etc/systemd/journald.conf
# 修改或添加以下行:
# SystemMaxUse=500M
# 重启日志服务生效
sudo systemctl restart systemd-journald2.5 安装运维必备工具
安装常用的系统管理与排障工具。
bash
sudo apt install -y \
curl wget git vim htop tmux \
net-tools unzip zip lsof ncdu \
rsync tree jq build-essential🛡️ 3. 安全加固 (Security Hardening)
3.1 SSH 服务端加固
修改 /etc/ssh/sshd_config 提高远程访问安全性。
bash
sudo vim /etc/ssh/sshd_config
# 建议修改项:
PermitRootLogin no # 禁止 root 直接登录
PasswordAuthentication no # 禁止密码登录 (确保密钥登录已测试成功!)
PubkeyAuthentication yes # 开启公钥登录
# Port 2222 # 可选:修改默认 22 端口以防扫描
# 重启 SSH 服务
sudo systemctl restart ssh3.2 配置 UFW 防火墙
Ubuntu 默认自带的极简防火墙管理工具。
bash
# 1. 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 2. 放行核心端口 (必须包含 SSH 端口)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 3. 启用防火墙
sudo ufw enable
sudo ufw status3.3 Fail2Ban 防暴力破解 (推荐)
对于暴露在公网的服务器,建议安装 Fail2Ban 自动封禁尝试破解密码的恶意 IP。
bash
sudo apt install fail2ban -y
# 默认配置已足够保护 SSH
sudo systemctl enable --now fail2ban3.4 自动安全更新 (长期运维建议)
开启自动更新以确保系统安全补丁能及时安装。
bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades✅ 4. Day-0 最终验证清单
在开始部署应用前,请依次确认:
- [ ] SSH: 尝试使用密钥能否正常登录?(验证后建议再禁用密码登录)
- [ ] 防火墙:
sudo ufw status是否显示已启用且只放行了必要端口? - [ ] 时间:
date输出的时间是否与当前北京时间一致? - [ ] 存储:
df -h查看根目录或/srv所在分区空间是否充足? - [ ] Docker:
docker ps命令是否无需sudo即可执行?
