# ztools-deploy **Repository Path**: lizzwnn/ztools-deploy ## Basic Information - **Project Name**: ztools-deploy - **Description**: ztools-deploy - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-08 - **Last Updated**: 2026-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ztools-deploy [itmkt.cn](https://itmkt.cn) / [book.itmkt.cn](https://book.itmkt.cn) 在阿里云 ECS 上的部署配置:nginx、webhook、各业务服务脚本与 systemd。**源码仓库**(Gitee):`tools-website`、`bookshelf-manager`、`bookshelf-api` 与本仓库并列,由 Webhook 自动部署。 ## 仓库目录 | 路径 | 说明 | |------|------| | `setup.sh` | 一键装机入口 | | `setup/config.sh`、`setup/lib.sh` | 装机参数、`gitee_clone`、`SETUP_URL_HINTS` | | `setup/webhook-repos.json` | **除主站外**的 Gitee 仓库名 → 部署脚本(相对仓库根);主站 `tools-website` 在 `webhook.py` 内置 | | `nginx/` | 主站 `default.conf`(itmkt 静态 + `/webhook` → :9001) | | `systemd/` | `webhook.service`(其余 unit 在 `services/*/`) | | `scripts/` | `webhook.py`、`deploy-itmkt.sh`(主站) | | `services/` | 附加服务:`bookshelf-api`、`bookshelf-manager`(各含 `install.sh` 等) | | `setup.d/` | 可选装机末尾脚本 | 证书 `*.pem` / `*.key` 与 `.env` 放在仓库根(`~/ztools-deploy/`),**不进 git**。 ## 服务器上路径(节选) | 路径 | 用途 | |------|------| | `/root/ztools-deploy/` | 本仓库 | | `/root/tools-website/` | 主站 Next 源码,构建产物 rsync 到 `/root/www/itmkt/` | | `/root/bookshelf-*` | 各业务源码 | | `/root/www/itmkt/` | nginx 主站静态根 | | `/root/.server_env` | `GITEE_TOKEN`、`WEBHOOK_SECRET`(setup 写入) | ## 端口与反代(摘要) | 端口 / 域名 | 后端 | |-------------|------| | 80/443 `itmkt.cn` | 静态 `/root/www/itmkt`,`/webhook` → :9001 | | 80/443 `book.itmkt.cn` | bookshelf-manager :3001 | | :8001 | bookshelf-api | | :9001 | `webhook.py` | SSL:acme.sh + Let’s Encrypt,HTTP-01 webroot `/root/www/itmkt`;主站 **`itmkt.cn`** 与 **`www.itmkt.cn`** 各签一张证书(`cn.itmkt_*` / `www.itmkt.cn_*`),非单张多域名证书。若报二次校验超时,请检查云安全组与本机防火墙是否对 **全网放行 80**。续签一般由 acme 定时任务处理。 --- ## 一键装机 **条件**:Ubuntu、root、DNS 已指向本机。 ```bash bash <(curl -sSL "https://lizzwnn:<令牌>@gitee.com/lizzwnn/ztools-deploy/raw/master/setup.sh") \ <令牌> ``` 装机步骤 0(换源)若提示重启,**直接回车跳过**。附加装哪些服务在 `setup/config.sh` 的 `SETUP_SERVICES` 中配置。 ### 新增站点(不必改 `setup.sh` / `scripts/webhook.py`) 1. 在 `services/<名>/` 增加 `install.sh`、nginx、`*.service`、`deploy-*.sh` 等。 2. **`setup/config.sh`**:`SETUP_SERVICES`、**附加域名** `SSL_SITES`、`NGINX_SITE_CONFS`、`NGINX_HTTPS_OPTIONAL`,可选 **`SETUP_URL_HINTS`**(装机结束时的访问说明)。主站 `itmkt.cn` 证书与 `nginx/default.conf` 在 **`setup.sh`** / `nginx/` 内置,不进 `SSL_SITES`。 3. **`setup/webhook-repos.json`**:增加一行 `"Gitee仓库名": "相对仓库根的部署脚本路径"`(**不要**写主站 `tools-website`)。 4. 服务器上 **`systemctl restart webhook`**(使 Python 重新读 JSON)。 --- ## Webhook 与自动部署 `git push` → Gitee → `POST http://itmkt.cn/webhook` → `scripts/webhook.py`:主站 **`tools-website`** 固定走 **`scripts/deploy-itmkt.sh`**;其余仓库按 **`setup/webhook-repos.json`**。 仓库 Webhook URL:`http://itmkt.cn/webhook`,密码令牌与 `/root/ztools-deploy/.env` 中 `WEBHOOK_SECRET` 一致。 ```bash tail -f /var/log/deploy-itmkt.log /var/log/deploy-bookshelf.log /var/log/webhook.log ``` --- ## 常用命令 ```bash systemctl status nginx webhook bookshelf-api bookshelf-manager bash /root/ztools-deploy/scripts/deploy-itmkt.sh bash /root/ztools-deploy/services/bookshelf-manager/deploy-bookshelf.sh systemctl restart bookshelf-api bookshelf-manager systemctl reload nginx /root/.acme.sh/acme.sh --renew -d itmkt.cn /root/.acme.sh/acme.sh --renew -d book.itmkt.cn ``` --- ## 注意事项(简要) - 部署脚本使用 `npm install`(非 `npm ci`),避免 lock 不一致报错。`setup.sh` 会将 **npm 全局 registry** 设为 [npmmirror](https://npmmirror.com/)(仅执行一次)。 - Webhook 对 `master` / `main` 分支的 push 都会触发;具体 `git reset` 以各 `deploy-*.sh` 为准(主站 `master`,书架 `main`)。 - bookshelf-api 无 `requirements.txt`,部署脚本内对 api 使用固定 pip 依赖列表。 - 修改 `setup/webhook-repos.json` 后需 **`systemctl restart webhook`**。 - 从旧目录结构升级:拉代码后确认 `webhook` 使用 `scripts/webhook.py`;书架 crontab 指向 `services/bookshelf-manager/` 下备份/同步脚本。 更多细节见 `services/README.md`。