diff --git a/.gitignore b/.gitignore index 0eabf33..d0d38f4 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,8 @@ demo/ demo/ docs/ bin/ +dist/ + # OS @@ -39,4 +41,4 @@ Thumbs.db web/node_modules/ dist/ -etc/license.yaml +etc/license.yaml diff --git a/README.md b/README.md index 0ed4936..dff71da 100644 --- a/README.md +++ b/README.md @@ -171,44 +171,45 @@ go run .\cmd\root-keygen ` ## Linux 部署 -项目提供了 Linux systemd 和 Nginx 配置模板: +项目提供了 Linux systemd 和 Caddy 配置模板: - `deploy/ops-licence.service` -- `deploy/nginx.conf` +- `deploy/ops-license-ca.conf`(Caddy) +- `deploy/ops-license.conf`(Nginx,可选) ### 文件位置 建议按模板放置: ```text -/usr/local/bin/ops-licence -/etc/ops-licence/ops-licence.yaml -/etc/ops-licence/keys/signing-private.pem -/etc/ops-licence/keys/signing-certificate.json -/var/lib/ops-licence +/data/app/ops-licence +/data/app/etc/license.yaml +/data/app/etc/signing-private.pem +/data/app/etc/signing-certificate.json ``` Linux YAML 示例: ```yaml server: - listen_addr: "127.0.0.1:8080" + listen_addr: "127.0.0.1:14522" database: dsn: "postgresql://username:password@database-host:5432/ops_licence?sslmode=disable" signing: - private_key_file: "/etc/ops-licence/keys/signing-private.pem" - certificate_file: "/etc/ops-licence/keys/signing-certificate.json" + private_key_file: "/data/app/etc/signing-private.pem" + certificate_file: "/data/app/etc/signing-certificate.json" ``` ### systemd -创建与模板一致的 `ops-licence` 系统用户和目录后,安装并启动服务: +文件放到 `/data/app` 后,安装并启动服务: ```bash -sudo install -m 0755 dist/ops-licence /usr/local/bin/ops-licence -sudo install -m 0644 deploy/ops-licence.service /etc/systemd/system/ops-licence.service +cd /data/app +chmod 0755 ./ops-licence +sudo install -m 0644 etc/ops-licence.service /etc/systemd/system/ops-licence.service sudo systemctl daemon-reload sudo systemctl enable --now ops-licence sudo systemctl status ops-licence @@ -220,12 +221,25 @@ sudo systemctl status ops-licence sudo journalctl -u ops-licence -f ``` -### Nginx +### Caddy -`deploy/nginx.conf` 将 HTTPS 请求反向代理到 `127.0.0.1:8080`。部署时将其中证书路径替换为实际路径,并把配置放入 Nginx 的站点配置目录后重新加载 Nginx。 +`deploy/ops-license-ca.conf` 将 `licence.apinb.com` 的 HTTPS 请求反向代理到 `127.0.0.1:14522`,并使用本地证书文件。部署时按实际域名和证书路径修改后,并入主 Caddyfile 或单独加载: -Go 可执行文件已经包含前端资源,Nginx 只需要代理所有路径,不需要另外复制 `web/dist`。 +```bash +sudo caddy validate --config deploy/ops-license-ca.conf +sudo systemctl reload caddy +``` +配置示例: + +```caddyfile +licence.apinb.com { + tls /data/licence/apinb.com.pem /data/licence/apinb.com.key + reverse_proxy 127.0.0.1:14522 +} +``` + +Go 可执行文件已经包含前端资源,Caddy 只需要反向代理所有路径,不需要另外复制 `web/dist`。 ## Go SDK 接入 将整个 `sdk/licence` 目录复制到目标 Go 项目中,保持目录内所有文件完整。目标项目不需要连接许可证管理系统。 @@ -329,7 +343,7 @@ go build -buildvcs=false -o dist\ops-licence .\cmd\ops-licence ```text cmd/ops-licence 服务与签发密钥命令 cmd/root-keygen 根密钥生成工具 -deploy Linux systemd 与 Nginx 模板 +deploy Linux systemd 与 Caddy/Nginx 模板 docs 设计、实施与使用文档 etc 本地 YAML 配置 internal 服务端实现、数据库迁移和内嵌前端 diff --git a/deploy/nginx.conf b/deploy/nginx.conf deleted file mode 100644 index ed87475..0000000 --- a/deploy/nginx.conf +++ /dev/null @@ -1,11 +0,0 @@ -server { - listen 443 ssl; - server_name _; - - ssl_certificate /etc/nginx/tls/ops-licence.crt; - ssl_certificate_key /etc/nginx/tls/ops-licence.key; - - location / { - proxy_pass http://127.0.0.1:8080; - } -} diff --git a/deploy/ops-licence.service b/deploy/ops-licence.service index 00d44b7..e29181c 100644 --- a/deploy/ops-licence.service +++ b/deploy/ops-licence.service @@ -4,10 +4,8 @@ After=network.target [Service] Type=simple -User=ops-licence -Group=ops-licence -WorkingDirectory=/var/lib/ops-licence -ExecStart=/usr/local/bin/ops-licence serve --config /etc/ops-licence/ops-licence.yaml +WorkingDirectory=/data/app +ExecStart=/data/app/ops-licence serve --config /data/app/etc/license.yaml Restart=on-failure [Install] diff --git a/deploy/ops-license-ca.conf b/deploy/ops-license-ca.conf new file mode 100644 index 0000000..170bc9d --- /dev/null +++ b/deploy/ops-license-ca.conf @@ -0,0 +1,4 @@ +licence.apinb.com { + tls /data/licence/apinb.com.pem /data/licence/apinb.com.key + reverse_proxy 127.0.0.1:14522 +} diff --git a/deploy/ops-license.conf b/deploy/ops-license.conf new file mode 100644 index 0000000..d09187f --- /dev/null +++ b/deploy/ops-license.conf @@ -0,0 +1,11 @@ +server { + listen 443 ssl; + server_name licence.apinb.com; + + ssl_certificate /data/licence/apinb.com.pem; + ssl_certificate_key /data/licence/apinb.com.key; + + location / { + proxy_pass http://127.0.0.1:14522; + } +} diff --git a/dist/ops-licence b/dist/ops-licence deleted file mode 100644 index 174cecb..0000000 Binary files a/dist/ops-licence and /dev/null differ diff --git a/etc/license.yaml b/etc/license.yaml index 61626f2..863056e 100644 --- a/etc/license.yaml +++ b/etc/license.yaml @@ -5,5 +5,8 @@ database: dsn: "postgresql://postgres:Weidong2023~!@8.137.107.29:19432/ops_licence?sslmode=disable" signing: - private_key_file: 'D:\work\license-secrets\issuer-a\signing-private.pem' - certificate_file: 'D:\work\license-secrets\issuer-a\signing-certificate.json' \ No newline at end of file + private_key_file: "/data/app/etc/signing-private.pem" + certificate_file: "/data/app/etc/signing-certificate.json" +# signing: +# private_key_file: 'D:\work\license-secrets\issuer-a\signing-private.pem' +# certificate_file: 'D:\work\license-secrets\issuer-a\signing-certificate.json' \ No newline at end of file