在 Debian 上部署 Golang 项目,通常可以分为 环境准备 → 构建 → 部署运行 → 进程管理 →(可选)反向代理 几个步骤。下面给你一套通用且实用的方案,适用于大多数 Web / 后端 Golang 项目。
sudo apt update
sudo apt upgrade -y
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 到服务器。
sudo mkdir -p /opt/yourproject
sudo cp app /opt/yourproject/
sudo cp -r config /opt/yourproject/ # 如有配置
sudo useradd -r -s /bin/false gouser
sudo chown -R gouser:gouser /opt/yourproject
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
sudo systemctl daemon-reload
sudo systemctl start yourproject
sudo systemctl enable yourproject
查看状态:
sudo systemctl status yourproject
sudo apt install nginx -y
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
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
journalctl -u yourprojectlogrotateEnvironment=APP_ENV=production
/opt/yourproject
├── app
├── config.yaml
└── logs/
如果你愿意,可以告诉我:
我可以直接给你更精确的部署方案或 Docker 方案。