本服务使用开源项目AppHost,地址:
https://github.com/pluosi/app-host
- 根据官方文档,采用方法2 Docker自己编译。clone项目到本地
git clone https://github.com/pluosi/app-host.git /opt/app-host
cd /opt/app-host
复制代码
- 确保docker已安装
sudo apt install docker.io
复制代码
- 如果需要修改端口,在源码里全局搜索“3000”并改成需要的端口。
- 编译并启动
./docker/launcher bootstrap -v
./docker/launcher start
复制代码
- 如果编译完之后要改端口,需要把docker镜像删除后重新编译。参考 这篇帖子 。删除后重复步骤4。
#列出正在运行的docker容器
docker ps
#移除运行的容器
docker rm -f {容器ID}
#列出编译好的镜像
docker images
#移除镜像
docker rmi -f {镜像ID}
复制代码
- iOS安装包需要网站支持https。先在路由dns里面绑定ip和域名。
- 安装mkcert,生成自签名证书
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
chmod +x mkcert
mv mkcert /usr/local/bin/
复制代码
- 生成证书并安装。这一步会在当前文件夹生成2个文件,放在某路径下保管好。
mkcert 192.168.1.251
mkcert -install
复制代码
- 生成根证书,同样也放在之前的证书文件夹里方便归类。
mkcert -CAROOT
复制代码
- 配置nginx反向代理。确保nginx已安装。nginx反向代理参考 这篇帖子
apt install nginx -y
复制代码
- 创建配置文件
vi /etc/nginx/sites-available/app-host.conf
复制代码
- 使用以下配置。server_name,ssl_certificate,ssl_certificate_key,proxy_pass根据实际情况填写。默认的https端口443转发到3001端口。反向代理可以监听80端口,转发到本机的443端口。如果需要有多个url来访问这个服务,最关键的需要把每个ssl端口写成不一样的。在listen 80的时候,rewrite如果写 1,这个$1还是443,默认的https端口。可以写死成示例中的https://172.16.1.23:444。
server {
listen 443 ssl;
server_name 192.168.1.251;
# access_log /var/log/nginx/ota.xxx.com_access.log;
ssl_certificate /.../192.168.1.251.pem;
ssl_certificate_key /.../192.168.1.251-key.pem;
ssl on;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://192.168.1.251:3001; #此处改为 docker 服务的地址
}
}
server {
listen 80;
server_name 192.168.1.251;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 444 ssl;
server_name 172.16.1.23;
# access_log /var/log/nginx/ota.xxx.com_access.log;
ssl_certificate /.../172.16.1.23.pem;
ssl_certificate_key /.../172.16.1.23-key.pem;
ssl on;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://172.16.1.23:3001; #此处改为 docker 服务的地址
}
}
server {
listen 80;
server_name 172.16.1.23;
rewrite ^(.*)$ https://172.16.1.23:444 permanent;
}
复制代码
- 把配置文件链接到相应目录下
ln -s /etc/nginx/sites-available/app-host.conf /etc/nginx/sites-enabled/
复制代码
- nginx默认上传文件大小有限制,到/etc/nginx/nginx.conf下http{}段中加入配置
client_max_body_size 1000m;
复制代码
- 重启nginx
systemctl restart nginx
复制代码
至此,服务器配置好了。可以先用localhost:3001端口访问网页,根据UI提示,上传一个包尝试一下。打包需要选择adhoc,不能选app store。接下来需要在手机上做一些配置。
- 手机必须是测试手机,UDID在ipa profile的设备列表里。
- 把配置服务器时候生成的rootCA.pem通过air drop发到手机上,会提示安装证书。照提示安装证书。
- 以iOS15举例,收到文件以后进入设置->通用->VPN与设备管理。已下载的描述文件下面点击刚收到的证书,照提示安装成功。
- 这一步很关键,刚才描述文件安装成功还需要信任证书。进入设置->通用->关于本机->证书信任设置。把刚才安装的证书打开信任。