ZY 的笔记

新服务器到手后的十件事

每次开一台新的 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. 把这些写成脚本

做过两次以上的步骤,就值得写成脚本放进仓库。下次开机器时跑一遍,比照着清单手敲可靠得多。

← 返回文章列表