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.sh2. 安装必要软件
登录宝塔面板后,在 软件商店 安装:
- Nginx 1.18+
- MySQL 5.7+ 或 MariaDB 10.3+
3. 准备项目文件
将以下文件准备好:
- 主程序压缩包
- 授权码
数据库配置
1. 创建数据库
在宝塔面板 数据库 菜单中:
- 点击 添加数据库
- 填写信息:
- 数据库名:
ios_super_sign - 用户名:
ios_sign_user - 密码: 设置强密码(记住此密码,后续配置需要)
- 访问权限:
本地服务器
- 数据库名:
- 点击 提交
快速部署步骤
第一步:创建站点目录
- 登录宝塔面板
- 点击 文件 -> 进入
/www/wwwroot/ - 创建站点目录,例如:
example.com - 在站点目录下创建以下子目录:
admin/- 管理后台前端web/- 用户前端server/- Go 后端
第二步:上传项目文件
上传压缩包:
Y1证书站.zip- 项目安装包
使用宝塔文件管理器上传压缩包:
- 点击 文件 -> 进入
/www/wwwroot/example.com/ - 点击 上传 -> 选择压缩包文件上传
- 上传完成后,右键点击压缩包 -> 解压
- 解压后删除压缩包
- 点击 文件 -> 进入
最终目录结构:
/www/wwwroot/example.com/
├── admin/ # 管理后台前端
│ ├── assets/
│ ├── index.html
│ └── ...
├── web/ # 用户前端
│ ├── assets/
│ ├── index.html
│ └── ...
└── server/ # Go 后端
└── server # 可执行文件- 设置 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 项目
- 点击 网站 -> GO 项目 -> 添加项目
- 填写配置:
- 项目执行文件: 点击选择,找到
/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)
- 项目执行文件: 点击选择,找到
- 点击 确定
注意: 添加 GO 项目后,宝塔会自动创建网站配置,无需手动添加站点。
第四步:配置 SSL 证书(必须先配置)
- 在 网站 列表中找到你的站点
- 点击 设置 -> SSL
- 选择 Let's Encrypt 或上传自有证书
- 申请/上传证书后,开启 强制 HTTPS
第五步:修改 Nginx 配置文件
- 点击站点的 设置 -> 配置文件
- 将配置文件内容替换为以下内容:
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
}- 重要: 使用编辑器的 查找替换 功能:
- 查找:
example.com - 替换为:你的实际域名
- 查找:
- 点击 保存
第六步:重启项目
- 点击 网站 -> GO 项目
- 找到
ios_udid项目 - 点击 重启
- 查看状态是否为 运行中
第七步:访问测试
- 用户前端: https://example.com
- 管理后台: https://example.com/admin
- 默认管理员账号:
admin - 默认管理员密码:
admin123
部署完成! 🎉
详细配置说明
环境变量说明
在添加 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检查浏览器控制台:
- 按 F12 打开开发者工具
- 查看 Console 标签页是否有错误
- 查看 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.log4. 文件上传失败
问题: 上传 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 访问提示证书错误或无法访问
解决方案:
- 确认证书已正确申请/上传
- 检查证书路径是否正确
- 确认防火墙已开放 443 端口
- 重启 Nginx:
nginx -s reload
6. 管理后台无法登录
问题: 输入默认账号密码无法登录
默认账号:
- 用户名:
admin - 密码:
admin123
如需重置密码,连接数据库执行:
sql
-- 通过宝塔面板数据库管理工具或命令行执行
UPDATE users SET password = '重置后的密码哈希' WHERE username = 'admin';7. 环境变量不生效
问题: 后端无法连接数据库,提示连接失败
解决方案:
- 检查 GO 项目配置中的环境变量是否正确填写
- 确认数据库密码没有特殊字符(如有,需要转义)
- 重启 GO 项目使环境变量生效
- 查看项目日志确认环境变量是否被正确读取
维护与更新
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. 数据库备份
方式一:通过宝塔面板(推荐)
- 进入 数据库 菜单
- 找到
ios_super_sign数据库 - 点击 备份
- 设置 计划任务 实现自动备份(推荐每天凌晨 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).sql4. 日志管理
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 -delete5. 性能优化
清理 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. 修改默认管理员密码
首次登录后,立即修改默认管理员密码:
- 登录管理后台
- 进入 个人中心
- 修改密码为强密码
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部署完成! 🎉
- 用户前端: https://example.com
- 管理后台: https://example.com/admin
- 默认账号: admin
- 默认密码: admin123
重要提示:
- 首次登录后请立即修改管理员密码
- 配置数据库自动备份
- 定期检查系统日志
- 保持系统和软件更新