起
高中畢業後的暑假的時候,可能因為比較近所以被交付一台ai2教學用的server。
本來是學長架好然後負責維護的,不過因為學長畢業後比較沒有時間見面,基本上沒有學到一些相關維護的事項。
本來想說等有空的時候再來看app inventor的官方文件,然而前幾天突然被告知build server好像出問題,不得已之下才趕快來找相關資料處理。
剛好遇到離散數學要考試了,發生這種事情真的很幹。但是還好這件事情好處理。
ps看了一下進程看到學長是用screen啟動伺服器,於是就直接進去terminal看狀況,結果是build server crash,重啟後就恢復正常了。
後來跟學長討論加上一些網路資料,推測有可能是有人編譯了一部分太大型的project,但是不太確定(因為趕著解決問題,忘了看crash的紀錄),可能要等考完過一陣子有空的時候再來找log或原始資料。
後來順便直接研究一下更新source code的維護方法,這裡稍微記一下過程,因為準備要教接給學弟了XD,可以直接給學弟看這篇。
不過最近應該會播出時間寫個shell自動化更新過程,順便練一下很久沒用的bash。
更新過程
找到ai2 server位址
cd /data-disk/ai2-server
取得新ai2-server原始碼
取得source code
git clone https://github.com/mit-cml/appinventor-sources.git
修改命名,須符合規範(YYYYMMDD為年-月-日)
mv appinventor-sources appinventor-sources-YYYYMMDD
更改權限
chmod 777 appinventor-sources-YYYYMMDD -R
進入source code資料夾
cd appinventor-sources-YYYYMMDD
更新Dependence source
git submodule update --init
Compile
進入ai2目錄
cd appinventor
取得ant auth key
ant MakeAuthkey
開始編譯
ant
接著要啟動原始碼中的伺服器,app invertor 2 包含兩個服務伺服器,一個是主要伺服器是處理專案資訊,另一個是build apk的伺服器,更多資訊可以看Developer Document。
開啟Main Server
使用虛擬終端機screen(需要sudo權限),維護時預設名稱為ai2server
不確定時可下ps aux | grep "ai2"
搜尋伺服器進程,進行確認
sudo screen -r ai2server
啟動伺服器
/data-disk/ai2-server/appengine-java-sdk-(版本)/bin/dev_appserver.sh -p 8888 -a 0.0.0.0 /data-disk/ai2-server/appinventor-sources-yyyymmdd/appinventor/appengine/build/war/
確認啟動後,先按Ctrl+A接著按D結束虛擬終端機
開啟Build Server
使用虛擬終端機screen(需要sudo權限),維護時預設名稱為ai2build
不確定時可下ps aux | grep "ai2"
搜尋伺服器進程,進行確認
sudo screen -r ai2build
進入buildserver目錄
cd appinventor-sources-YYYYMMDD/appinventor/buildserver
啟動伺服器
ant RunLocalBuildServer
使用者資料
資料放在/data-disk/ai2-server/appinventor-sources-YYYYMMDD/appinventor/appengine/build/war/WEB-INF/appengine-generated
裡面,複製到新的source code裡面即可.