在Linux上部署Golang项目可参考以下步骤:
安装Golang环境
go1.21.0.linux-amd64.tar.gz
),解压至/usr/local
: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
。~/.bashrc
中添加export PATH=$PATH:/usr/local/go/bin
,执行source ~/.bashrc
并验证go version
。准备项目
go mod
管理依赖(初始化命令:go mod init <模块名>
),通过go mod tidy
下载依赖。构建可执行文件
go build -o <输出文件名> main.go
,生成可执行文件。GOOS=linux GOARCH=amd64
指定目标环境(如GOOS=linux GOARCH=amd64 go build -o app
)。部署方式
./<可执行文件>
启动服务,适用于开发测试。nohup ./<可执行文件> > log.log 2>&1 &
,将输出重定向到日志文件。/etc/systemd/system/<服务名>.service
,内容示例:[Unit]
Description=Go Application
After=network.target
[Service]
User=your_user
WorkingDirectory=/path/to/project
ExecStart=/path/to/<可执行文件>
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
、sudo systemctl start <服务名>
、sudo systemctl enable <服务名>
完成部署。Dockerfile
,示例:FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o app .
FROM alpine:latest
COPY --from=builder /app/app /usr/local/bin/app
EXPOSE 8080
CMD ["app"]
docker build -t <镜像名> .
,docker run -p 8080:8080 <镜像名>
。配置防火墙
ufw
或iptables
开放对应端口(如sudo ufw allow 8080
)。注意事项:
-ldflags="-s -w"
优化二进制体积,或静态编译避免依赖问题。参考来源: