新服务器到手后的十件事
每次开一台新的 Linux 服务器,我都会先过一遍同一份清单。写下来是为了下次不用再凭记忆,也顺便解释一下每一步为什么要做。下面以 Debian 12 为例,Ubuntu 基本一样。
1. 先更新系统
云厂商的镜像往往不是最新的,第一件事是把补丁打上:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
内核有更新时记得重启,否则新内核不会生效。
2. 只用密钥登录 SSH
把本机公钥放进 ~/.ssh/authorized_keys,确认能用密钥登录后,再在 /etc/ssh/sshd_config 里关掉密码登录:
PasswordAuthentication no
PermitRootLogin prohibit-password
改完先别断开当前会话,另开一个终端试一下能不能登录,确认没问题再退出。这是我踩过的坑:一旦配置写错,就只能去控制台救援了。
3. 打开自动安全更新
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
它默认只装安全更新,不会动大版本,适合放着不管的小机器。
4. 小内存机器加一点 swap
1 GB 以下内存的机器,编译或者装包时很容易被 OOM 杀进程。加 1 GB swap 当缓冲:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
5. 时区和时间同步
日志时间对不上是排错时最烦的事之一。我习惯服务器统一用 UTC,看日志时再换算:
timedatectl set-timezone UTC
timedatectl status
确认 System clock synchronized: yes。
6. 防火墙只开需要的端口
云厂商控制台的安全组是第一道,系统里可以再加一道。多数情况下只需要 22、80、443。不需要的服务干脆不要监听公网,比如数据库只绑 127.0.0.1。用下面的命令看一眼现在都有什么在监听:
sudo ss -lntup
7. 服务配置自动重启
systemd 服务加上 Restart=on-failure,进程意外退出时会自己拉起来。用 drop-in 文件改,不要直接改包自带的 unit:
sudo systemctl edit caddy
# 写入:
[Service]
Restart=on-failure
RestartSec=3s
8. 限制日志大小
journald 默认最多能占磁盘的 10%,小硬盘上可以再压一压。在 /etc/systemd/journald.conf 里设 SystemMaxUse=200M,然后重启 systemd-journald。
9. 改配置前先备份
任何配置文件动之前先复制一份,带上日期:
sudo cp -a /etc/caddy/Caddyfile /root/Caddyfile.$(date +%F)
回滚的时候你会感谢自己。
10. 把这些写成脚本
做过两次以上的步骤,就值得写成脚本放进仓库。下次开机器时跑一遍,比照着清单手敲可靠得多。