我的运维笔记

一台阿里云 ECS 上的《服务器运维》课程实践记录

Rocky Linux 9.6 · Nginx 1.20 · 记录人:黄浩威

第 1 讲 · 云服务器与 SSH 远程登录

做了什么:购买并初始化阿里云 ECS(Rocky Linux 9),创建日常使用的 study 普通用户,配置 SSH 密钥登录,并按要求关闭 root 的 SSH 直接登录。

关键命令

# 本地生成 Ed25519 密钥对
ssh-keygen -t ed25519

# 把公钥传到服务器,实现免密登录
ssh-copy-id -i ~/.ssh/id_ed25519.pub study@服务器IP

# 服务器上禁用 root 直接 SSH 登录
sudo vi /etc/ssh/sshd_config
#   PermitRootLogin no
sudo systemctl restart sshd

# 在 ~/.ssh/config 里写好别名,之后 ssh aliyun-ecs-study 一条命令直连
Host aliyun-ecs-study
    HostName 47.111.130.121
    User study
    IdentityFile ~/.ssh/id_ed25519
遇到的问题:改完 sshd_config 重启后担心把自己锁在门外。 解决:保持原有会话不断开,另开一个新终端先验证 study 用户能正常登录、sudo 可提权,确认无误才退出旧会话。

第 2 讲 · 部署第一个网站与 Nginx 排错

做了什么:安装 Nginx,理解 master / worker 进程模型,部署第一个静态页面; 通过实验搞清楚了「为什么用 IP 访问是默认页、403 是怎么来的」。

关键命令

# 安装并启动
sudo dnf install -y nginx
sudo systemctl enable --now nginx

# 看进程模型:1 个 master(root)+ 与 CPU 核数相同的 worker(nginx 用户)
ps -ef | grep [n]ginx
nproc

# 403 实验的关键结论:Nginx 工作进程以 nginx 用户读取网页文件,
# 目录必须 755、文件必须 644,否则读不到就报 403 Forbidden
ls -ld /var/www/mysite
sudo systemctl reload nginx
遇到的问题:用 IP 访问看到的是 Nginx 自带默认页,不是自己的网站。 解决:明白了请求靠 Host 请求头区分站点——没有域名匹配时落到 default_server 的系统默认站点; 这正是第 4 讲多站点原理的伏笔。

第 3 讲 · 域名解析、HTTPS 证书与主站上线

做了什么:注册域名并完成备案,添加 A 记录解析到服务器公网 IP; 用 Let's Encrypt(certbot)给主站签发免费证书,配置 HTTP 自动跳转 HTTPS,并启用自动续期。

关键命令

# certbot 通过 webroot 方式验证域名并签发证书
sudo dnf install -y certbot python3-certbot-nginx
sudo certbot certonly --webroot -w /var/www/mysite \
  -d huanghaowei.icu -d www.huanghaowei.icu

# 80 端口只负责证书验证和跳转,443 提供内容(见 mysite.conf)
location /.well-known/acme-challenge/ { root /var/www/mysite; }
location / { return 301 https://$host$request_uri; }

# 每次改配置前先检查语法,再平滑重载
sudo nginx -t
sudo systemctl reload nginx

# 启用自动续期定时器,并演练验证
sudo systemctl enable --now certbot-renew.timer
sudo certbot renew --dry-run
遇到的问题:备份 Nginx 配置时直接复制成了 mysite.conf.bak 没出问题, 但意识到如果备份文件以 .conf 结尾放在 conf.d 里,会被 include 一起加载导致重复的 server_name 报错。 解决:备份统一加 .bak 后缀,并记住 conf.d 目录「只有 .conf 会被加载」这一规则。

第 4 讲 · 多站点:本页面的由来

你正在看的这个 notes.huanghaowei.icu 就是第 4 讲的成果:在同一台服务器上, Nginx 通过 server 块按域名分发请求,让一个 IP 同时承载主站和本笔记站, 子站点拥有独立的证书和日志——「一站一文件、一站一日志、一站一证书」。