发布于2026-07-14 阅读(0)
扫一扫,手机访问
在Ubuntu系统上部署Golang项目,其实并没有想象中那么复杂。从环境准备到生产环境管理,再到Docker容器化,每一步都有清晰的脉络。下面我们就来一步步梳理,确保项目稳定、高效地运行起来。

首先,安装Golang环境。推荐版本1.16及以上,通过以下命令更新软件包索引并安装:
sudo apt update && sudo apt install golang-go
装完后验证一下:
go version
如果输出类似 go version go1.21.0 linux/amd64,说明安装成功。
环境变量配置虽然不是必须的,但强烈建议做一下,方便后续依赖管理和项目构建。编辑 ~/.bashrc(或 ~/.profile)文件,加入以下内容:
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然后执行 source ~/.bashrc 使其生效。
git clone 拉取代码:git clone https://github.com/yourusername/your-golang-project.git
cd your-golang-project
如果项目没有托管,也可以通过SCP、SFTP等工具将本地代码上传到服务器。cd /path/to/your-golang-project
然后使用 go build 编译,生成的可执行文件默认与项目目录同名:go build -o your-project-name
想让可执行文件体积更小?可以加上 -ldflags 参数去掉调试信息:go build -ldflags="-s -w" -o your-project-name
其中 -s 省略符号表,-w 省略DWARF调试信息,通常能减少30%~50%的体积。直接运行:在项目目录下执行生成的可执行文件:
./your-project-name
如果是Web服务,记得确保监听端口(比如8080)没有被占用,然后用 curl http://localhost:8080 测试一下连通性。
如果希望项目在后台持续运行,即使终端关闭也不受影响,可以使用 nohup:
nohup ./your-project-name > app.log 2>&1 &
这里 > app.log 把输出重定向到日志文件,2>&1 把标准错误也合并到同一个文件,最后的 & 表示后台运行。
/etc/systemd/system/ 目录下新建一个文件,比如 your-project.service:sudo nano /etc/systemd/system/your-project.service
写入以下内容(根据实际情况修改路径和用户):[Unit]
Description=Your Golang Project
After=network.target
[Service]
Type=simple
User=your-username
Group=your-groupname
WorkingDirectory=/path/to/your-golang-project
ExecStart=/path/to/your-golang-project/your-project-name
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
sudo systemctl start your-project.service
sudo systemctl enable your-project.service
sudo systemctl status your-project.service
如果输出显示 active (running),说明服务正常运行。sudo ufw allow 8080/tcp
sudo ufw enable
确认端口是否开放:sudo ufw status
输出中应该能看到 8080/tcp ALLOW。sudo apt update && sudo apt install docker.io
sudo systemctl start docker && sudo systemctl enable docker
Dockerfile:# 使用轻量级Alpine镜像作为基础
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o your-project-name .
# 最终使用scratch镜像,进一步减小体积
FROM scratch
COPY --from=builder /app/your-project-name /your-project-name
ENTRYPOINT ["/your-project-name"]
docker build -t your-golang-project .
docker run -d -p 8080:8080 --name your-project-container your-golang-project
验证容器是否运行:docker ps
如果输出中包含 your-project-container,说明容器已启动。至此,Ubuntu系统上Golang项目的部署流程就全部走完了。根据实际场景选择直接运行、systemd管理还是Docker容器化,每种方式都有其适用场景,关键是要确保项目稳定、高效。希望这份指南能帮你少走些弯路。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8