diff --git a/README.md b/README.md index c8652e9..7136473 100644 --- a/README.md +++ b/README.md @@ -108,11 +108,52 @@ 建议在开发和生产环境使用相同的 Node.js 主版本,避免依赖构建结果不一致。 -## 本地开发 +## 获取与更新项目 + +推荐使用 SSH 克隆。Gitea 的 SSH 服务使用 `2222` 端口: ```bash git clone ssh://git@git.polarisx.net:2222/mikemoi/MindScope.git cd MindScope +``` + +也可以使用 HTTPS: + +```bash +git clone https://git.polarisx.net/mikemoi/MindScope.git +cd MindScope +``` + +私有仓库通过 HTTPS 克隆时,请使用 Gitea 用户名和访问令牌,不要把账户密码或访问令牌写进命令、脚本或仓库文件。 + +服务器已经部署过项目时,使用以下命令获取最新版本并重新构建: + +```bash +cd /opt/mindscope +git pull --ff-only origin main +pnpm install --frozen-lockfile +pnpm build + +mkdir -p .next/standalone/.next +rm -rf .next/standalone/.next/static +cp -r .next/static .next/standalone/.next/static + +sudo systemctl restart mindscope +sudo systemctl status mindscope --no-pager +``` + +如果以后增加了 `public` 目录,构建后还需要同步公开静态文件: + +```bash +rm -rf .next/standalone/public +cp -r public .next/standalone/public +``` + +`.env*`、`.next`、`node_modules`、日志和本地压缩包已被 `.gitignore` 排除,执行 `git pull` 不会提交或下载这些本地运行文件。更新前如有未提交的源码修改,先运行 `git status` 检查;`git pull --ff-only` 会在分支无法安全快进时停止,而不会自动创建合并提交。 + +## 本地开发 + +```bash pnpm install --frozen-lockfile pnpm dev ``` @@ -173,7 +214,7 @@ HOSTNAME=127.0.0.1 PORT=3000 NODE_ENV=production node server.js ### systemd 服务示例 -假设项目部署到 `/opt/mindscope`,Node.js 位于 `/usr/bin/node`: +假设项目源码部署到 `/opt/mindscope`,Node.js 位于 `/usr/bin/node`: ```ini [Unit] @@ -184,11 +225,11 @@ After=network.target Type=simple User=mindscope Group=mindscope -WorkingDirectory=/opt/mindscope +WorkingDirectory=/opt/mindscope/.next/standalone Environment=NODE_ENV=production Environment=HOSTNAME=127.0.0.1 Environment=PORT=3000 -ExecStart=/usr/bin/node /opt/mindscope/server.js +ExecStart=/usr/bin/node /opt/mindscope/.next/standalone/server.js Restart=on-failure RestartSec=5 NoNewPrivileges=true