我的运维笔记

一台阿里云 ECS(Rocky Linux 9)从零到多站点的学习记录

第 1 讲:服务器初始化

这一讲的任务是让一台刚买到的云服务器能被自己安全地登录和操作。我在阿里云上购买了一台华东1(杭州)的 ECS,系统选的是 Rocky Linux 9,配置 2 核 2GiB,公网 IP 是 47.111.128.195。

做了什么

关键命令

ssh -i ~/.ssh/id_ed25519 root@47.111.128.195   # 用私钥以 root 身份登录服务器
adduser study                                   # 创建普通用户 study
passwd study                                    # 给 study 设置密码
usermod -aG wheel study                         # 把 study 加入 wheel 组,获得 sudo 权限
su - study                                      # 切换到 study 用户验证权限

遇到的问题和解决

第一次用密码登录时总是担心暴力破解,后来改用密钥登录并了解可以在 /etc/ssh/sshd_config 里把 PasswordAuthentication 设为 no,只保留密钥方式,安全性提高了很多。

第 2 讲:Nginx 安装与第一个网站

这一讲在服务器上安装 Nginx,并把第一个网站(主站)跑起来。核心体会是:浏览器请求里携带的域名(Host 请求头)决定了用户看到哪个网站。

做了什么

关键命令

sudo dnf install -y nginx                       # 安装 Nginx
sudo systemctl enable --now nginx               # 启动并设置开机自启
sudo mkdir -p /var/www/mysite                   # 创建主站目录
sudo chown -R study:study /var/www/mysite       # 目录交给 study 用户管理
sudo chmod 755 /var/www/mysite                  # 755 权限让 nginx 工作进程能进入读取
sudo nginx -t                                   # 检查配置文件语法
sudo systemctl reload nginx                     # 平滑重载配置,不中断服务

遇到的问题和解决

403 实验让我印象最深:网页文件存在却访问不了,原因是 Nginx 的工作进程以 nginx 用户身份读文件,目录或文件对"其他人"没有读权限时就会返回 403。用 ls -l 核对权限,把目录恢复成 755、文件恢复成 644 就正常了。这让我理解了"进程用户 ≠ 我登录的用户"。

第 3 讲:主站 HTTPS 与证书

这一讲给主站加上 HTTPS:用 Let's Encrypt 的免费证书,通过 certbot 申请,并配置 80 端口自动跳转 443。

做了什么

关键命令

sudo dnf install -y certbot python3-certbot-nginx   # 安装 certbot 及其 nginx 插件
sudo certbot certonly --webroot -w /var/www/mysite \
  -d hebinhao.icu -d www.hebinhao.icu --dry-run    # 先演练一遍,验证流程无误
sudo certbot certonly --webroot -w /var/www/mysite \
  -d hebinhao.icu -d www.hebinhao.icu              # 正式申请主站证书
sudo certbot certificates                           # 查看本机已有的证书列表
sudo certbot renew --dry-run                        # 模拟续期,确认自动续期可用

遇到的问题和解决

先演练(--dry-run)再正式申请这个习惯很有用:演练通过了正式申请几乎一次成功。另外体会到 301 跳转的配置里,location /.well-known/acme-challenge/ 必须写在 location / 旁边且路径更具体,因为 Nginx 普通前缀匹配取最长的,这样续期验证文件才不会被 301 跳走。

第 4 讲预告:在同一台服务器上增加第二个网站 notes 子域名站点,一站一文件、一站一日志、一站一证书。