在 CentOS 上使用 Golang 框架的实操指南
一 安装与准备
- 方式一 使用官方二进制包安装(推荐,版本可控)
- 下载并解压到系统目录(示例为 /usr/local):
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
- 配置环境变量(写入全局脚本便于所有用户生效):
echo ‘export PATH=$PATH:/usr/local/go/bin’ | sudo tee /etc/profile.d/golang.sh
source /etc/profile.d/golang.sh
- 验证安装:
go version
- 启用模块模式(建议始终开启):
go env -w GO111MODULE=on
- 方式二 使用 YUM 安装(版本通常较旧,适合快速体验)
- 安装 EPEL 仓库并安装 Go:
sudo yum install -y epel-release
sudo yum install -y golang
- 查看安装路径与版本:
go env GOROOT
go version
- 设置工作区(Go Modules 为主流,GOPATH 仅用于存放二进制工具):
mkdir -p ~/go
echo ‘export GOPATH=$HOME/go’ >> ~/.bashrc
echo ‘export PATH=$PATH:$GOPATH/bin’ >> ~/.bashrc
source ~/.bashrc
- 可选 国内网络优化
- 配置 Go 代理以加速模块下载(可选):
go env -w GOPROXY=https://goproxy.cn,direct
二 创建项目与选择框架
- 初始化模块与目录
mkdir -p ~/projects/myapp && cd ~/projects/myapp
go mod init example.com/myapp
- 选择框架示例
- Gin(高性能、生态丰富)
go get -u github.com/gin-gonic/gin
- Echo(轻量、API 友好)
go get -u github.com/labstack/echo/v4
- Beego(全栈框架,自带工具链)
go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
- 说明
- 以上均使用 Go Modules 管理依赖,无需将代码放入 GOPATH/src。
- 若使用 Beego,可通过 bee 工具快速生成项目骨架(bee new 项目名)
三 Gin 示例应用
-
代码示例 main.go
package main
import “github.com/gin-gonic/gin”
func main() {
r := gin.Default()
r.GET(“/”, func(c *gin.Context) {
c.JSON(200, gin.H{“message”: “Hello, CentOS + Gin”})
})
// 生产环境建议显式指定监听地址与端口
r.Run(“:8080”)
}
-
运行与验证
go run main.go
curl -i http://localhost:8080
-
构建二进制
go build -o myapp
./myapp
四 运行与部署要点
- 防火墙放行端口(示例为 8080/tcp)
- firewalld:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
- 或临时使用:
sudo firewall-cmd --add-port=8080/tcp
- 以非 root 用户运行(推荐)
- 生产建议
- 使用反向代理(如 Nginx)承载静态资源与 TLS
- 使用进程管理工具(如 systemd 或 supervisord)守护进程
- 绑定到 0.0.0.0 仅在内网可达时开放,外网暴露请配合防火墙与 TLS
- 常见问题
- 依赖拉取超时:配置 GOPROXY 或使用国内镜像源
- 端口被占用:检查并释放端口或更改监听端口
- SELinux 限制:必要时调整策略或以合适级别运行
以上步骤覆盖了在 CentOS 上安装 Go、选择并初始化常见 Web 框架、运行示例以及部署要点,适合从零到可用的完整落地流程。