商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu下Golang项目如何部署

Ubuntu下Golang项目如何部署

  发布于2026-07-14 阅读(0)

扫一扫,手机访问

Ubuntu下Golang项目部署全流程

在Ubuntu系统上部署Golang项目,其实并没有想象中那么复杂。从环境准备到生产环境管理,再到Docker容器化,每一步都有清晰的脉络。下面我们就来一步步梳理,确保项目稳定、高效地运行起来。

Ubuntu下Golang项目如何部署

1. 准备工作

  • 首先,安装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 使其生效。

2. 获取项目代码

  • 如果项目托管在Git仓库(比如GitHub),直接用 git clone 拉取代码:
    git clone https://github.com/yourusername/your-golang-project.git
    cd your-golang-project
    如果项目没有托管,也可以通过SCP、SFTP等工具将本地代码上传到服务器

3. 编译项目

  • 进入项目目录:
    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%的体积。

4. 运行项目

  • 直接运行:在项目目录下执行生成的可执行文件:

    ./your-project-name

    如果是Web服务,记得确保监听端口(比如8080)没有被占用,然后用 curl http://localhost:8080 测试一下连通性。

  • 如果希望项目在后台持续运行,即使终端关闭也不受影响,可以使用 nohup

    nohup ./your-project-name > app.log 2>&1 &

    这里 > app.log 把输出重定向到日志文件,2>&1 把标准错误也合并到同一个文件,最后的 & 表示后台运行。

5. 使用systemd管理服务(推荐用于生产环境)

  • 创建systemd服务文件,在 /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),说明服务正常运行。

6. 配置防火墙(可选但重要)

  • 如果项目需要对外提供服务(比如Web服务),记得开放对应的端口。以8080为例:
    sudo ufw allow 8080/tcp
    sudo ufw enable
    确认端口是否开放:
    sudo ufw status
    输出中应该能看到 8080/tcp ALLOW

7. 可选:使用Docker容器化部署(跨平台/简化环境依赖)

  • 先安装Docker(如果还没安装的话):
    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镜像:
    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容器化,每种方式都有其适用场景,关键是要确保项目稳定、高效。希望这份指南能帮你少走些弯路。

本文转载于:https://www.yisu.com/ask/92741224.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注