跳到正文
Hachito
1 分钟阅读459

这台服务器上不止有博客

部署这个博客之前,先做了一次服务器勘察。结果发现这台机器早就不是「闲置服务器」了。

勘察结果

登录上去一看,跑着的东西比我预想的多得多:

服务 端口 内存占用
AstrBot 6185 / 6199 ~1.2 GB
NapCat (QQ) 6099 ~0.8 GB
宝塔面板 8889 ~0.2 GB
MySQL 3306 ~0.15 GB
Nginx 80 / 888 ~0.12 GB

总共 3.9 GB 内存,已经用掉 2.1 GB,而且没有 swap

这直接决定了三件事:

  1. 不能在服务器上跑 next build 构建峰值内存能到 1.5 GB,足够把 QQ 机器人 OOM 掉。所以改成本地构建、上传产物。
  2. 不能抢 80 端口。 80 已经被宝塔的 Nginx 占着,正确做法是让 Next.js 监听 127.0.0.1:3000,由 Nginx 反向代理过去。
  3. 必须给博客进程设内存上限。 systemd 的 MemoryMax 可以做到——配置写成这样,博客再怎么泄漏也挤不到别人:
[Service]
MemoryMax=512M
MemoryHigh=384M

关于 Nginx 配置的一个坑

宝塔面板管理的 Nginx 配置文件,会被面板重新生成。所以不要直接改它生成的那些 .conf,否则某次点「保存」就被覆盖了。

正确做法是放一个面板不认识的文件。宝塔的主配置里有这一行:

include /www/server/panel/vhost/nginx/*.conf;

所以只要新建一个 0-blog.conf,用 default_server 抢占 80 端口的默认站点,面板既不会覆盖它,Nginx 也会正常加载。

server {
    listen 80 default_server;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

改完一定要 nginx -t 验证语法,再 reload。直接 restart 万一配置有错,Nginx 起不来,上面所有站点一起挂。

域名的事

这台机器在美国,所以不需要 ICP 备案,域名下来了直接上 443 就行。在那之前先用 http://IP 访问,架构上留好了切换的口子——站点地址是运行时读环境变量的,换域名不用重新构建。