在CentOS上打包Golang应用,其实步骤比想象中要直白。先别急着看那堆命令行,把流程理清楚了,后面操作起来会顺手很多。下面就来拆解一下整个过程。

-
安装Golang——这事得先搞定。如果还没装,最简单的办法是用yum直接装:
sudo yum install golang当然,如果追求最新版本或者想自己控制编译选项,也可以从官网下载源码包来装。这里以1.18.1为例:
wget https://golang.org/dl/go1.18.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin记得把
go1.18.1换成你实际需要的版本号。装完之后顺手验证一下:go version,能正常输出版本就说明成了。 -
设置GOPATH和GOROOT——这两个环境变量决定了Go的工作模式和安装路径。GOROOT指向Go的安装目录,GOPATH则是你存放项目代码的地方。通常这么配:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin为了省事,把这几个export丢到
~/.bashrc或~/.bash_profile里,以后每次登录就自动生效了。 -
编写你的Golang应用——打开你趁手的编辑器,在
$GOPATH/src/myapp目录下写代码。这一步没什么好说的,按你的业务逻辑来就行。 -
构建应用——进入应用目录,直接跑:
go build -o myapp当前目录下就会生成一个名叫
myapp的可执行文件。注意,默认是动态链接,如果目标环境依赖库齐全,直接用就行。 -
压缩可执行文件——要是想分发出去,体积越小越好。这时候可以请出
upx这个压缩神器:sudo yum install upx upx --best myapp跑完再看,文件大小能缩掉不少,尤其对网络传输友好的场景特别实用。
-
创建启动脚本(可选)——如果打算把应用部署成服务,写个启动脚本会更规范。下面是一个典型的模板:
#!/bin/bash # myapp.service # Start and stop script for the myapp application. case "$1" in start) echo "Starting myapp" /path/to/myapp & ;; stop) echo "Stopping myapp" pkill myapp ;; *) echo "Usage: /etc/init.d/myapp {start|stop}" exit 1 ;; esac exit 0保存为
/etc/init.d/myapp,然后给执行权限:sudo chmod +x /etc/init.d/myapp之后就可以用
service myapp start和service myapp stop来控制了。 -
测试你的应用——打包部署之前,先在开发环境里跑一遍完整的测试,确保功能没问题。这一步省不了,否则后面出问题排查起来更头疼。
以上步骤在CentOS 7和CentOS 8上都能用,其它版本可能需要微调。另外,如果应用要部署到不同环境,建议考虑静态编译(CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-s -w')或者直接上Docker容器,这样依赖问题就彻底解决了。