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。
这直接决定了三件事:
- 不能在服务器上跑
next build。 构建峰值内存能到 1.5 GB,足够把 QQ 机器人 OOM 掉。所以改成本地构建、上传产物。 - 不能抢 80 端口。 80 已经被宝塔的 Nginx 占着,正确做法是让 Next.js 监听
127.0.0.1:3000,由 Nginx 反向代理过去。 - 必须给博客进程设内存上限。 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 访问,架构上留好了切换的口子——站点地址是运行时读环境变量的,换域名不用重新构建。