Skip to content

部署管理端 jy-admin

管理端是 Next.js 15,不能当静态站丢给 Nginx。生产形态:standalone Node 听 127.0.0.1:5174,Nginx 反代 admin.jianyi.my,Let's Encrypt 证书。

为什么不能直接装官网 Node 22

CentOS 7 的 glibc 是 2.17。官网 node-v22-linux-x64 会报:

text
GLIBC_2.27 not found
GLIBCXX_3.4.21 not found

使用 unofficial-builds 的 glibc-217 包:

text
https://unofficial-builds.nodejs.org/download/release/v22.22.1/node-v22.22.1-linux-x64-glibc-217.tar.gz

装到 /usr/local/node-v22,并把 node / npm 链到 /usr/local/bin

构建

jy-admin/next.config.ts 已设 output: 'standalone'

bash
cd jy-admin
NODE_ENV=production pnpm build
cp -R .next/static .next/standalone/.next/static
cp -R public .next/standalone/public

不要把本机 .env 打进包。服务器上单独写生产环境变量:同机 MySQL 用 127.0.0.1,用户 blog

systemd

单元文件:/etc/systemd/system/jy-admin.service

ini
[Unit]
Description=jy-admin Next.js
After=network.target mysqld.service

[Service]
Type=simple
WorkingDirectory=/opt/web/jy-admin
Environment=NODE_ENV=production
Environment=PORT=5174
Environment=HOSTNAME=127.0.0.1
EnvironmentFile=/opt/web/jy-admin/.env
ExecStart=/usr/local/bin/node server.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
bash
systemctl enable --now jy-admin
systemctl status jy-admin

Nginx + 证书

配置放在 /etc/nginx/conf.d/admin.jianyi.my.conf,先只听 80,再申请证书:

bash
certbot --nginx -d admin.jianyi.my --redirect

证书目录:/etc/letsencrypt/live/admin.jianyi.my/。续期:certbot renew(机器上已有 certbot)。

DNS 必须先把 admin.jianyi.my A 记录指到 154.89.148.95。本机如果开了 Clash Fake-IP,dig 可能看到 198.18.0.x,以服务器上的 getent hosts 为准。

登录

SQL dump 的密码哈希是假的。部署时已为 admin 写入真实 bcrypt。账号密码见这次对话,不要写进公开文档或 Git

生产环境 NODE_ENV=production 时 session cookie 为 secure,必须走 HTTPS,否则登录态种不上。

常用维护

bash
ssh jy-test 'journalctl -u jy-admin -n 80 --no-pager'
ssh jy-test 'systemctl restart jy-admin'

JY 项目文档