更新博客备忘录

1395 字
7 分钟
更新博客备忘录

站点已经迁到自己的服务器上了,以前的 Vercel / EdgeOne Pages 那两条路都废弃了。现在只剩一条链路:

本地写 markdown → 本地构建 → 上传到服务器 → 线上生效

线上地址:https://lyh-blogs.top

一、日常更新:三步#

Terminal window
# 1. 新建文章(会生成带 front-matter 的模板)
pnpm new-post ctf
# 2. 本地预览,边写边看
pnpm dev # 浏览器打开 http://localhost:4321
# 3. 写完发布
bash scripts/deploy-to-server.sh

第 3 步会自动做完整套事情:pnpm build 构建 → 打包 dist/ → 上传到服务器 /var/www/lyh-blogs → 收敛文件权限。跑完输出 服务器文件数: N 就算成功。

只想改一篇文章、不新建,就跳过第 1 步,改完直接跑第 3 步。

二、文章写在哪、怎么写#

文章都在 src/content/posts/ 下,一个 .md 文件就是一篇。文件名决定网址:

src/content/posts/ctf.md
↓
https://lyh-blogs.top/posts/ctf/

pnpm new-post 生成的模板长这样:

---
title: ctf
published: 2026-09-25
description: ''
image: ''
tags: []
category: ''
draft: false
lang: ''
---

常用字段:

  • title — 标题,一定要改,默认是文件名
  • published — 发布日期,决定排序,写成 2026-09-25 这种格式
  • description — 摘要,会出现在首页卡片和搜索引擎结果里
  • tags — 标签数组,写成 [ctf, pwn]
  • category — 分类,单个字符串
  • draft — 置 true 就是草稿。本地 pnpm dev 能看到,线上构建会被排除,想先存着不发就用它
  • image — 封面图,写相对路径
  • pinned — 置 true 会置顶

三、配图:必须用相对路径#

这是踩过的坑,写错了线上就是一个个断图。

图片统一放 src/content/posts/images/ 下,建议按主题建子目录:

src/content/posts/images/
├── moectf-2026/
│ ├── level1.jpg
│ └── cat.png
└── writeup_images/
└── 1.png

在文章里用相对路径引用,且路径是相对于 .md 文件本身:

![题目图片](./images/ctf/level1.jpg)

写完之后,Astro 会自动把图片处理成 /_astro/level1.<哈希>.webp,顺手做了压缩和格式转换,这是正常的、也是我们想要的效果。

不要用以 / 开头的绝对路径:

![题目图片](/posts/images/ctf/level1.jpg) <!-- 错!线上 404 -->

Astro 会把这种路径当成”放在 public/ 里的静态文件”原样输出,而图片并不在 public/ 下,所以线上直接 404。

两种写法的实测对照:

  • ./images/ctf/level1.jpg → 构建成 /_astro/level1.Deo-b12t.jpg → 访问 200
  • /posts/images/ctf/level1.jpg → 原样保留 → 访问 404

顺带两个容易手滑的地方:

  • 括号别写成花括号。![图](路径) 是对的,![图]{路径} 会渲染成一段纯文本
  • 中文文件名和带空格的目录名尽量别用,URL 里要转义,麻烦

四、发布完怎么确认#

Terminal window
# 首页通不通
curl -s -o /dev/null -w "%{http_code}\n" https://lyh-blogs.top/
# 刚发的那篇通不通
curl -s -o /dev/null -w "%{http_code}\n" https://lyh-blogs.top/posts/文章名/

看状态码:

  • 200 — 成功
  • 404 — 文件没传上去,或者权限不对(见下一节)
  • 403 — 权限问题

五、出问题先看这两个地方#

整站 404,但服务器上文件数正常#

九成是站点根目录权限被带歪了。tar 打包会把本地 dist/ 的权限原样带上服务器,本地 dist/ 有时是 700,Web 服务器进不去目录,就整站 404。

Terminal window
ssh -i ~/.ssh/id_ed25519 ubuntu@123.207.244.94
ls -ld /var/www/lyh-blogs # 应该是 drwxr-xr-x,如果是 drwx------ 就是这个问题

修复:

Terminal window
sudo chmod 755 /var/www/lyh-blogs
sudo find /var/www/lyh-blogs -type d -exec chmod 755 {} +
sudo find /var/www/lyh-blogs -type f -exec chmod 644 {} +

部署脚本里已经内置了这一步,正常不会再犯。如果又出现了,说明脚本被人改过。

图片不显示#

先按 F12 看控制台里图片请求的地址:

  • 地址是 /_astro/xxx.webp 却 404 → 图片文件本身没传上去,检查 src/content/posts/images/ 下有没有这个文件
  • 地址是 /posts/images/xxx.png 这种裸路径 → 引用写法错了,改回相对路径

六、运维备忘#

服务器信息:

  • 公网 IP 123.207.244.94(腾讯云轻量,Ubuntu 22.04)
  • 登录 ssh -i ~/.ssh/id_ed25519 ubuntu@123.207.244.94
  • 站点根目录 /var/www/lyh-blogs
  • Nginx 配置 /etc/nginx/sites-available/lyh-blogs

改 Nginx 配置之后:

Terminal window
sudo nginx -t && sudo systemctl reload nginx

HTTPS 证书由 Let’s Encrypt 签发,已装自动续期,不用手动管。手动查剩多久:

Terminal window
sudo certbot certificates

SSH 只认密钥,密码已关闭#

服务器已加固,现在只能用密钥登录,密码登录和 root 直接登录都被拒绝了。这是有意为之 —— 云服务器默认开着密码登录,22 端口又对全网开放,等于给爆破留门。

配置在 /etc/ssh/sshd_config.d/00-hardening.conf,内容也留在仓库 deploy/ssh-hardening.conf。

几点要注意:

  • 换电脑或重装系统后,先把新公钥传到服务器,别等登不上了才想起来:ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@123.207.244.94
  • 万一真登不上,去腾讯云控制台用 VNC 登录,然后删掉那个文件恢复密码登录:sudo rm /etc/ssh/sshd_config.d/00-hardening.conf && sudo systemctl reload ssh
  • 别把私钥 ~/.ssh/id_ed25519 弄丢,也没有别忘了备份

关于服务器 IP 是否算敏感信息#

不算。域名有 A 记录,dig lyh-blogs.top 谁都能查到这台服务器的 IP,浏览器访问你的网站时本来也知道它,公安备案表还要求你填。IP 藏不住,也不值得藏。

真正决定安全的不是 IP 有没有被知道,而是两件事:

  • 谁能登录 —— 现在只认密钥,爆破没有着力点
  • 对外开了哪些端口 —— 只有 22(SSH)、80、443,没有多余服务

想看当前开了哪些端口:

Terminal window
sudo ss -tlnp

想看看有没有人在尝试爆破:

Terminal window
sudo fail2ban-client status sshd # 已装 fail2ban,5 次失败封 1 小时

七、简版速查#

Terminal window
pnpm new-post 文章名 # 新建文章
pnpm dev # 本地预览 localhost:4321
bash scripts/deploy-to-server.sh # 构建 + 上传 + 上线

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Profile Image of the Author
LYH
LYH,安全方向的在校学生。方向集中在 Web 安全和密码学——Web 这边从 webshell 识别、文件包含到注入类题目都在练,密码学在啃 RSA 和格密码相关的内容,逆向和网络也有涉猎。日常工具链是 Mac + Docker。欢迎交流学习!
公告
欢迎来到我的博客!这里展示我的学习过程与结果。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
站点统计
文章
26
分类
13
标签
19
总字数
180,600
运行时长
0 天
最后活动
0 天前

文章目录