在CentOS上打包Golang项目前,需先安装Golang。有两种方式:
sudo yum install -y golang
go1.23.0.linux-amd64.tar.gz),解压至/usr/local: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 # Golang安装目录
export GOPATH=$HOME/go # 工作目录(存放源码、依赖)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加Go命令到PATH
使配置生效:
source ~/.bashrc
验证安装:
运行go version,若输出Go版本信息(如go1.23.0 linux/amd64),则安装成功。
进入项目目录(如/home/user/myapp),确保项目结构符合Go规范(如包含main.go入口文件)。若使用Go Modules管理依赖,需初始化模块:
go mod init myapp # 初始化模块(生成go.mod文件)
go mod tidy # 下载并整理依赖(确保go.mod与go.sum一致)
基础编译(生成适用于当前系统的可执行文件):
在项目目录下运行:
go build -o myapp # 生成名为“myapp”的可执行文件
-o:指定输出文件名(默认为项目目录名)。交叉编译(生成适用于CentOS的Linux二进制文件,推荐):
即使当前系统是CentOS,也建议显式指定目标平台(避免环境变量干扰),命令如下:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64
CGO_ENABLED=0:禁用CGO(生成静态链接的二进制文件,无需依赖系统库);GOOS=linux:目标操作系统为Linux;GOARCH=amd64:目标架构为64位。将编译后的可执行文件及必要的配置文件(如config.yaml、README.md)打包成压缩文件(如.tar.gz):
tar -czvf myapp.tar.gz myapp-linux-amd64 config.yaml README.md
-c:创建压缩包;-z:使用gzip压缩;-v:显示压缩过程;-f:指定压缩包名称。若需要将项目打包成RPM格式(适用于CentOS的软件包管理),可按以下步骤操作:
sudo yum install -y rpm-build
.rpmmacros,添加以下内容(指定构建目录):%_topdir %(echo $HOME)/rpmbuild
%_sourcedir %_topdir/src
%_builddir %_topdir/build
%_specdir %_topdir/SPECS
%_rpmdir %_topdir/RPMS
%_srcrpmdir %_topdir/SRPMS
~/rpmbuild/SPECS目录下创建myapp.spec,内容示例如下:Name: myapp
Version: 1.0
Release: 1%{?dist}
Summary: My Golang Application
License: MIT
URL: https://example.com
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch # 若为静态编译,设置为noarch
%description
A simple Golang application.
%prep
%setup -q
%build
go build -o myapp-linux-amd64
%install
install -D -m 0755 myapp-linux-amd64 %{buildroot}/usr/bin/myapp
%files
/usr/bin/myapp
%changelog
* Tue Oct 10 2025 Your Name <your@email.com> - 1.0-1
- Initial package.
.tar.gz(如myapp-1.0.tar.gz),放在~/rpmbuild/SOURCES目录下,然后运行:rpmbuild -ba ~/rpmbuild/SPECS/myapp.spec
生成的RPM包位于~/rpmbuild/RPMS/noarch/(或x86_64/)目录下。将打包后的文件(如myapp.tar.gz或RPM包)上传至目标CentOS服务器(使用scp命令):
scp myapp.tar.gz user@remote_server:/path/to/destination
在目标服务器上解压并运行:
tar -xzvf myapp.tar.gz # 解压
cd myapp-linux-amd64 # 进入目录
chmod +x myapp # 赋予执行权限
./myapp # 运行程序
若需要后台运行,可使用nohup或systemd服务(参考之前的systemd配置步骤)。
以上流程覆盖了Golang项目在CentOS上的完整打包、部署过程,可根据实际需求选择静态编译、RPM打包等优化步骤。