在Linux环境中部署Golang应用通常涉及以下几个步骤:
1. 安装Golang环境
-
下载并解压Go安装包:
从Go官方下载页面下载适合Linux系统的Go安装包,例如go1.21.0.linux-amd64.tar.gz。
使用以下命令下载并解压:wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz -
设置环境变量:
编辑你的shell配置文件(如.bashrc或.zshrc),添加以下内容:export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export GOROOT=/usr/local/go保存文件并运行以下命令使更改生效:
source ~/.bashrc -
验证安装:
运行以下命令验证Go是否安装成功:go version如果输出了Go的版本信息,说明安装成功。
2. 编译Golang应用程序
- 在你的应用程序目录中,使用以下命令构建应用程序:
go build这将生成一个名为
main的二进制文件,你可以在文件所在的目录中运行它:./main
3. 部署Golang应用程序
直接部署方式
-
克隆你的项目到本地:
git clone https://github.com/yourusername/yourproject.git cd yourproject -
构建项目,假设
main.go是入口文件:go build -o yourservice main.go -
可以选择前台运行服务:
./yourservice -
或者使用
nohup命令让服务在后台运行,并将日志输出到service.log文件:nohup ./yourservice > service.log 2>&1 &
使用systemd管理服务
-
创建服务配置文件
/etc/systemd/system/yourservice.service,内容如下:[Unit] Description=Your Go Application After=network.target [Service] User=youruser Group=yourgroup WorkingDirectory=/path/to/yourproject ExecStart=/path/to/yourproject/yourservice Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier=yourservice Environment=GIN_MODE=release [Install] WantedBy=multi-user.target -
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable yourservice sudo systemctl start yourservice -
查看服务状态:
sudo systemctl status yourservice
4. 高级部署选项
使用Supervisor管理
-
安装 Supervisor:
sudo apt install supervisor -
创建配置文件
/etc/supervisor/conf.d/yourservice.conf,内容如下:[program:yourservice] command=/path/to/yourproject/yourservice directory=/path/to/yourproject autostart=true autorestart=true stderr_logfile=/var/log/yourservice.err.log stdout_logfile=/var/log/yourservice.out.log user=youruser environment=GIN_MODE=release -
启动服务:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start yourservice
使用Docker部署
-
创建
Dockerfile,内容如下:FROM golang:1.21-alpine AS builder WORKDIR /app COPY . . RUN go mod download RUN CGO_ENABLED=0 GOOS=linux go build -o yourservice . FROM alpine:latest WORKDIR /app COPY --from=builder /app/yourservice . EXPOSE 8080 CMD ["./yourservice"] -
构建并运行:
docker build -t yourservice . docker run -d -p 8080:8080 --name yourservice-container yourservice