# 部署脚本 ## 权限(推荐:SSH 粘贴,勿 FTP 上传 .sh) FTP 会把脚本改成 CRLF,报 `set: pipefail`。**在服务器 SSH 整段粘贴:** ```bash cd /www/wwwroot/designadmin.cardsoon.com U=www; G=www; ROOT="$PWD" mkdir -p "$ROOT/storage"/{users,logs,payment,cache/rate,cache/wechat_certs} chown -R "$U:$G" "$ROOT" find "$ROOT/src" "$ROOT/public" -type d -exec chmod 755 {} + find "$ROOT/src" "$ROOT/public" -type f -exec chmod 644 {} + chmod 755 "$ROOT/config" test -f "$ROOT/config/local.php" && chmod 640 "$ROOT/config/local.php" chmod 775 "$ROOT/storage/users" "$ROOT/storage/logs" "$ROOT/storage/cache/rate" "$ROOT/storage/cache/wechat_certs" chmod 700 "$ROOT/storage/payment" rm -f "$ROOT/storage/cache/rate/"*.json echo OK ``` ## 上线步骤 ```bash cd /www/wwwroot/designadmin.cardsoon.com ``` ```bash cp config/local.php.example config/local.php vi config/local.php ``` 改 `db`、`jwt_secret`、`site`、`storage` 路径。 ```bash mysql -u root -p soondesign < database/schema.sql php scripts/migrate-schema.php ``` `migrate-schema.php` 用于已有库增量升级(可重复执行)。再执行上面「权限」整段粘贴。 ### MySQL 大包(云端保存失败时) 若保存报「文件过大」或 `max_allowed_packet`,在宝塔 / MySQL 配置中把 `max_allowed_packet` 调到 **32M** 或以上,重启 MySQL 后生效。可临时验证: ```sql SET GLOBAL max_allowed_packet = 33554432; ``` 持久化写入 `my.cnf`(示例): ```ini [mysqld] max_allowed_packet = 32M ``` ## 初始化管理员 ```bash cd /www/wwwroot/designadmin.cardsoon.com php scripts/seed-admin.php admin@cardsoon.com cardsoon ``` 成功输出 `OK created admin` 或 `OK updated admin`。登录:`https://design.cardsoon.com/pages/admin/login.html` 模型目录:`.soon` 放后端站点(推荐,避免防跨站读不到): ```bash mkdir -p /www/wwwroot/designadmin.cardsoon.com/soonModels cp /www/wwwroot/design.cardsoon.com/soonModels/*.soon /www/wwwroot/designadmin.cardsoon.com/soonModels/ chmod 755 /www/wwwroot/designadmin.cardsoon.com/soonModels chmod 644 /www/wwwroot/designadmin.cardsoon.com/soonModels/*.soon ``` `local.php`: ```php 'models_dir' => '/www/wwwroot/designadmin.cardsoon.com/soonModels', ``` 排查: ```bash php scripts/check-soon-models.php ``` ## 宝塔 - 网站运行目录:`public` - Nginx:`/api/v1/` → `index.php`,`/api/admin/` → `admin.php` ## 配置 后端只维护 `config/local.php`(从 `local.php.example` 复制)。 前端(`design.cardsoon.com`)只维护 `config/local.js`(从 `config/local.js.example` 复制);全量更新 frontend 时不要覆盖。 ## 本地脚本 `setup-backend-perms.sh` 供 git 拉取使用;Windows/FTP 上传易坏,请用上面 SSH 粘贴块。