温馨提示×

linux golang怎样部署服务

小樊
34
2026-10-12 23:05:41
栏目: 编程语言

在 Linux 上部署 Golang 服务,通常分为 编译 → 传输 → 运行 → 守护 → 反向代理/运维 几个步骤。下面给你一套实战常用方案,从简单到生产级。


一、基础部署(最常用)

1. 本地或服务器编译

Golang 是静态编译,部署非常简单。

# 在开发机或服务器上
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp main.go

如果是跨平台(Mac/Windows 编译 Linux):

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp

2. 上传到服务器

scp myapp user@server:/opt/myapp/

3. 直接运行

chmod +x /opt/myapp/myapp
/opt/myapp/myapp

⚠️ 这样退出终端就会停。


二、后台运行(临时方案)

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

查看:

ps aux | grep myapp
tail -f app.log

三、生产级部署(推荐)

✅ 方案 1:systemd(最推荐)

1. 创建服务文件

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

内容:

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

[Service]
User=www
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/myapp
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. 常用命令

systemctl status myapp
journalctl -u myapp -f

✅ 优点:

  • 自动重启
  • 开机自启
  • 日志管理

✅ 方案 2:supervisor(非 systemd 系统)

sudo apt install supervisor

配置:

[program:myapp]
command=/opt/myapp/myapp
directory=/opt/myapp
autostart=true
autorestart=true
user=www
stdout_logfile=/var/log/myapp.log
sudo supervisorctl update

四、使用 Nginx 反向代理(常见)

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 nginx -t
sudo systemctl reload nginx

五、Docker 部署(现代主流)

Dockerfile

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

FROM alpine
WORKDIR /app
COPY --from=build /app/app .
CMD ["./app"]
docker build -t myapp .
docker run -d -p 8080:8080 myapp

六、常见问题

1. 端口被占用

lsof -i:8080

2. 防火墙

ufw allow 8080

3. 环境变量

Environment=APP_ENV=prod

七、推荐组合(新手 ✅)

systemd + Nginx + Go 二进制

最简单、最稳定、最像生产环境。


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

  • 用的框架(gin / echo / fiber)
  • 是否要 https
  • 是否用 Docker

我可以直接给你 完整可复制配置。

0 踩