52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
/* eslint-disable @typescript-eslint/no-require-imports */
|
||
/**
|
||
* 玩家端(lotteryfront)宝塔 PM2 配置
|
||
*
|
||
* 部署步骤(在服务器项目目录执行):
|
||
* 1. 本地 npm run build,打包 .next/standalone + .next/static + public 上传服务器
|
||
* 2. 服务器:复制 .env.example 为 .env,按线上域名填写(见下方 env 说明)
|
||
* 3. 修改下方 cwd 为服务器上的实际路径
|
||
* 4. pm2 start ecosystem.config.cjs
|
||
* 5. pm2 save && pm2 startup # 开机自启(按 PM2 提示执行)
|
||
*
|
||
* 宝塔:网站 → Node 项目 → PM2 管理器 → 添加项目 → 选择本文件,或 SSH 执行 pm2 start。
|
||
* Nginx:反代到 127.0.0.1:3800 即可;/api 由 Next 转发到 LOTTERY_API_UPSTREAM,无需单独配。
|
||
*/
|
||
|
||
const path = require("path");
|
||
|
||
/** 改成服务器上的绝对路径,例如 /www/wwwroot/lottery.yourdomain.com */
|
||
const DEPLOY_ROOT = path.resolve(__dirname);
|
||
// deploy.sh uploads the standalone bundle to app/. Keep runtime and static assets
|
||
// on the same build so Next.js chunk references cannot become mismatched.
|
||
const APP_CWD = path.join(DEPLOY_ROOT, "app");
|
||
|
||
module.exports = {
|
||
apps: [
|
||
{
|
||
name: "lotteryfront",
|
||
cwd: APP_CWD,
|
||
script: "server.js",
|
||
interpreter: "node",
|
||
exec_mode: "fork",
|
||
instances: 1,
|
||
autorestart: true,
|
||
watch: false,
|
||
max_memory_restart: "1G",
|
||
time: true,
|
||
merge_logs: true,
|
||
out_file: path.join(DEPLOY_ROOT, "logs/pm2-out.log"),
|
||
error_file: path.join(DEPLOY_ROOT, "logs/pm2-error.log"),
|
||
|
||
env: {
|
||
NODE_ENV: "production",
|
||
HOSTNAME: "0.0.0.0",
|
||
PORT: "3800",
|
||
},
|
||
|
||
// LOTTERY_API_UPSTREAM、NEXT_PUBLIC_* 写在 .env;勿在此硬编码 LOTTERY_API_UPSTREAM
|
||
env_file: path.join(DEPLOY_ROOT, ".env"),
|
||
},
|
||
],
|
||
};
|