温馨提示×

怎样在Debian部署Golang项目

小樊
42
2026-09-14 09:42:19
栏目: 编程语言

在 Debian 上部署 Golang 项目,通常可以分为 环境准备 → 构建 → 部署运行 → 进程管理 →(可选)反向代理 几个步骤。下面给你一套通用且实用的方案,适用于大多数 Web / 后端 Golang 项目。


一、环境准备

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Go(推荐官方二进制方式)

cd /tmp
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

二、上传并构建项目

方式一:直接在服务器构建(简单)

git clone https://github.com/yourname/yourproject.git
cd yourproject
go build -o app main.go

方式二:本地交叉编译(推荐生产)

在本地 macOS / Windows:

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

然后上传 app 到服务器。


三、部署项目

1. 创建部署目录

sudo mkdir -p /opt/yourproject
sudo cp app /opt/yourproject/
sudo cp -r config /opt/yourproject/   # 如有配置

2. 创建专用用户(安全)

sudo useradd -r -s /bin/false gouser
sudo chown -R gouser:gouser /opt/yourproject

四、使用 systemd 管理进程(推荐)

1. 创建 service 文件

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

内容示例:

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

[Service]
User=gouser
WorkingDirectory=/opt/yourproject
ExecStart=/opt/yourproject/app
Restart=always
Environment=GO_ENV=production

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start yourproject
sudo systemctl enable yourproject

查看状态:

sudo systemctl status yourproject

五、(Web 项目)使用 Nginx 反向代理

1. 安装 Nginx

sudo apt install nginx -y

2. 配置反向代理

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

示例:

server {
    listen 80;
    server_name yourdomain.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/yourproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

六、可选增强

✅ HTTPS(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

✅ 日志管理

  • 使用 journalctl -u yourproject
  • 或配置 log 文件 + logrotate

✅ 多环境配置

Environment=APP_ENV=production

七、常见部署结构

/opt/yourproject
├── app
├── config.yaml
└── logs/

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

  • 项目类型(Web / API / 定时任务)
  • 是否使用数据库
  • 是否已有 Docker

我可以直接给你更精确的部署方案或 Docker 方案

0