Golang在CentOS打包步骤
导读:Golang在CentOS上的打包步骤 1. 安装Golang环境 在CentOS上打包Golang项目前,需先安装Golang。可通过以下两种方式安装: Yum快速安装(默认版本可能较旧):sudo yum install -y gol...
Golang在CentOS上的打包步骤
1. 安装Golang环境
在CentOS上打包Golang项目前,需先安装Golang。可通过以下两种方式安装:
- Yum快速安装(默认版本可能较旧):
sudo yum install -y golang - 手动下载安装(推荐最新稳定版):
wget https://golang.org/dl/go1.23.0.linux-amd64.tar.gz # 替换为最新版本 sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz - 配置环境变量:
编辑~/.bashrc(或/etc/profile),添加以下内容:生效配置:export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/binsource ~/.bashrc - 验证安装:
go version # 应输出类似"go1.23.0 linux/amd64"
2. 编写或准备Go项目
在$GOPATH/src目录下创建项目文件夹(如myapp),编写main.go文件:
mkdir -p $GOPATH/src/myapp
cd $GOPATH/src/myapp
vim main.go # 示例代码:package main;
import "fmt";
func main() {
fmt.Println("Hello, CentOS!") }
- 使用Go Modules管理依赖(推荐):
若项目依赖第三方库,初始化模块并下载依赖:go mod init example.com/myapp go get -u github.com/gin-gonic/gin # 示例:添加Gin框架依赖
3. 编译项目(生成可执行文件)
- 本地编译(仅适用于CentOS环境):
直接运行go build生成可执行文件:cd $GOPATH/src/myapp go build -o myapp # 生成名为"myapp"的可执行文件 - 交叉编译(适用于其他环境,如Windows):
若需为其他平台编译,设置GOOS(目标系统)和GOARCH(目标架构):GOOS=windows GOARCH=amd64 go build -o myapp.exe # 编译为Windows 64位可执行文件 - 静态编译(避免依赖外部库):
若需生成自包含的二进制文件(无需安装Glibc等依赖),添加-ldflags和CGO_ENABLED=0:其中:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o myapp-ldflags="-s -w":去除调试信息和符号表,减小文件体积;CGO_ENABLED=0:禁用CGO,强制静态编译。
4. 打包项目文件
将可执行文件与配置文件(如config.yaml)、脚本(如run.sh)等一起打包成压缩文件:
cd $GOPATH/src/myapp
tar -czvf myapp.tar.gz myapp config/ scripts/run.sh # 打包myapp及config、scripts目录
- 示例
run.sh脚本(用于启动程序):#!/bin/bash nohup ./myapp > app.log 2> & 1 & # 后台运行并输出日志到app.log chmod +x run.sh # 赋予执行权限
5. 可选:创建RPM包(便于分发)
若需将项目打包为RPM格式(适用于CentOS的软件包管理),需完成以下步骤:
- 安装rpmbuild工具:
sudo yum install -y rpm-build - 创建RPM宏文件:
在用户主目录创建.rpmmacros,定义构建路径:echo '%_topdir %(echo $HOME)/rpmbuild' > > ~/.rpmmacros mkdir -p ~/rpmbuild/{ BUILD,RPMS,SOURCES,SPECS,SRPMS} - 准备SPEC文件:
在~/rpmbuild/SPECS下创建myapp.spec,内容如下:Name: myapp Version: 1.0 Release: 1%{ ?dist} Summary: A simple Golang application for CentOS License: MIT URL: http://example.com/myapp Source0: %{ name} -%{ version} .tar.gz # 需将项目打包为tar.gz并放入SOURCES目录 BuildRequires: golang > = 1.16 Requires: golang > = 1.16 %description This is a Golang application packaged for CentOS. %prep %setup -q %build go build -o %{ buildroot} /usr/bin/myapp . %install rm -rf %{ buildroot} mkdir -p %{ buildroot} /usr/bin cp myapp %{ buildroot} /usr/bin/ %files /usr/bin/myapp %changelog * Tue Oct 28 2025 Your Name < your@email.com> - 1.0-1 - Initial package - 构建RPM包:
将项目打包为tar.gz并放入~/rpmbuild/SOURCES:运行rpmbuild命令:tar -czvf ~/rpmbuild/SOURCES/myapp-1.0.tar.gz -C $GOPATH/src/myapp .
生成的RPM包位于rpmbuild -ba ~/rpmbuild/SPECS/myapp.spec~/rpmbuild/RPMS/x86_64/目录下(如myapp-1.0-1.el7.x86_64.rpm)。
6. 部署与运行
- 上传并解压:
使用scp将打包文件上传到CentOS服务器:scp myapp.tar.gz user@your_server_ip:/opt ssh user@your_server_ip cd /opt tar -xzvf myapp.tar.gz - 运行程序:
赋予执行权限并启动:cd /opt/myapp chmod +x myapp ./myapp # 前台运行 - 后台运行(推荐):
使用nohup或systemd服务:nohup ./myapp > app.log 2> & 1 & # 日志输出到app.log - 设置开机自启动(systemd):
创建服务文件/etc/systemd/system/myapp.service:启用并启动服务:[Unit] Description=My Golang Application After=network.target [Service] User=root ExecStart=/opt/myapp/myapp Restart=always [Install] WantedBy=multi-user.targetsudo systemctl daemon-reload sudo systemctl enable myapp sudo systemctl start myapp
以上步骤覆盖了Golang在CentOS上的完整打包、部署流程,可根据实际需求选择静态编译、RPM打包或Docker容器化等方式优化部署效率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang在CentOS打包步骤
本文地址: https://pptw.com/jishu/737128.html
