2015年4月23日 星期四

GAE 後台管理指令集

今天終於把三月初暫停的 000a.biz 專案程式大致回復了, 這給我一個教訓, 要定時備份系統, 不要以為跑得順順的就不理它, 一旦系統無法運轉, 裡面寶貴的程式與資料若無法拿回來就虧大了. 那可是花了不少時間寫出來的啊.

這次的麻煩主要是我忽略 000a.biz 要求升級的來信, 我認為那只是行銷而已, 不予理會, 結果四月十日果真就被停止後台使用權了, 這麼巧,  Inhon 筆電就在同一天無法啟動, 必須從光碟做系統回復. 這樣一來本機伺服器在 C:\ AppServ\www 下的程式檔都消失了, 而 TF 卡中的程式雖還在, 但可能不是最新的. 幸好 000a.biz 同意我取回程式的要求, 這幾天就是忙比對取回的程式與 TF 卡中備份的程式有何差異. 沒有做好資料保全的下場就是這樣, 浪費寶貴的時間.

程式檔回復後上傳 Appfog, 接下來就是 GAE 驅動程式的部分了. 先到 GAE 申請一個新的應用程式專案, 然後把之前給驅動 000a.biz 的應用程式複製一份, 作如下修改 :
  1. main.py : 把原 000a.biz 的 URL 為 Appfog URL.
  2. app.yaml : 把第一行的 application 名稱改為新應用程式名稱 
  3. default.htm : 把標題改為 Appfog 應用程式名稱
這樣就可以上傳了. 但使用 GAE SDK Launcher 才發現, SDK 已升版到 1.9.19 了, 所以上 GAE 網站更新了 SDK :

https://cloud.google.com/appengine/downloads

更新完上傳應用程式卻出現如下訊息 :

2015-04-23 17:03:24 Running command: "['C:\\Python27\\pythonw.exe', '-u', 'C:\\Program Files (x86)\\Google\\google_appengine\\appcfg.py', '--oauth2', 'update', u'E:\\GAE\\appfog-myAPP']"
05:03 PM Application: appfog-myAPP; version: 1
05:03 PM Host: appengine.google.com
05:03 PM
Starting update of app: appfog-myAPP, version: 1
05:03 PM Getting current resource limits.
2015-04-23 17:03:35,434 WARNING old_run.py:88 This function, oauth2client.tools.run(), and the use of the gflags library are deprecated and will be removed in a future version of the library. 
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&response_type=code&client_id=xxxxxxxxx.apps.googleusercontent.com&access_type=offline

If your browser is on a different machine then exit and re-run
this application with the command-line parameter

  --noauth_local_webserver

有問題了, 但沒時間研究, 乾脆改用 command line 來上傳吧. 以下是 appcfg 常用的指令集 :
  1. 上傳應用程式 :
    appcfg.py update APPNAME
  2. 更新 CRON :
    appcfg.py update_cron APPNAME
  3. 顯示 CRON :
    appcfg.py cron_info APPNAME
  4. 下載應用程式 :
    appcfg.py download_app -A APPNAME -V 1 DIRNAME
上傳結果如下 :

E:\GAE>appcfg.py update appfog-myAPP
07:28 PM Application: appfog-myAPP; version: 1
07:28 PM Host: appengine.google.com
####################################################
OAuth2 is now the recommended authentication method.
Use the --oauth2 flag to enable.
####################################################
07:28 PM
Starting update of app: appfog-myAPP, version: 1
07:28 PM Getting current resource limits.
Email: tony123@gmail.com
Password for tony123@gmail.com:
07:29 PM Scanning files on local disk.
07:29 PM Cloning 1 static file.
07:29 PM Cloning 9 application files.
07:29 PM Compilation starting.
07:29 PM Compilation completed.
07:29 PM Starting deployment.
07:29 PM Checking if deployment succeeded.
07:29 PM Deployment successful.
07:29 PM Checking if updated app version is serving.
07:29 PM Completed update of app: appfog-myAPP, version: 1
07:29 PM Uploading index definitions.
07:29 PM Uploading cron entries.

跑了近四小時, 觀察對 Appfog 發出的 Request 蠻正常, 完全 0 error, 可見 Appfog 主機真的一級棒, 難怪收費比人家貴, 還好我有留下免費帳戶, 雖然容量與流量有受限制, 但作為實驗性網站也夠了 :


哈哈, 系統又重新跑起來了, 估計後天全部資料就會抓完全了, 但要謹記這次的教訓, 定期備份系統.

接下來要把目前已經沒用到的 GAE cron table 停掉, 只留兩個 Appfog 帳號以及慢速測試用的 0000webhost 驅動器即可.

參考 :

停止 GAE 的 cron jobs 的方法
# 下載備份 Google App Engine 應用程式檔案的方法
# Uploading, Downloading, and Managing a Python App


沒有留言:

張貼留言