因?yàn)閿?shù)據(jù)線已經(jīng)嚴(yán)重破損窗市,動(dòng)不動(dòng)就會(huì)自動(dòng)斷開連接,而且一天到晚連著設(shè)備感覺它老是在邊充電邊放電时肿。另外迭代測試的時(shí)候每次都要給測試發(fā)包赃蛛,??忍受著那無下限的網(wǎng)速恃锉,所以就想做個(gè) App 分發(fā)站點(diǎn),直接在網(wǎng)頁中點(diǎn)擊安裝焊虏,這樣比較省事
在網(wǎng)上找了一些資料淡喜,但實(shí)際搭建的過程中還是遇到不少問題,所以自己整理了一篇筆記诵闭,內(nèi)容分為3個(gè)部分
一炼团、App 打包,生成 plist 文件
1. 打包
打包的方法就不再敘述了疏尿,最后輸出 .ipa 包就可以
但想要要在線安裝瘟芝,還需要一個(gè) plist 文件
plist 文件的模板如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>http://172.17.22.124/test.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.sunli.test</string>
<key>bundle-version</key>
<string>1.1.0</string>
<key>kind</key>
<string>software</string>
<key>releaseNotes</key>
<string>1.1版本發(fā)布</string>
<key>title</key>
<string>testDemo</string>
</dict>
</dict>
</array>
</dict>
</plist>
url 中需要填寫你的 ipa 包下載地址
bundle-identifier 填寫你打包時(shí)的 bundle id
bundle-version 版本號(hào)
reseaseNotes 發(fā)布信息
title app名稱,下載時(shí)會(huì)彈出安裝提示褥琐,提示內(nèi)容包含 title
特別說明:
在線安裝的前提是你的開發(fā)者證書已經(jīng)對(duì) iOS 設(shè)備授權(quán)锌俱,這里不涉及繞過蘋果認(rèn)證的內(nèi)容
二、啟動(dòng) apache 服務(wù)敌呈,配置 Https
1. 啟動(dòng) Apache
Mac OS X 自帶了 Apache 服務(wù)贸宏,我們只需要啟動(dòng)它就可以了
在終端中輸入
sudo apachectl start
然后在瀏覽器中嘗試輸入 http://127.0.0.1 , 如果出現(xiàn) It Works!那么就是啟動(dòng)成功
站點(diǎn)的默認(rèn)目錄是 /Library/WebServer/Documents/
2. 開啟 Https 服務(wù)
因?yàn)?iOS7.1 以后磕洪, Apple 不再支持 HTTP 方式的 OTA 吭练,所以需要為 Apache 開啟 HTTPS 服務(wù)
①. 制作 OpenSSL 證書
生成服務(wù)器私鑰
mkdir /private/etc/apache2/ssl
cd /private/etc/apache2/ssl
sudo openssl genrsa -out server.key 1024
生成簽署申請(qǐng)
需要完整填寫各項(xiàng)信息,Common Name必須是服務(wù)器 ip 或域名析显,其他信息可以隨意填寫
sudo openssl req -new -key server.key -out server.csr
如果這一步漏填信息鲫咽,可能會(huì)導(dǎo)致最后生成的 ca 文件是空的
生成 CA 私鑰
sudo openssl req -new -x509 -days 365 -key ca.key -out ca.crt
創(chuàng)建 demoCA
在 ssl 目錄下創(chuàng)建 demoCA 文件夾,然后進(jìn)入 demoCA ,創(chuàng)建一個(gè) index.txt 和 serial 分尸,index.txt 為空锦聊, serial 內(nèi)容為01,然后再創(chuàng)建一個(gè)空文件夾 newcerts
然后執(zhí)行命令
sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
②. 配置 SSL 服務(wù)
編輯 httpd.conf 文件
sudo vim /private/etc/apache2/httpd.conf
把以下三行代碼前頭的注釋去掉
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
注意:如果你的 httpd.conf 中缺少了某行箩绍,你可以自行添加進(jìn)去即可孔庭。(我的 httpd.conf 中就沒有后面兩行,自己加上去的)
編輯 httpd-ssl.conf 文件
sudo vim /private/etc/apache2/extra/httpd-ssl.conf
把以下兩行代碼的注釋去掉
SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
全文搜索是要注意伶选,可能它的路徑和我貼的不一致
然后修改路徑史飞,改成你的證書文件路徑
SSLCertificateFile "/private/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"
編輯 httpd-vhosts.conf 文件
sudo vim /private/etc/apache2/extra/httpd-vhosts.conf
在 *NameVirtualHost :80 后面添加
NameVirtualHost *:443
然后在文件末尾添加
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
ServerName 172.17.22.124
DocumentRoot "/Library/WebServer/Documents/"
</VirtualHost>
ServerName 填寫你的 ip
DocumentRoot 填寫你的站點(diǎn)路徑
**檢查 apachectl 配置 **
sudo apachectl configtest
如果它提示:Syntax OK 尖昏,那就完成90%了仰税,如果它提示有錯(cuò),那就要根據(jù)錯(cuò)誤提示自行解決了
我在這個(gè)環(huán)節(jié)遇到了一個(gè)錯(cuò)誤
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
解決方案是參考這篇文章 http://stackoverflow.com/questions/20127138/apache-2-4-configuration-for-ssl-not-working
sudo vim /private/etc/apache2/httpd.conf
然后把以下代碼的注釋去掉
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
但我的配置文件中抽诉,路徑跟上述的不一致陨簇,我的是下面這行
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
去掉注釋后,保存迹淌,重新檢查配置河绽,直到成功
重啟 Apache 服務(wù)
sudo apachectl restart
這樣就可以用 https 訪問本地服務(wù)器了
三、建立在線安裝服務(wù)
跳轉(zhuǎn)到你的站點(diǎn)目錄唉窃,我是 /Library/WebServer/Documents/
cd /Library/WebServer/Documents/
然后把 plist 文件耙饰,ipa 包,還有前面生成在 ssl 目錄中的 ca.crt 文件都拖到站點(diǎn)目錄中
然后新建網(wǎng)頁
sudo vim index.html
輸入以下內(nèi)容
<html>
<body>
<a href="itms-services://?action=download-manifest&url=https://172.17.22.124/test.plist" class="app_link">click to install app</a>
<br><br>
<a title="iPhone" >ssl install</a>
</body>
</html>
url中必須填寫 https 開頭的 ipa 包下載地址纹份,然后下載前需要安裝 ssl 證書苟跪,所以第二行附上 ca.crt 證書的下載地址
最后在 iphone 的 Safari 瀏覽器中輸入地址 http://172.17.22.124/index.html 或者 https://172.17.22.124/index.html
先安裝證書,再安裝 app蔓涧,大功告成件已!
參考資料:
http://www.reibang.com/p/35ca63ec0d8e
http://stackoverflow.com/questions/20127138/apache-2-4-configuration-for-ssl-not-working