Skip to content

iOS 超级签名系统 - 宝塔面板部署文档

目录


系统要求

服务器配置

  • 操作系统: CentOS 7+ / Ubuntu 18.04+
  • CPU: 2核心及以上
  • 内存: 4GB 及以上
  • 磁盘: 50GB 及以上(根据 IPA 文件存储需求调整)

软件环境

  • 宝塔面板: 7.x 或更高版本
  • MySQL: 5.7+ 或 MariaDB 10.3+
  • Nginx: 1.18+

准备工作

1. 安装宝塔面板

bash
# CentOS 安装命令
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh

# Ubuntu 安装命令
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

2. 安装必要软件

登录宝塔面板后,在 软件商店 安装:

  • Nginx 1.18+
  • MySQL 5.7+ 或 MariaDB 10.3+

3. 准备项目文件

将以下文件准备好:

  • 主程序压缩包
  • 授权码

数据库配置

1. 创建数据库

在宝塔面板 数据库 菜单中:

  1. 点击 添加数据库
  2. 填写信息:
    • 数据库名: ios_super_sign
    • 用户名: ios_sign_user
    • 密码: 设置强密码(记住此密码,后续配置需要)
    • 访问权限: 本地服务器
  3. 点击 提交

快速部署步骤

第一步:创建站点目录

  1. 登录宝塔面板
  2. 点击 文件 -> 进入 /www/wwwroot/
  3. 创建站点目录,例如:example.com
  4. 在站点目录下创建以下子目录:
    • admin/ - 管理后台前端
    • web/ - 用户前端
    • server/ - Go 后端

第二步:上传项目文件

  1. 上传压缩包:

    • Y1证书站.zip - 项目安装包
  2. 使用宝塔文件管理器上传压缩包:

    • 点击 文件 -> 进入 /www/wwwroot/example.com/
    • 点击 上传 -> 选择压缩包文件上传
    • 上传完成后,右键点击压缩包 -> 解压
    • 解压后删除压缩包
  3. 最终目录结构:

/www/wwwroot/example.com/
├── admin/          # 管理后台前端
│   ├── assets/
│   ├── index.html
│   └── ...
├── web/            # 用户前端
│   ├── assets/
│   ├── index.html
│   └── ...
└── server/         # Go 后端
    └── server      # 可执行文件
  1. 设置 server 文件权限:
bash
chmod +x /www/wwwroot/example.com/server/server
mkdir -p /www/wwwroot/example.com/server/uploads/{icons,images,ipa}
chmod -R 755 /www/wwwroot/example.com/server/uploads

第三步:添加 GO 项目

  1. 点击 网站 -> GO 项目 -> 添加项目
  2. 填写配置:
    • 项目执行文件: 点击选择,找到 /www/wwwroot/example.com/server/server
    • 项目名称: ios_udid
    • 项目端口: 8090
    • 环境变量: 点击添加,逐行输入以下内容:
      DB_HOST=127.0.0.1
      DB_PORT=3306
      DB_USER=ios_sign_user
      DB_PASSWORD=你的数据库密码
      DB_NAME=ios_super_sign
    • 运行用户: root
    • 开机启动: 勾选
    • 绑定域名: 输入你的域名(例如:example.com)
  3. 点击 确定

注意: 添加 GO 项目后,宝塔会自动创建网站配置,无需手动添加站点。

第四步:配置 SSL 证书(必须先配置)

  1. 网站 列表中找到你的站点
  2. 点击 设置 -> SSL
  3. 选择 Let's Encrypt 或上传自有证书
  4. 申请/上传证书后,开启 强制 HTTPS

第五步:修改 Nginx 配置文件

  1. 点击站点的 设置 -> 配置文件
  2. 将配置文件内容替换为以下内容:
