温馨提示×

怎样在centos跑golang程序

小樊
44
2026-10-11 16:47:06
栏目: 编程语言

在 CentOS 上运行 Golang(Go)程序一般有几种常见方式,下面从安装 Go → 编译 → 运行 → 后台运行一步步说明。


一、在 CentOS 上安装 Go

方法 1:官方二进制包(推荐)

# 下载(以 1.22 为例,可换成最新版本)
wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz

# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz

# 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

# 验证
go version

方法 2:使用 yum(版本较旧)

sudo yum install golang -y
go version

二、编写并运行 Go 程序

1. 写一个简单的 Go 程序

mkdir ~/goapp && cd ~/goapp
vim main.go

main.go 示例:

package main

import "fmt"

func main() {
    fmt.Println("Hello CentOS")
}

2. 直接运行(开发环境)

go run main.go

三、编译为可执行文件(生产环境推荐)

go build -o myapp main.go

运行:

./myapp

✅ 编译后的程序不依赖 Go 环境,可直接拷贝到其他 CentOS 服务器运行


四、后台运行 Go 程序

方法 1:nohup(简单)

nohup ./myapp > app.log 2>&1 &

查看日志:

tail -f app.log

方法 2:systemd(推荐,服务器常用)

创建服务文件:

sudo vim /etc/systemd/system/myapp.service

内容示例:

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

[Service]
ExecStart=/root/goapp/myapp
WorkingDirectory=/root/goapp
Restart=always
User=root

[Install]
WantedBy=multi-user.target

启动:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

查看状态:

systemctl status myapp

五、常见问题

1. 编译时报错缺少依赖

go mod init myapp
go mod tidy

2. CentOS 7 缺少 glibc

  • 使用 静态编译:
CGO_ENABLED=0 GOOS=linux go build -a -o myapp main.go

3. 端口无法访问

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

如果你有具体场景(比如 Web 服务 / 定时任务 / Docker / CentOS 7 or 8),我可以给你更精确的方案。

0 踩