温馨提示×

怎么在linux部署golang应用

小樊
39
2026-10-24 18:59:18
栏目: 编程语言

在 Linux 上部署 Go(Golang)应用,通常可以分为编译、传输、运行、守护进程、反向代理几个步骤。下面我按最常见、实用的方式给你讲,从简单到规范。


一、准备环境(Linux 服务器)

1. 安装基础工具

# Ubuntu / Debian
sudo apt update
sudo apt install -y git curl wget

# CentOS / Rocky / Alma
sudo yum install -y git curl wget

2. 安装 Go(可选)

如果你的应用是源码部署,需要安装 Go:

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

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

验证:

go version

二、编译 Go 应用(推荐交叉编译)

在开发机(本地)编译 Linux 版本

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

生成:

app  (Linux 可执行文件)

⚠️ 注意:

  • 服务器 不需要安装 Go
  • 编译后的文件可直接运行

三、上传到 Linux 服务器

方式 1:scp

scp app user@server_ip:/home/user/app

方式 2:git(源码部署)

git clone https://github.com/your/project.git
cd project
go build -o app

四、运行 Go 应用

1. 直接运行(测试用)

chmod +x app
./app

默认占用端口(如 8080):

curl http://localhost:8080

五、后台运行(生产基础)

使用 nohup

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

查看进程:

ps aux | grep app

停止:

kill -9 <pid>

六、使用 systemd(推荐生产环境 ✅)

1. 创建服务文件

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

内容示例:

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

[Service]
User=www
WorkingDirectory=/home/www/app
ExecStart=/home/www/app/app
Restart=always
Environment=GIN_MODE=release

[Install]
WantedBy=multi-user.target

2. 启动服务

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

3. 查看状态

sudo systemctl status myapp

七、用 Nginx 做反向代理(常见)

安装 Nginx

sudo apt install nginx

配置

sudo vim /etc/nginx/sites-enabled/myapp
server {
    listen 80;
    server_name example.com;

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

八、常见部署结构(推荐)

/home/www/app/
├── app
├── config.yaml
├── logs/
└── uploads/

九、进阶方案(可选)

  • ✅ Docker + docker-compose
  • ✅ GitHub Actions 自动部署
  • ✅ 使用 Supervisor 管理进程
  • ✅ 多环境配置(dev / prod)

十、我可以进一步帮你

你可以告诉我:

  1. 是 Web 服务 / CLI 工具 / 微服务?
  2. 用的是 Gin / Beego / Echo?
  3. 是否要用 Docker 或 Kubernetes?

我可以直接给你 一份可复制的部署脚本或 Dockerfile。

0 踩