我的运维笔记

第 1 讲:服务器安全加固

本章做了什么:

将服务器的登录方式从密码改为更安全的 SSH 密钥登录,并禁用了密码和 root 直连。同时配置了防火墙“两道门”,并安装了 fail2ban 自动反击暴力破解。

关键命令与作用:

# 1. 在本地电脑生成 ed25519 密钥对,私钥留本地,公钥上传服务器
ssh-keygen -t ed25519 -C "study-服务器加固"

# 2. 在服务器上设置严格的权限,防止 SSH 拒绝登录
chmod 700 ~/.ssh                 # 仅本人可进入读写
chmod 600 ~/.ssh/authorized_keys # 仅本人可读写文件

# 3. 修改 sshd 配置后,先测试语法再重载生效
sudo sshd -t                     # 验证 sshd 配置文件是否有错误
sudo systemctl reload sshd       # 平滑重载,不会断开当前连接

# 4. 防火墙永久放行 SSH 服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload       # 重新加载使永久规则生效

遇到的问题与解决:

第 2 讲:网站上线与 Nginx 基础

本章做了什么:

配置了域名解析,开放了 80 端口,安装了 Nginx。亲手建立网站目录并上传了带有备案号的个人主页,理解了 server_name 如何匹配域名。

关键命令与作用:

# 1. 开放 80 端口,让外部可以访问网页
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

# 2. 创建网站目录,并把归属权交给普通用户 study
sudo mkdir -p /var/www/mysite
sudo chown -R study:study /var/www/mysite
sudo chmod 755 /var/www/mysite  # 权限 755:属主可读写执行,其他人可读可执行

# 3. 修改 Nginx 配置后,测试并重载
sudo nginx -t                   # 检查 Nginx 配置文件语法
sudo systemctl reload nginx     # 重载 Nginx 让配置生效

遇到的问题与解决:

第 3 讲:HTTPS 与证书自动续期

本章做了什么:

理解 HTTP 明文传输的风险,使用 Let's Encrypt 申请了免费 HTTPS 证书。将网站的 80 端口改为跳转,由 443 端口提供加密内容,并配置了自动续期定时器。

关键命令与作用:

# 1. 开放 443 端口(HTTPS)
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# 2. 使用 certbot 申请证书(先演练后正式)
# --webroot 表示通过网站目录验证;-w 指定网站根目录;-d 指定域名
sudo certbot certonly --webroot -w /var/www/mysite -d 你的域名 -d www.你的域名 -m 邮箱 --agree-tos --no-eff-email --dry-run

# 3. 开启自动续期定时器(Let's Encrypt 证书仅 90 天有效期)
sudo systemctl enable --now certbot-renew.timer

遇到的问题与解决:

第 4 讲:多站点与子域名配置

本章做了什么:

理解了 Nginx 的虚拟主机概念,通过添加 notes 子域名的解析,在服务器上部署了第二个独立站点,并做到了一站一文件、一站一日志。

关键命令与作用:

# 1. 查看 Nginx 实际加载的所有配置中的 server_name(方便盘点站点)
sudo nginx -T 2>/dev/null | grep -E "server_name"

# 2. 实时查看子站点(notes)的访问日志
# -f 参数表示持续跟踪文件末尾的新增内容
sudo tail -f /var/log/nginx/notes_access.log

遇到的问题与解决: