在 Linux 上部署 Go(Golang)应用,通常可以分为编译、传输、运行、守护进程、反向代理几个步骤。下面我按最常见、实用的方式给你讲,从简单到规范。
# Ubuntu / Debian
sudo apt update
sudo apt install -y git curl wget
# CentOS / Rocky / Alma
sudo yum install -y git curl wget
如果你的应用是源码部署,需要安装 Go:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
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
GOOS=linux GOARCH=amd64 go build -o app main.go
生成:
app (Linux 可执行文件)
⚠️ 注意:
scp app user@server_ip:/home/user/app
git clone https://github.com/your/project.git
cd project
go build -o app
chmod +x app
./app
默认占用端口(如 8080):
curl http://localhost:8080
nohup ./app > app.log 2>&1 &
查看进程:
ps aux | grep app
停止:
kill -9 <pid>
sudo vim /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=Go App
After=network.target
[Service]
User=www
WorkingDirectory=/home/www/app
ExecStart=/home/www/app/app
Restart=always
Environment=GIN_MODE=release
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp
sudo apt install nginx
sudo vim /etc/nginx/sites-enabled/myapp
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
sudo nginx -t
sudo systemctl restart nginx
/home/www/app/
├── app
├── config.yaml
├── logs/
└── uploads/
你可以告诉我:
我可以直接给你 一份可复制的部署脚本或 Dockerfile。