温馨提示×

Golang服务在Debian如何起

小樊
47
2026-09-23 12:57:29
栏目: 编程语言

在 Debian 上启动一个 Golang 服务,常见有几种方式,从最简单到生产推荐依次说明。


一、最基础:直接运行(测试用)

如果你的程序已经编译好:

# 编译
go build -o myapp main.go

# 运行
./myapp

⚠️ 这种方式:

  • 退出终端就停
  • 不适合生产环境

二、后台运行(不推荐长期使用)

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

查看进程:

ps aux | grep myapp

三、使用 systemd(✅ 推荐,Debian 标配)

1️⃣ 编译并放到标准目录

sudo cp myapp /usr/local/bin/myapp
sudo chmod +x /usr/local/bin/myapp

2️⃣ 创建 systemd 服务文件

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

示例内容:

[Unit]
Description=My Golang Service
After=network.target

[Service]
ExecStart=/usr/local/bin/myapp
WorkingDirectory=/usr/local/bin
User=www-data
Restart=always
Environment=GO_ENV=production

[Install]
WantedBy=multi-user.target

3️⃣ 启动服务

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

4️⃣ 常用命令

systemctl status myapp
journalctl -u myapp -f
systemctl restart myapp
systemctl stop myapp

✅ 优点:

  • 开机自启
  • 崩溃自动重启
  • 日志统一管理

四、使用 supervisor(可选)

适合不想用 systemd 的情况。

sudo apt install supervisor

配置 /etc/supervisor/conf.d/myapp.conf:

[program:myapp]
command=/usr/local/bin/myapp
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp

五、Docker 方式(云原生常用)

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

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

推荐总结

场景 方式
本地测试 直接运行
生产服务 ✅ systemd
多服务管理 supervisor
容器化 Docker

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

  • Go 程序是否监听端口?
  • Debian 版本(11 / 12)?
  • 是否需要 HTTPS / 反向代理?

我可以给你一份完整可直接用的配置。

0 踩