温馨提示×

golang在centos如何部署

小樊
43
2026-09-02 18:48:14
栏目: 编程语言

下面按从零到可运行的思路,给你讲在 CentOS 上部署 Go(Golang)应用 的常见做法,适合新手到生产环境。


一、方式选择(先看你要哪种)

在 CentOS 上部署 Go,通常有三种方式:

  1. 直接二进制部署(最常用、最简单)
  2. Systemd 守护进程(推荐生产)
  3. Docker 部署(更现代、易迁移)

下面逐一说明。


二、安装 Go 环境(仅编译需要)

如果你的程序是 已经编译好的二进制,可以跳过这一步。

1. 下载 Go(以 1.22 为例)

cd /usr/local
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

2. 配置环境变量

vim /etc/profile

添加:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

生效:

source /etc/profile

验证:

go version

三、编译 Go 程序(在服务器或本地)

本地编译(推荐)

GOOS=linux GOARCH=amd64 go build -o app main.go

然后把 app 上传到 CentOS。

或在服务器编译

go build -o app main.go

四、直接运行(测试用)

chmod +x app
./app

⚠️ 这样关闭终端就会退出,不适合生产


五、Systemd 部署(推荐生产)

1. 创建服务文件

vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My Go App
After=network.target

[Service]
User=www
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/app
Restart=always
Environment=GO_ENV=production

[Install]
WantedBy=multi-user.target

2. 启动服务

systemctl daemon-reload
systemctl start myapp
systemctl enable myapp

3. 查看状态

systemctl status myapp
journalctl -u myapp -f

六、使用 Nginx 反向代理(Web 服务常见)

安装 Nginx

yum install nginx -y
systemctl enable nginx
systemctl start nginx

配置反向代理

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}
nginx -t
systemctl reload nginx

七、Docker 部署(进阶)

Dockerfile 示例

FROM golang:1.22 as build
WORKDIR /app
COPY . .
RUN go build -o app

FROM centos:7
WORKDIR /app
COPY --from=build /app/app .
EXPOSE 8080
CMD ["./app"]

构建运行

docker build -t myapp .
docker run -d -p 8080:8080 myapp

八、常见坑提醒

  • 防火墙
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
  • 端口被占用
netstat -tunlp | grep 8080
  • 权限问题
    • 不要用 root 跑业务程序
    • 使用专用用户(如 www

九、总结建议

场景 推荐方式
学习 / 测试 直接运行
生产服务 Systemd + Nginx
微服务 / 容器 Docker

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Go 项目类型(Web / 后台 / CLI)
  • 是否用 Docker

我可以直接给你一套可复制的部署脚本

0