Ting-Jun (snsd0805)

Ting-Jun (snsd0805)

Developer. Student

© 2019

[筆記] ai2 serv更新維護小記

高中畢業後的暑假的時候,可能因為比較近所以被交付一台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裡面即可.