確保Ubuntu系統已安裝Golang(建議使用最新穩定版),并通過go version驗證安裝。若未安裝,可通過以下命令安裝:
sudo apt update && sudo apt install golang-go
設置環境變量(可選但推薦),編輯~/.bashrc文件添加:
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
運行source ~/.bashrc使配置生效。
創建項目目錄并初始化Go Module(管理依賴):
mkdir myapp && cd myapp
go mod init myapp # 生成go.mod文件
編寫代碼(如main.go),示例:
package main
import "fmt"
func main() {
fmt.Println("Hello, Ubuntu Golang App!")
}
使用go build命令生成可執行文件。若需指定目標平臺(如Linux 64位),通過GOOS和GOARCH環境變量交叉編譯:
GOOS=linux GOARCH=amd64 go build -o myapp # 生成適用于Linux的可執行文件
若無需跨平臺,直接運行go build -o myapp即可。
upx工具壓縮二進制文件(需先安裝):sudo apt install upx
upx --best myapp # 最佳壓縮率
-ldflags注入版本、提交哈希等元數據,便于后續管理:VERSION=1.0.0
COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date +%Y-%m-%dT%H:%M:%S)
go build -ldflags "-X 'main.Version=$VERSION' -X 'main.Commit=$COMMIT' -X 'main.BuildTime=$BUILD_TIME'" -o myapp
需在代碼中定義對應變量(如main.go中添加var Version string)。tar命令將可執行文件打包為.tar.gz(便于傳輸):tar -czvf myapp.tar.gz myapp # 生成壓縮包
Dockerfile簡化部署:FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
構建并運行Docker鏡像:docker build -t myapp:latest .
docker run -p 8080:8080 myapp:latest # 根據實際端口調整
myapp.tar.gz或Docker鏡像上傳至服務器,解壓后運行:scp myapp.tar.gz user@server:/home/user/
ssh user@server
tar -xzvf myapp.tar.gz
chmod +x myapp
./myapp
通過以上步驟,可實現Golang應用在Ubuntu下的編譯、優化、打包及發布,滿足不同場景的部署需求。