温馨提示×

怎么在Debian部署Golang项目

小樊
48
2026-08-27 23:24:01
栏目: 编程语言

在 Debian 上部署 Golang 项目,通常可以按下面 标准流程 来做。我按「从零开始」给你一个完整示例,适合大多数 Web / 后端服务场景。


一、准备环境(Debian)

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装必要工具

sudo apt install -y wget curl git unzip

二、安装 Golang(推荐官方方式)

1. 查看最新版本

https://go.dev/dl/

例如当前最新是 go1.22.4

2. 下载并解压

wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz

3. 配置环境变量

编辑:

nano ~/.bashrc

添加:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

生效:

source ~/.bashrc

4. 验证

go version

三、上传并构建 Golang 项目

方式一:直接上传代码

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

方式二:从 Git 拉取

cd /opt
git clone https://github.com/yourname/your_project.git

四、编译 Golang 项目

进入项目目录:

cd /opt/your_project

1. 下载依赖

go mod tidy

2. 编译(推荐生产环境)

go build -o app main.go

如果是 Web 项目,通常是 main.go


五、运行 Golang 项目

1. 直接运行(测试)

./app

2. 后台运行(不推荐长期使用)

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

六、使用 systemd 管理(推荐 ✅)

1. 创建服务文件

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

内容示例:

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

[Service]
User=root
WorkingDirectory=/opt/your_project
ExecStart=/opt/your_project/app
Restart=always
Environment=GO_ENV=production

[Install]
WantedBy=multi-user.target

2. 启动并设置开机自启

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

3. 查看状态

sudo systemctl status myapp

七、配置反向代理(常见)

1. 安装 Nginx

sudo apt install nginx -y

2. 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

八、防火墙(如有)

sudo apt install ufw
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

九、常见问题

1. 端口被占用

lsof -i :8080

2. 权限问题

chmod +x app

3. 环境变量不生效

确保 systemd 服务中 Environment= 已配置


十、总结流程

✅ 安装 Go
✅ 拉取 / 上传代码
go build
✅ systemd 管理
✅ Nginx 反向代理


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

  • Web API / Gin / Fiber / Beego
  • 是否使用 Docker
  • 是否要 HTTPS(Let’s Encrypt)

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

0