Skip to content

部署 jy-admin 管理端

部署模式

Next.js Standalone 预构建包 + systemd + Nginx 反代

text
本机 pnpm build → .next/standalone → tar(排除 .env)→ scp
→ 服务器 /opt/web/jy-admin → systemctl restart jy-admin
→ Nginx https://admin.jianyi.my → 127.0.0.1:5174

本机构建

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

bash
cd jy-admin
NODE_ENV=production pnpm build
rm -f .next/standalone/.env                    # 确保不把本地密钥打进包
cp -R .next/static .next/standalone/.next/static
cp -R public .next/standalone/public
COPYFILE_DISABLE=1 tar -C .next/standalone \
  --exclude '.env' --exclude '.env.*' \
  -czf /tmp/jy-admin-standalone.tgz .

服务器部署

bash
scp /tmp/jy-admin-standalone.tgz jy-test:/tmp/
ssh jy-test 'set -e
  systemctl stop jy-admin
  cp -a /opt/web/jy-admin /opt/web/jy-admin.bak.$(date +%Y%m%d-%H%M%S)
  cp -a /opt/web/jy-admin/.env /tmp/jy-admin.env.keep
  rm -rf /opt/web/jy-admin && mkdir -p /opt/web/jy-admin
  tar -xzf /tmp/jy-admin-standalone.tgz -C /opt/web/jy-admin
  cp -a /tmp/jy-admin.env.keep /opt/web/jy-admin/.env
  chmod 600 /opt/web/jy-admin/.env
  systemctl start jy-admin
'

必须保留服务器原有 .env(数据库、SESSION_SECRET、GITHUB_*)。

systemd

Unit:/etc/systemd/system/jy-admin.service

ini
WorkingDirectory=/opt/web/jy-admin
EnvironmentFile=/opt/web/jy-admin/.env
ExecStart=/usr/local/bin/node server.js

常用:

bash
systemctl status jy-admin
systemctl restart jy-admin      # 改 .env 后
journalctl -u jy-admin -n 80 --no-pager

服务器 .env 要点

变量说明
DATABASE_*生产用 127.0.0.1,用户 blog
SESSION_SECRET≥32 字符
GITHUB_REPOSITORYjianyi241/jy-site
GITHUB_TOKEN能发 repository_dispatch 的 PAT

只改 .env不必重新 build 管理端,只需 restart

与静态站部署的区别

jy-sitejy-admin
产物build/ HTMLserver.js + 精简 node_modules
服务器进程systemd 常驻 Node
Nginxroot 静态proxy_pass 反代
自动 CI有(Actions)(目前手动 scp)

验证

bash
curl -sI https://admin.jianyi.my/login | head -1
# HTTP/2 200

设置页「GitHub Token」显示已配置 → 可点「构建并部署」。

延伸阅读

JY 项目文档