先准备一条不会把自己锁在门外的退路
修改网络和 SSH 之前,先确认服务商网页控制台能够打开。万一远程连接被错误配置挡住,它就是最后的入口。下面仍以 203.0.113.10 为示例,执行时替换成你的公网 IP;密码不要写进命令,也不要截到公开图片里。
ssh root@203.0.113.10
第一次连接时,SSH 会要求确认主机指纹。服务商控制台如果提供了指纹,就先核对再输入 yes。以后同一 IP 突然提示指纹变化,可能是实例被重装,也可能需要检查连接,不要条件反射地删除本地记录。
先记录原始状态,再安装软件
下面几条命令会告诉你系统版本、架构、CPU、内存、硬盘和网卡。把结果放进私密的部署笔记,以后排错时能知道“最初是什么样”。
cat /etc/os-release
uname -m
nproc
free -h
df -h
ip -brief address
检查系统仍在支持周期内,架构为 64 位,CPU 和内存与订单大致相符,根分区还有足够空间。实例规格明显不对时先停止,不要在错误的机器上继续投入时间。
更新系统软件包
云厂商镜像制作后可能已经放了一段时间,软件索引和安全更新不一定是最新的。先刷新索引,再安装当前可用的修复;如果系统提示需要重启,就在安装应用前完成。
sudo apt update
sudo apt upgrade -y
test -f /var/run/reboot-required && cat /var/run/reboot-required
升级时保持 SSH 窗口打开。如果遇到“是否替换配置文件”的提示,而你已经修改过那个文件,先看差异,不要一路按回车。重启后重新连接,再执行 uptime 确认机器已经回来。
设置主机名和时区
清楚的主机名会出现在命令提示符和日志里。可以用 web-01 这种中性名字,不要把密码、客户名或敏感信息写进去。系统时间必须准确,因为 HTTPS 证书、日志顺序和定时任务都依赖它。
sudo hostnamectl set-hostname web-01
sudo timedatectl set-timezone Asia/Shanghai
timedatectl status
服务器统一使用 UTC 也完全可以,关键是团队知道采用哪一种,并在日志分析时保持一致。timedatectl status 中应看到时间同步处于正常状态。
创建日常管理账号
一直使用 root,任何输错的命令都可能直接修改全系统。创建一个有 sudo 权限的普通账号,日常部署用它;完成后另开一个终端测试,旧的 root 窗口暂时不要关。
sudo adduser deploy
sudo usermod -aG sudo deploy
su - deploy
sudo whoami
最后一条预期输出 root,说明 deploy 可以在需要时临时提权。这里只是把账号准备好,SSH 密钥和禁止危险登录方式要等下一篇验证后再做。
小内存机器要不要加 Swap
先执行 swapon --show。如果没有任何输出,1GB 或 2GB 的小服务器在安装依赖、构建项目时可能更容易内存不足。适量 Swap 可以降低突然被系统杀掉的概率,但速度远慢于内存,也不能代替升级 RAM。创建前查看服务商对系统盘和快照的说明,并在 free -h 中确认结果。
我的心得
我以前拿到服务器就急着装程序,后来才发现时区不对、磁盘太小,甚至镜像版本也选错了。现在我固定先花十分钟保存一份基线。以后遇到“网站好像变慢了”,就能把当前数据与最初状态比较,而不是靠感觉猜。
完成标准
系统已经更新、时间正确、主机名清楚、硬盘有余量、deploy 能执行 sudo,这一篇就完成了。先保留当前 root 会话,下一篇继续做 SSH 密钥、防火墙和自动更新。