使用 tree 指令看一下產出的專案目錄架構
$ cd $GOPATH/src/my
$ tree hello
hello
├── conf
│ └── app.conf
├── controllers
│ └── default.go
├── hello
├── main.go
├── models
├── routers
│ └── router.go
├── static
│ ├── css
│ ├── img
│ └── js
│ └── reload.min.js
├── tests
│ └── default_test.go
└── views
└── index.tpl
10 directories, 8 files
目錄的名稱蠻容易懂的,
接著我們來看環境設定的部份,一般來說都會有 development 跟 production 的環境,設定上可以依據環境來做區別,預設的設定就只有 listen port 8080,所以這邊我們做一點調整,也是為了未來的佈署鋪路。
查了 BeeGo 的文件跟原始碼以後,發現只能使用設定檔來設置,不能像 Django + django-environ 那樣,可以透過讀取環境變數或設定檔的方式來設置。這部份之後可能要再找找看有沒有更好的方法。
BeeGo 環境設定檔的部份,可以透過環境變數 BEEGO_RUNMODE 來指定要使用哪一個環境:
cd conf
# 做 production 環境,檔名必須以 .app.conf 結尾
cp app.conf prod.app.conf
# 修改 prod.app.conf ,將 port 改為 80,再存檔
cd ..
sudo BEEGO_RUNMODE=prod ./hello
# 會看到 http server Running on http://:80 的字樣
之後,production 環境的設定就只要修改 prod.app.conf ,而開發環境的設定就修改 app.conf 就好。因為 BeeGo 的設定支援 include,仔細想了想之後,conf 下的檔案我決定先改成這樣:
├── conf
│ ├── app.conf
│ ├── base.conf
│ ├── dev.app.conf
│ └── prod.app.conf
# 作為預設的設定
# conf/app.conf
include "dev.app.conf"
# conf/dev.app.conf
include "base.conf"
httpport = 8080
runmode = dev
enableerrorsshow = true
# conf/dev.prod.conf
include "base.conf"
httpport = 80
runmode = prod
enableerrorsshow = false
enablegzip = true
enablexsrf = true
xsrfexpire = 60
# conf/base.conf
appname = hello
BeeGo 可以調整的設定蠻多的,詳細的部份可以參考 BeeGo Configuration