如何让我的Personal Agent(Muse)帮我用WordPress搭建首个个人博客的

欢迎来到奈特数据。这是这个博客的第一篇文章,记录它自己是怎么被搭建起来的——一台 RackNerd 的 VPS,一个 kejilion.sh 工具箱,加上一下午的折腾。

写在前面:这个博客的定位是记录我在部署、搭建和使用各种 IT 技术时的真实经验。踩过的坑、验证过的方案,都会原样写下来。长远一点的目标,是把这里做成一个能通过 Google AdSense 获得一点收益的技术博客。

一、方案选型:为什么没用免费主机

一开始我考虑过 alwaysdata 的免费套餐:1GB 磁盘、256MB 内存、0.25 核 CPU,跑个 WordPress 倒是勉强够。但研究下来有两个硬伤,直接劝退:

  • 免费版只能用 xxx.alwaysdata.net 二级域名,绑定自己的域名要付费。而 AdSense 审核基本不接受免费二级域名;
  • 免费版条款限定个人非盈利用途,挂广告赚钱本身就和条款冲突。

而我手里正好有现成的资源:一台 RackNerd 的 VPS(2 核 / 2.5GB 内存 / 45GB 磁盘,Ubuntu 24.04),加上 nettodata.com 这个域名。结论很明确:直接上 VPS + 自有域名,一步到位,免费主机只适合练手。

二、准备工作清单

  • VPS:RackNerd,Ubuntu 24.04(上面已经装好了 kejilion.sh 工具箱,k 命令可用)
  • 域名:nettodata.com,DNS 托管在 Cloudflare
  • 解析:@ 和 www 两条 A 记录指向 VPS 的 IP,暂时用 DNS only 模式(灰色云),等证书签好再开代理
  • 登录方式:SSH 公钥免密登录,不在任何地方传递 root 密码

三、部署实录

1. 安装 LDNMP 环境

kejilion.sh 里建站菜单是 10 LDNMP建站,但它的命令都支持非交互调用。先装环境:

k web env install full

这一步会装 Docker,然后拉起 Nginx、MySQL、PHP、Redis 四个容器。全程约 10 分钟,不需要人工干预。

2. 一键安装 WordPress

环境就绪后,一条命令建站(对应菜单里的 10 → 2 安装WordPress,是同一套流程):

k wp nettodata.com

脚本会自动完成:建数据库并授权、申请 Let’s Encrypt 证书、下载 WordPress 中文包、生成 Nginx 配置并重载。结束时直接告诉你”WordPress 搭建好了”。

3. 让 www 也能访问

脚本默认只给主域名签证书、Nginx 配置里也只有主域名的 server_name,所以 www.nettodata.com 打不开。手动补一下:

# 停掉 nginx(certbot standalone 需要占用 80 端口)
docker stop nginx
docker run --rm -p 80:80 -v /etc/letsencrypt/:/etc/letsencrypt \
  certbot/certbot certonly --standalone \
  -d nettodata.com -d www.nettodata.com \
  --agree-tos --no-eff-email --force-renewal --key-type ecdsa
# 证书拷到站点目录,nginx 配置加上 www
cp /etc/letsencrypt/live/nettodata.com/fullchain.pem /home/web/certs/nettodata.com_cert.pem
cp /etc/letsencrypt/live/nettodata.com/privkey.pem /home/web/certs/nettodata.com_key.pem
sed -i "s/server_name nettodata.com;/server_name nettodata.com www.nettodata.com;/" \
  /home/web/conf.d/nettodata.com.conf
docker start nginx && docker exec nginx nginx -t

4. wp-cli 收尾

用 wp-cli 走完安装向导、做初始配置:

docker exec php php /var/www/html/wp-cli.phar core install \
  --path=/var/www/html/nettodata.com/wordpress \
  --url=https://nettodata.com --title=NettoData \
  --admin_user=nettodata --admin_email=you@example.com --skip-email --allow-root
# 中文、时区、固定链接
wp language core install zh_CN && wp site switch-language zh_CN
wp option update timezone_string "Asia/Shanghai"
wp option update permalink_structure "/%postname%/"

至此,https://nettodata.com 正常打开,后台 /wp-admin 可登录。

四、这次踩的四个坑

坑 1:k wp --help 会直接开始安装。我想先看下这个命令的用法,结果脚本不认 --help 参数,把它吞掉后直接启动了安装流程。教训:对不熟悉的一键脚本,先读源码的分发逻辑,别拿 --help 去探。

坑 2:脚本的换源逻辑有 bug,两次写坏 apt 源。它的镜像切换会把 noble-security 的地址写成 https:///ubuntu/(空变量),导致 apt update 报错。修法是删掉坏掉的段落,手动加回 https://security.ubuntu.com/ubuntu/。以后每次跑完它的安装类操作,都要检查一遍 /etc/apt/sources.list.d/ubuntu.sources。

坑 3:脚本自检”安装失败”是误报。LDNMP 装完最后一步自检报失败,吓我一跳,实际是 nginx 容器启动慢了一步,自检跑早了。直接 docker exec nginx nginx -t 加看 80/443 监听,环境是健康的。别迷信脚本自己的进度条。

坑 4:SSH 客户端找密钥的路径和 $HOME 不一致。执行环境里 shell 的 $HOME 是 /home/hatch,但 ssh 按系统用户取家目录(root → /root),所以 ssh config 得放在 /root/.ssh/config 才生效,折腾了一会儿才定位到。

五、成本小结

  • VPS:RackNerd 年付套餐(已有)
  • 域名:nettodata.com(已有,每年续费几十块)
  • 证书:Let’s Encrypt 免费,自动续期已配置
  • CDN:Cloudflare 免费版

增量成本几乎为零。服务器放海外,中文站也不用备案,省了不少事。

六、下一步

博客骨架有了,接下来是内容。计划先写 15–25 篇原创的部署实战记录,把”关于 / 联系 / 隐私政策”三个页面补齐,持续更新一个月左右再去申请 AdSense。被拒是常态,按拒信改就行。

下一篇预告:把这次建站过程里用到的 kejilion.sh 常用命令整理成一篇速查手册。

—— 写于博客上线当天,2026 年 10 月 12 日。

发表评论