CentOS Golang打包环境怎么配置
导读:CentOS Golang打包环境配置 一 安装与基础环境 安装 Go(两种方式任选其一) 使用 YUM(适合快速搭建):执行命令:sudo yum install -y golang。 二进制安装(便于版本可控):下载并解压到 /us...
CentOS Golang打包环境配置
一 安装与基础环境
- 安装 Go(两种方式任选其一)
- 使用 YUM(适合快速搭建):执行命令:sudo yum install -y golang。
- 二进制安装(便于版本可控):下载并解压到 /usr/local,例如:
- 下载:wget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz -P /usr/local/src
- 解压:sudo tar -C /usr/local -xzf /usr/local/src/go1.21.6.linux-amd64.tar.gz
- 配置环境变量(全局生效推荐写入 /etc/profile.d/go.sh)
- 写入内容:
- export GOROOT=/usr/local/go
- export GOPATH=$HOME/go
- export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- 使配置生效:source /etc/profile.d/go.sh
- 写入内容:
- 验证安装:go version 应输出版本号,例如:go version go1.21.6 linux/amd64。
二 编译与交叉编译
- 本机编译(运行环境与目标一致时)
- 在项目根目录执行:go build -o myapp main.go
- 交叉编译为 Linux 64 位(常用于在 CI 或开发机上为服务器构建)
- 推荐静态链接以避免外部 C 库依赖:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o myapp main.go
- 常用目标示例
- Linux ARM64:CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o myapp main.go
- Windows 64 位:CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
- macOS AMD64:CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o myapp main.go
- 说明
- 当项目使用 CGo 或依赖系统 C 库时,静态编译会更复杂;若无法静态,可考虑在目标平台构建或使用容器化交付。
三 打包与分发
- 压缩包分发(简单可靠)
- 将二进制与配置一起打包:tar -czvf myapp.tar.gz myapp config/ assets/
- 在目标服务器解压并运行:tar -xzvf myapp.tar.gz & & chmod +x myapp & & ./myapp
- RPM 包分发(便于在 CentOS 生态内标准化安装与升级)
- 安装工具:sudo yum install -y rpm-build
- 目录准备:mkdir -p $HOME/rpmbuild/{ BUILD,RPMS,SOURCES,SPECS,SRPMS}
- 准备源码包:将二进制与必要文件放入 SOURCES,例如:cp myapp $HOME/rpmbuild/SOURCES/
- 编写 SPEC(示例要点)
- 关键字段:Name/Version/Release/Summary/License/Source0
- 构建与安装:在 %build 中构建二进制,在 %install 中安装到 %{ buildroot} /usr/bin
- 文件清单:%files /usr/bin/myapp
- 构建:rpmbuild -ba $HOME/rpmbuild/SPECS/myapp.spec,产物位于 $HOME/rpmbuild/RPMS/。
- 容器镜像分发(环境一致性最佳)
- 多阶段构建示例:
- 构建阶段:FROM golang:1.21 AS builder → WORKDIR /app → COPY . . → RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
- 运行阶段:FROM scratch → COPY --from=builder /app/myapp /myapp → ENTRYPOINT [“/myapp”]
- 构建镜像:docker build -t myapp:latest .。
- 多阶段构建示例:
四 systemd 服务与部署验证
- 创建服务文件:/etc/systemd/system/myapp.service
- 示例:
- [Unit]
- Description=My Go Application
- After=network.target
- [Service]
- ExecStart=/usr/local/bin/myapp
- Restart=always
- User=www
- Group=www
- Environment=DATABASE_URL=your_database_url
- [Install]
- WantedBy=multi-user.target
- 示例:
- 启动与开机自启
- systemctl daemon-reload
- systemctl start myapp & & systemctl enable myapp
- 验证
- 状态:systemctl status myapp
- 日志:journalctl -u myapp -f
- 端口/健康检查:根据应用监听端口或健康接口进行验证。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Golang打包环境怎么配置
本文地址: https://pptw.com/jishu/752207.html
