Add PM2 deployment support
This commit is contained in:
@@ -56,31 +56,10 @@ cp .env.example .env
|
||||
编辑 `.env`:
|
||||
|
||||
- 将 `FEEDBACK_DOMAIN` 改为真实域名
|
||||
- 用至少 32 字节的随机值替换 `APP_SECRET`
|
||||
- 设置 `INITIAL_ADMIN_EMAIL` 和 `INITIAL_ADMIN_PASSWORD`
|
||||
- 可按需设置 `INITIAL_ADMIN_NAME`
|
||||
|
||||
可用以下方式生成 secret:
|
||||
|
||||
```sh
|
||||
APP_SECRET="$(openssl rand -hex 32)"
|
||||
sed -i "s|^APP_SECRET=.*|APP_SECRET=${APP_SECRET}|" .env
|
||||
unset APP_SECRET
|
||||
chmod 600 .env
|
||||
```
|
||||
|
||||
构建镜像并创建首个管理员:
|
||||
|
||||
```sh
|
||||
docker compose build
|
||||
read -rsp "Administrator password: " PRODUCT_ISSUE_ADMIN_PASSWORD
|
||||
echo
|
||||
export PRODUCT_ISSUE_ADMIN_PASSWORD
|
||||
docker compose run --rm \
|
||||
-e PRODUCT_ISSUE_ADMIN_PASSWORD \
|
||||
app node dist/server/server/cli/create-admin.js \
|
||||
--email admin@example.com \
|
||||
--name "MesaLogo Admin"
|
||||
unset PRODUCT_ISSUE_ADMIN_PASSWORD
|
||||
```
|
||||
`APP_SECRET` 可以留空,应用会在数据目录生成并持久化随机 secret。
|
||||
|
||||
启动服务:
|
||||
|
||||
@@ -90,17 +69,23 @@ docker compose ps
|
||||
curl "https://feedback.example.com/health"
|
||||
```
|
||||
|
||||
首次启动只在数据库没有管理员时根据 `.env` 创建初始管理员,不会在后续
|
||||
重启时重置密码。创建完成后建议从 `.env` 删除
|
||||
`INITIAL_ADMIN_PASSWORD`。
|
||||
|
||||
将示例域名替换为 `.env` 中的真实域名。管理后台位于
|
||||
`https://你的域名/admin/`。
|
||||
|
||||
> 管理员创建命令也用于密码重置。重置后,该管理员的所有既有会话会立即
|
||||
> 失效。不要把密码写入 `.env`、命令参数或 Git。
|
||||
> `admin:create` 命令仍可用于创建或重置其他管理员。重置后,该管理员的
|
||||
> 所有既有会话会立即失效。
|
||||
|
||||
## 本地开发
|
||||
|
||||
要求 Node.js 24 或更新版本。
|
||||
|
||||
```sh
|
||||
cp .env.example .env
|
||||
# 示例配置可直接启动;对外部署前必须修改初始管理员凭据
|
||||
npm ci
|
||||
npm run typecheck
|
||||
npm test
|
||||
@@ -108,9 +93,12 @@ npm run lint
|
||||
npm run build
|
||||
```
|
||||
|
||||
开发服务器需要通过进程环境提供 `APP_SECRET` 和其他配置。后端默认监听
|
||||
`127.0.0.1:3000`,管理后台 Vite 服务默认监听 `127.0.0.1:5174` 并代理
|
||||
`/api`:
|
||||
Node 后端和管理员 CLI 会自动读取项目根目录的 `.env`。已由 shell、PM2
|
||||
或系统服务注入的同名环境变量优先,不会被文件中的值覆盖。可通过
|
||||
`ENV_FILE=/path/to/file` 指定其他配置文件。
|
||||
|
||||
后端默认监听 `127.0.0.1:3000`,管理后台 Vite 服务默认监听
|
||||
`127.0.0.1:5174` 并代理 `/api`:
|
||||
|
||||
```sh
|
||||
npm run dev
|
||||
@@ -118,6 +106,27 @@ npm run dev
|
||||
npm run dev:admin
|
||||
```
|
||||
|
||||
## PM2 运行
|
||||
|
||||
没有 Docker 时可使用 PM2 直接管理构建后的 Node 进程:
|
||||
|
||||
```sh
|
||||
npm install --global pm2
|
||||
cp .env.example .env
|
||||
# 示例配置可直接启动;生产环境必须先修改初始管理员凭据
|
||||
npm run pm2:start
|
||||
pm2 save
|
||||
```
|
||||
|
||||
初始管理员仅在数据库为空时创建。确认可以登录后,建议删除 `.env` 中的
|
||||
`INITIAL_ADMIN_PASSWORD`,再执行 `npm run pm2:reload`。未设置
|
||||
`APP_SECRET` 时,应用会把自动生成的 secret 保存到
|
||||
`DATA_DIRECTORY/.app-secret`。
|
||||
|
||||
更新代码后运行 `npm run pm2:reload`,查看日志使用
|
||||
`pm2 logs product-issue`。默认访问地址为
|
||||
`http://127.0.0.1:3000/admin/`。
|
||||
|
||||
## 文档
|
||||
|
||||
- [公共 API 契约](docs/api.md)
|
||||
|
||||
Reference in New Issue
Block a user