温馨提示×

ubuntu如何部署golang应用

小樊
41
2026-10-28 08:58:51
栏目: 编程语言

在 Ubuntu 上部署 Golang 应用,通常分为准备环境 → 构建应用 → 运行/守护 → (可选)反向代理几个步骤。下面给你一套实战可用、由简到优的方案。


一、基础环境准备

1. 安装 Go(如果还没装)

sudo apt update
sudo apt install -y golang-go

验证:

go version

如果需要新版本 Go,建议从 https://go.dev/dl 下载官方包。


二、构建 Golang 应用

1. 上传代码

scp -r your_project user@server:/opt/yourapp

2. 编译(重要:交叉/静态编译)

cd /opt/yourapp
go mod tidy
CGO_ENABLED=0 GOOS=linux go build -o app main.go

生成的 app 就是可执行文件。


三、直接运行(最简单)

./app

❌ 问题:终端关闭就停了
✅ 适合:临时测试


四、用 systemd 部署(推荐生产)

1. 创建服务文件

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

内容示例:

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

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

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable yourapp
sudo systemctl start yourapp

3. 查看状态

sudo systemctl status yourapp
journalctl -u yourapp -f

五、用 Nginx 做反向代理(Web 服务常见)

1. 安装 Nginx

sudo apt install nginx

2. 配置

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

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

六、进阶方案(可选)

✅ 多环境配置

  • 使用 .env + godotenv
  • 或 systemd Environment=

✅ HTTPS

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

✅ 容器化部署(现代推荐)

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

FROM alpine
COPY --from=build /app/app /app
CMD ["/app"]

七、常见坑

❌ permission denied → 用非 root 用户运行
❌ 端口被占用 → lsof -i:8080
❌ CGO 报错 → CGO_ENABLED=0
❌ 防火墙 → ufw allow 80/443


总结(最简生产方案)

Go 编译 → systemd 守护 → Nginx 反代 → Certbot HTTPS

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

  • Web / API / 微服务?
  • 是否用 Docker?
  • Ubuntu 版本?

我可以直接给你一套定制部署模板。

0 踩