温馨提示×

怎样在debian部署golang应用

小樊
32
2026-10-05 05:18:05
栏目: 编程语言

在 Debian 上部署 Go(Golang)应用,通常可以按下面几个步骤来做。下面以 Debian 11/12 为例,覆盖从环境准备到生产部署的常见做法。


一、准备 Debian 环境

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装基础工具

sudo apt install -y git curl wget build-essential

二、安装 Go 环境

方式一:使用官方二进制(推荐)

wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
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

方式二:使用 apt(版本较旧)

sudo apt install -y golang-go

三、构建 Go 应用

1. 上传代码

git clone https://github.com/yourname/yourapp.git
cd yourapp

2. 编译(生产建议)

go build -o app main.go

或交叉编译(在本地构建后上传):

GOOS=linux GOARCH=amd64 go build -o app

四、运行 Go 应用

1. 直接运行(测试用)

./app

2. 使用 systemd(生产推荐)

创建服务文件:

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

示例内容:

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

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

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable goapp
sudo systemctl start goapp

查看状态:

sudo systemctl status goapp

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

1. 安装 Nginx

sudo apt install -y nginx

2. 配置反向代理

sudo nano /etc/nginx/sites-available/goapp

示例:

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/goapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

六、使用 HTTPS(可选)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

七、部署方式对比

方式 适用场景
直接运行 测试
systemd 单机生产
Docker 微服务 / 云
supervisor 老系统

八、Docker 方式(简要)

FROM golang:1.22
WORKDIR /app
COPY . .
RUN go build -o app
CMD ["./app"]
docker build -t goapp .
docker run -d -p 8080:8080 goapp

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

  • 是否是 Web 服务 / CLI 工具
  • 是否使用 数据库
  • 是否要 Docker / K8s

我可以给你更精确的部署方案。

0 踩