上线前先建立基线
新服务器交付后,第一件事不是立即部署业务,而是建立安全和运维基线。基线的目标是:减少暴露面、保留排查证据、确保故障时能恢复。以下步骤适合个人站点、小型服务和测试环境,生产环境还需要结合公司安全规范。
1. 创建普通用户并限制 root 登录
不要长期使用 root 直接登录。建议创建普通用户,加入 sudo 权限,再配置 SSH 密钥登录。
adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh确认普通用户可以登录并执行 sudo 后,再考虑关闭 root 密码登录。修改 SSH 配置前,务必保留一个已登录的会话,避免配置错误导致失联。
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes2. 更新系统并记录版本
更新系统前先确认发行版和内核版本,方便以后排查兼容性问题。
cat /etc/os-release
uname -a
sudo apt update
sudo apt upgrade如果是生产服务器,不建议无计划地自动升级所有包。更稳妥的做法是定期维护窗口升级,并保留升级记录。
3. 配置防火墙
防火墙原则是只开放必要端口。典型 Web 服务只需要 SSH、HTTP 和 HTTPS。
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose如果 SSH 端口改过,先放行新端口,再关闭旧端口。不要在未验证新端口可连接前关闭 22。
4. Nginx 反向代理检查
Nginx 配置上线前至少检查三点:域名是否正确、上游服务是否可达、HTTPS 是否正常。每次修改配置后先测试再重载。
sudo nginx -t
sudo systemctl reload nginx
curl -I https://example.com常见反代配置还应保留真实 IP 和协议头:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;5. 日志和磁盘空间
日志是故障排查的第一证据,但日志也可能打满磁盘。上线前要确认日志路径、轮转策略和磁盘告警。
df -h
du -sh /var/log/* 2>/dev/null
journalctl --disk-usage如果使用 Docker,还要关注容器日志大小。建议为 Docker daemon 配置日志轮转,避免单个容器输出过大。
6. 备份和恢复演练
没有恢复验证的备份不可靠。至少要明确备份对象、备份频率、保存位置和恢复步骤。
- 数据库:定时导出或使用数据库原生备份。
- 上传文件:对象存储或远程同步。
- 配置文件:Nginx、Docker Compose、环境变量模板。
- 证书和密钥:单独加密保存,严格控制权限。
建议定期在测试环境恢复一次,确认备份文件不是空的、版本能兼容、恢复命令可执行。
7. 监控和告警
个人项目也需要最基本的监控。至少监控 CPU、内存、磁盘、站点可用性和证书有效期。告警渠道可以是邮件、机器人或监控面板通知。
上线前最终检查
- 普通用户可以登录,root 登录策略已确认。
- 防火墙只开放必要端口。
- Nginx 配置通过测试,HTTPS 正常。
- 数据库和上传文件有备份。
- 日志不会无限增长。
- 出现问题时有明确回滚方式。
服务器运维最怕“当时能跑就不管了”。建立基线后,每次新增服务都按同一套清单检查,长期维护成本会低很多。
评论