go-web-practice 是一個學習項目。通過使用Golang 的原生庫實現一個簡單的Web 應用。
本項目是跟隨B 站UP 主軟件工藝師的視頻《Go Web 編程快速入門【Golang/Go語言】(完結)》來進行學習與編寫的。
在視頻的基礎上,做出了一些修改:
本項目已經過測試與部署,Linux 主機部署指南在下文中。
項目結構:
go-web-practice
.
├── LICENSE
├── README.md
├── build
│ └── package
│ ├── dockerfile.build_run
│ └── dockerfile.run
├── cmd
│ └── main.go
├── configs
│ └── config.json
├── deployments
│ └── docker-compose.yaml
├── go.mod
├── internal
│ ├── config
│ │ ├── config.go
│ │ └── config_test.go
│ ├── controller
│ │ ├── controller.go
│ │ ├── index.go
│ │ ├── look.go
│ │ └── welcome.go
│ ├── log
│ │ └── log.go
│ ├── middleware
│ │ ├── cross.go
│ │ ├── log.go
│ │ └── timeout.go
│ └── templates
│ └── template.go
└── web
├── img
│ ├── favicon.ico
│ ├── golang-down.png
│ ├── golang-right.png
│ └── golang.png
├── plugins
│ ├── bootstrap
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── js
│ │ └── bootstrap.min.js
│ └── jquery
│ └── js
│ └── jquery.min.js
└── templates
├── index.tmpl
├── look.tmpl
├── test.tmpl
└── welcome.tmpl
注意
以下幾點是項目目前的問題
或者說是拿來做大學作業的時候要注意的東西。
- 項目使用Goland 開發的,其他IDE 的遷移情況未知。
- 只有main.go 裡面寫了一點點註釋,其他文件的註釋以後更新。
- 當前項目中的路由還有界面非常少,需要可以自己添加。
- 沒有數據庫。
- 使用docker 以及docker-compose 運行前需要自行對項目進行編譯或將可執行文件放到項目目錄下。
首先你得確保你安裝好了Golang 的環境。如果你修改了項目,那麼你就需要重新編譯,得到可執行文件,才能部署運行。 **
Golang 的交叉編譯提供了很大的便利,這使得我們可以在Windows 系統下編譯出可以在Linux 環境下運行的可執行文件。
你可以使用以下.bat 腳本在windows 完成windows 以及linux 環境下的可執行文件編譯。
# 请以项目目录为工作目录执行该脚本
# windows 可执行文件编译
go build -o go-web-practice.exe cmdmain.go
# linxu 可执行文件编译
set CGO_ENABLED = 0
set GOOS = linux
set GOARCH = amd64
go build -o go-web-practice .cmdmain.go
pause如果你是MacOS 或Linux 開發,可以使用make構建。
make本項目使用JSON 文件來進行配置。
查看config/conifg.json配置語義如下表,根據需求修改。
| 配置字段 | 語義 |
|---|---|
| static | 靜態文件的路徑 |
| template | go 模板的路徑 |
| address | 服務啟動的地址(默認為空,可以實現公網部署) |
| port | 服務啟動的端口 |
| handleTimeoutSecond | request 處理超時時間(該配置在項目中未使用,作保留) |
| trace | trace logger 輸出日誌的路徑(項目中未使用,作保留) |
| info | info logger 輸出日誌的路徑 |
| warning | warning logger 輸出日誌的路徑 |
| error | error logger 輸出日誌的路徑 |
運行必須保證以下目錄結構(以Linux 運行為例):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...直接運行可執行文件即可看到以下提示表示運行成功:

可以用curl localhost:8000/welcome測試一下,將會返回welcome 界面的html。
本機訪問(未修改端口配置):http://localhost:8000。
如果你是部署在服務器上,想要通過公網訪問,記得設置防火牆開放相應的端口。如果是雲服務器還要打開安全組。
master 分支已更新dockerfile,並使用docker 對go-web-practice 的編譯、運行進行了測試。
以下是go-web-practice 的Docker 編譯/部署運行指南。
Docker 是什麼、怎麼裝、怎麼用,這裡不做詳細的講解介紹。
詳細可參見Docker 官方文檔:https://docs.docker.com/
在項目目錄下按照以下順序執行命令,即可在鏡像構建時完成編譯,並在容器啟動時運行服務。
$ docker build -t go-web-practice -f ./build/package/dockerfile.build_run . docker run -d -p 8000:8000 go-web-practice在本地編譯生成可執行文件之後再構建運行鏡像,這能保證鏡像體積較小的情況下也能正常運行。
上文中的使用Docker 編譯並運行構建的鏡像大小接近1GB,而本節中構建的可運行鏡像大概只有100MB 左右。
注意:上文中構建過名為go-web-practice 鏡像後,再執行本節的指令前要先刪除老鏡像。
先保證在項目目錄下已有編譯好的可執行文件。
在項目的/build/package目錄下有準備好的dockerfile 用於生成鏡像文件,使用以下指令構建docker 鏡像。
$ docker build -t go-web-practice -f ./build/package/dockerfile.run . 後台運行容器輸入以下指令:
$ docker run -d -p 8000:8000 go-web-practicedocker-compose部署運行在構建了鏡像後,也通過使用docker-compose 指令直接部署運行:
$ docker-compose -f deployments/docker-compose.yaml up注意,如果修改了端口配置則需修改docker 運行指令以及docker-compose.yaml 配置文件中的端口映射字段。
若有問題可以郵箱聯繫我:[email protected]