1. 安装Go环境
在Debian上部署Go项目前,需先安装Go语言环境。推荐两种方式:
sudo apt update && sudo apt install golang-go -y
,自动安装官方仓库的最新稳定版Go(如1.20+)。go1.22.0.linux-amd64.tar.gz
),执行sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
解压至/usr/local
,再配置环境变量。go version
验证是否成功(应输出Go版本及系统信息)。2. 准备Go项目
进入项目目录(如/path/to/your/project
),若使用Go模块(推荐),执行go mod init your_module_name
初始化模块(生成go.mod
文件);若未使用模块,确保项目依赖已通过go get
下载(如go get -u github.com/gin-gonic/gin
)。编译项目生成可执行文件:go build -o your_project_name
(如go build -o myapp
),生成的二进制文件可直接运行。
3. 运行Go项目
./your_project_name
(如./myapp
),程序会在前台运行,输出日志到终端。nohup ./your_project_name &
将程序放到后台,输出重定向到nohup.out
文件(避免终端关闭后进程终止)。4. 使用systemd管理进程(推荐生产环境使用)
为确保项目开机自启、崩溃自动重启,可创建systemd服务:
sudo nano /etc/systemd/system/your_project_name.service
(如myapp.service
),添加以下内容(根据实际调整):[Unit]
Description=Your Go Project
After=network.target
[Service]
User=your_username # 替换为运行项目的用户(如ubuntu)
WorkingDirectory=/path/to/your/project # 项目目录
ExecStart=/path/to/your/project/your_project_name # 可执行文件路径
Restart=always # 崩溃时自动重启
Environment=PORT=8080 # 设置环境变量(可选)
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
(重新加载systemd配置)、sudo systemctl start your_project_name
(启动服务)、sudo systemctl enable your_project_name
(设置开机自启)。sudo systemctl status your_project_name
(显示运行状态、日志片段)。5. 配置Nginx反向代理(可选,提升安全性与性能)
若项目需要对外提供服务(如HTTP/HTTPS),可通过Nginx反向代理:
sudo apt install nginx -y
。/etc/nginx/sites-available/default
,添加以下server
块(替换your_domain_or_ip
为域名或IP):server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://localhost:8080; # 转发到Go应用的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo systemctl restart nginx
。sudo ufw allow 'Nginx Full'
(允许HTTP/HTTPS流量)。6. 使用Docker容器化部署(可选,确保环境一致性)
通过Docker可将项目与系统环境隔离,简化部署流程:
Dockerfile
,内容如下(以Go 1.22为例):# 构建阶段:使用官方Go镜像编译项目
FROM golang:1.22 as build
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o myapp . # 静态编译(无需依赖系统库)
# 运行阶段:使用轻量级Alpine镜像
FROM alpine:latest
RUN apk --no-cache add ca-certificates # 添加CA证书(支持HTTPS)
WORKDIR /root/
COPY --from=build /app/myapp .
EXPOSE 8080
CMD ["./myapp"]
docker build -t your_project_name .
(如docker build -t myapp
)。docker run -d -p 8080:8080 --name myapp_container your_project_name
(-d
表示后台运行,-p
映射端口)。