在 Debian 上部署 Go(Golang)应用,通常可以按下面几个步骤来做。下面以 Debian 11/12 为例,覆盖从环境准备到生产部署的常见做法。
sudo apt update
sudo apt upgrade -y
sudo apt install -y git curl wget build-essential
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
sudo apt install -y golang-go
git clone https://github.com/yourname/yourapp.git
cd yourapp
go build -o app main.go
或交叉编译(在本地构建后上传):
GOOS=linux GOARCH=amd64 go build -o app
./app
创建服务文件:
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
sudo apt install -y nginx
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
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
| 方式 | 适用场景 |
|---|---|
| 直接运行 | 测试 |
| systemd | 单机生产 |
| Docker | 微服务 / 云 |
| supervisor | 老系统 |
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
如果你愿意,可以告诉我:
我可以给你更精确的部署方案。