nginx
server {
    listen 80;
    listen 443 ssl http2;
    server_name example.com;  # 替换为你的域名
    index index.html index.htm default.htm default.html;
    root /www/wwwroot/example.com/web;  # 替换为你的域名
    
    include /www/server/panel/vhost/nginx/extension/ios_udid/*.conf;
    
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/ios_udid.conf;
    #CERT-APPLY-CHECK--END
    
    #SSL-START SSL相关配置
    #error_page 404/404.html;
    
    #HTTP_TO_HTTPS_START
    set $isRedcert 1;
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    
    ssl_certificate    /www/server/panel/vhost/cert/ios_udid/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/ios_udid/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497 https://$host$request_uri;
    #SSL-END
    
    #ERROR-PAGE-START  错误页相关配置
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #REWRITE-START 伪静态相关配置
    include /www/server/panel/vhost/rewrite/go_ios_udid.conf;
    #REWRITE-END
    
    # 禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|package.json|package-lock.json|\.env) {
        return 404;
    }
    
    # 一键申请SSL证书验证目录相关设置
    location /.well-known/ {
        root /www/wwwroot/java_node_ssl;
    }
    
    # 禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }
    
    # 管理后台前端
    location /admin {
        alias /www/wwwroot/example.com/admin;  # 替换为你的域名
        index index.html;
        try_files $uri $uri/ /admin/index.html;
    }
    
    # API代理到后端
    location /api {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Host $host:$server_port;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 30s;
        proxy_read_timeout 86400s;
        proxy_send_timeout 30s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 文件上传大小限制
        client_max_body_size 500M;
    }
    
    # 上传文件访问
    location /uploads {
        alias /www/wwwroot/example.com/server/uploads;  # 替换为你的域名
    }
    
    # 用户端前端
    location / {
        root /www/wwwroot/example.com/web;  # 替换为你的域名
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    
    access_log /www/wwwlogs/ios_udid.log;
    error_log /www/wwwlogs/ios_udid.error.log;
    
    #Monitor-Config-Start 网站监控报表日志发送配置
    access_log syslog:server=unix:/tmp/bt-monitor.sock,nohostname,tag=190__access monitor;
    error_log syslog:server=unix:/tmp/bt-monitor.sock,nohostname,tag=190__error;
    #Monitor-Config-End
}
  1. 重要: 使用编辑器的 查找替换 功能:
    • 查找:example.com
    • 替换为:你的实际域名
  2. 点击 保存

第六步:重启项目

  1. 点击 网站 -> GO 项目
  2. 找到 ios_udid 项目
  3. 点击 重启
  4. 查看状态是否为 运行中

第七步:访问测试

部署完成! 🎉


详细配置说明

环境变量说明

在添加 GO 项目时配置的环境变量:

变量名说明示例值
DB_HOST数据库地址127.0.0.1
DB_PORT数据库端口3306
DB_USER数据库用户名ios_sign_user
DB_PASSWORD数据库密码你创建数据库时设置的密码
DB_NAME数据库名称ios_super_sign

目录结构说明

/www/wwwroot/example.com/
├── admin/                      # 管理后台前端
│   ├── assets/                 # 静态资源
│   ├── index.html              # 入口文件
│   └── favicon.ico             # 图标
├── web/                        # 用户前端
│   ├── assets/                 # 静态资源
│   ├── index.html              # 入口文件
│   └── favicon.ico             # 图标
└── server/                     # Go 后端
    ├── server                  # 可执行文件
    └── uploads/                # 上传文件
        ├── icons/              # 应用图标
        ├── images/             # 图片
        └── ipa/                # IPA 文件

端口说明

  • 80: HTTP 访问端口
  • 443: HTTPS 访问端口
  • 8090: 后端 API 端口(内部,不对外开放)
  • 3306: MySQL 数据库端口(内部,不对外开放)

常见问题

1. 后端无法启动

问题: GO 项目显示状态异常或停止

解决方案:

bash
# 方式一:通过宝塔面板查看
# 网站 -> GO 项目 -> 找到 ios_udid -> 点击日志

# 方式二:通过命令行查看
tail -f /www/wwwlogs/ios_udid.error.log

# 检查端口占用
netstat -tunlp | grep 8090

# 检查文件权限
ls -la /www/wwwroot/example.com/server/server

# 手动测试运行
cd /www/wwwroot/example.com/server
./server

常见错误:

  • 权限不足: 执行 chmod +x server
  • 端口被占用: 修改项目端口或停止占用端口的进程
  • 数据库连接失败: 检查环境变量中的数据库配置是否正确

2. 前端页面空白

问题: 访问前端显示空白页面或 404

解决方案:

bash
# 检查文件是否上传完整
ls -la /www/wwwroot/example.com/admin
ls -la /www/wwwroot/example.com/web

# 检查 Nginx 配置
nginx -t

# 重启 Nginx
nginx -s reload

检查浏览器控制台:

  1. 按 F12 打开开发者工具
  2. 查看 Console 标签页是否有错误
  3. 查看 Network 标签页检查资源加载情况

3. API 请求 404 或 502

问题: 前端请求后端 API 返回 404 或 502

解决方案:

bash
# 检查后端是否运行
# 宝塔面板 -> 网站 -> GO 项目 -> 查看 ios_udid 状态

# 测试 API 直接访问
curl http://localhost:8090/api/config/public

# 检查 Nginx 代理配置
cat /www/server/panel/vhost/nginx/example.com.conf | grep proxy_pass

# 查看后端日志
tail -f /www/wwwlogs/ios_udid.error.log

4. 文件上传失败

问题: 上传 IPA 或图片失败,提示文件过大或上传错误

解决方案:

bash
# 检查上传目录权限
ls -la /www/wwwroot/example.com/server/uploads

# 修改权限
chmod -R 755 /www/wwwroot/example.com/server/uploads

# 检查 Nginx 上传大小限制(已在配置中设置为 500M)
# 如需修改,在 location /api 中添加:
# client_max_body_size 1000M;

5. SSL 证书问题

问题: HTTPS 访问提示证书错误或无法访问

解决方案:

  1. 确认证书已正确申请/上传
  2. 检查证书路径是否正确
  3. 确认防火墙已开放 443 端口
  4. 重启 Nginx: nginx -s reload

6. 管理后台无法登录

问题: 输入默认账号密码无法登录

默认账号:

  • 用户名: admin
  • 密码: admin123

如需重置密码,连接数据库执行:

sql
-- 通过宝塔面板数据库管理工具或命令行执行
UPDATE users SET password = '重置后的密码哈希' WHERE username = 'admin';

7. 环境变量不生效

问题: 后端无法连接数据库,提示连接失败

解决方案:

  1. 检查 GO 项目配置中的环境变量是否正确填写
  2. 确认数据库密码没有特殊字符(如有,需要转义)
  3. 重启 GO 项目使环境变量生效
  4. 查看项目日志确认环境变量是否被正确读取

维护与更新

1. 更新后端

bash
# 停止后端服务
# 宝塔面板 -> 网站 -> GO 项目 -> 停止 ios_udid

# 备份旧版本
cp /www/wwwroot/example.com/server/server /www/wwwroot/example.com/server/server.bak

# 上传新版本
# 使用 FTP 或宝塔文件管理器上传新的 server 文件

# 设置权限
chmod +x /www/wwwroot/example.com/server/server

# 启动服务
# 宝塔面板 -> 网站 -> GO 项目 -> 启动 ios_udid

# 查看日志确认启动成功
# 宝塔面板 -> 网站 -> GO 项目 -> 日志

2. 更新前端

bash
# 备份旧版本
cd /www/wwwroot/example.com
tar -czf admin_backup_$(date +%Y%m%d).tar.gz admin
tar -czf web_backup_$(date +%Y%m%d).tar.gz web

# 删除旧文件
rm -rf admin/*
rm -rf web/*

# 上传新版本
# 使用 FTP 或宝塔文件管理器上传新的构建文件

# 设置权限
chmod -R 755 admin web

# 清理浏览器缓存
# 访问网站时按 Ctrl+F5 强制刷新

3. 数据库备份

方式一:通过宝塔面板(推荐)

  1. 进入 数据库 菜单
  2. 找到 ios_super_sign 数据库
  3. 点击 备份
  4. 设置 计划任务 实现自动备份(推荐每天凌晨 2 点)

方式二:通过命令行

bash
# 手动备份
mysqldump -u ios_sign_user -p ios_super_sign > backup_$(date +%Y%m%d).sql

# 设置定时备份(crontab)
crontab -e
# 添加以下行(每天凌晨 2 点备份)
0 2 * * * mysqldump -u ios_sign_user -p'your_password' ios_super_sign > /www/backup/db_$(date +\%Y\%m\%d).sql

4. 日志管理

bash
# 查看后端日志
# 宝塔面板 -> 网站 -> GO 项目 -> ios_udid -> 日志

# 查看 Nginx 访问日志
tail -f /www/wwwlogs/ios_udid.log

# 查看 Nginx 错误日志
tail -f /www/wwwlogs/ios_udid.error.log

# 清理旧日志(保留最近 30 天)
find /www/wwwlogs -name "*.log" -mtime +30 -delete

5. 性能优化

清理 Gzip 压缩文件

如果磁盘空间紧张,可以删除预压缩的 .gz 文件(Nginx 会实时压缩):

bash
find /www/wwwroot/example.com -name "*.gz" -type f -delete

数据库优化

sql
-- 定期优化表
OPTIMIZE TABLE users, devices, fa_deviceslist;

-- 添加索引(如果需要)
CREATE INDEX idx_username ON users(username);
CREATE INDEX idx_kid ON fa_deviceslist(kid);

安全建议

1. 修改默认管理员密码

首次登录后,立即修改默认管理员密码:

  1. 登录管理后台
  2. 进入 个人中心
  3. 修改密码为强密码

2. 配置防火墙

在宝塔面板 安全 菜单中:

  • 只开放 80、443 端口
  • 后端端口(8090)不对外开放
  • 开启 SSH 端口修改和密钥登录
  • 开启 系统加固

3. 定期更新

  • 定期更新宝塔面板
  • 定期更新 Nginx、MySQL
  • 定期更新项目代码
  • 关注安全公告

4. 备份策略

  • 数据库: 每天自动备份,保留 7 天
  • 上传文件: 每周备份,保留 4 周
  • 配置文件: 每次修改前手动备份
  • 异地备份: 定期将备份文件下载到本地

5. 监控告警

在宝塔面板中配置:

  • 网站监控: 监控网站可用性
  • 服务器监控: 监控 CPU、内存、磁盘使用率
  • 告警通知: 配置邮件或微信通知

附录

完整部署检查清单

  • [ ] 宝塔面板已安装
  • [ ] Nginx、MySQL 已安装
  • [ ] 数据库已创建并导入结构
  • [ ] 站点目录已创建
  • [ ] 前端文件已上传(admin、web)
  • [ ] 后端文件已上传(server/server)
  • [ ] 后端文件权限已设置(chmod +x)
  • [ ] 上传目录已创建(uploads)
  • [ ] GO 项目已添加并配置环境变量
  • [ ] SSL 证书已配置
  • [ ] Nginx 配置文件已修改
  • [ ] 域名已替换为实际域名
  • [ ] GO 项目已启动
  • [ ] 前端可正常访问
  • [ ] 管理后台可正常登录
  • [ ] API 接口正常响应
  • [ ] 文件上传功能正常
  • [ ] 数据库自动备份已配置

项目信息

  • 项目名称: iOS 超级签名系统
  • 后端语言: Go
  • 前端框架: Vue 3 + Element Plus
  • 数据库: MySQL 5.7+
  • 默认端口: 8090
  • 默认管理员: admin / admin123

常用命令

bash
# 查看进程
ps aux | grep server

# 查看端口
netstat -tunlp | grep 8090

# 测试 Nginx 配置
nginx -t

# 重启 Nginx
nginx -s reload

# 查看磁盘空间
df -h

# 查看内存使用
free -h

部署完成! 🎉

重要提示:

  1. 首次登录后请立即修改管理员密码
  2. 配置数据库自动备份
  3. 定期检查系统日志
  4. 保持系统和软件更新

iOS 超级签名系统部署文档