温馨提示×

golang在ubuntu上如何部署

小樊
36
2025-10-12 02:43:16
栏目: 编程语言

Golang在Ubuntu上的部署指南

一、准备工作

在部署前,请确保Ubuntu服务器满足以下条件:

  • 系统版本为Ubuntu 18.04及以上(推荐22.04 LTS以获得更好的兼容性);
  • 已安装build-essential工具包(用于编译Go程序);
  • 已配置稳定的网络环境(用于下载依赖或上传代码)。

二、安装Golang环境

方法1:使用APT包管理器(快速安装,适合新手)

  1. 更新APT包列表
    运行sudo apt update,确保系统包信息是最新的。
  2. 安装Golang
    执行sudo apt install golang-go,系统会自动下载并安装Golang(默认版本为Ubuntu仓库提供的稳定版,如1.20.x)。
  3. 验证安装
    运行go version,若输出类似go version go1.20.3 linux/amd64,则说明安装成功。

方法2:手动下载官方二进制包(推荐,灵活控制版本)

  1. 下载Golang二进制包
    访问Golang官方下载页面(golang.org/dl),选择适合Ubuntu的.tar.gz文件(如go1.23.0.linux-amd64.tar.gz),使用wget命令下载:
    wget https://golang.org/dl/go1.23.0.linux-amd64.tar.gz
  2. 解压并安装
    将下载的包解压到/usr/local目录(系统级安装路径):
    sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
  3. 配置环境变量
    编辑用户目录下的~/.bashrc(或~/.profile)文件,添加以下内容:
    export GOROOT=/usr/local/go  # Golang安装根目录
    export GOPATH=$HOME/go       # Go项目工作目录
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin  # 将Go命令加入PATH
    
    保存后运行source ~/.bashrc使配置生效。
  4. 验证安装
    再次运行go version,确认输出正确的版本信息。

方法3:使用Snap包管理器(适合追求便捷的用户)

  1. 安装Snapd
    若未安装Snapd,运行sudo apt update && sudo apt install snapd
  2. 安装Golang
    执行sudo snap install go --classic,Snap会自动下载并安装最新稳定版的Golang。
  3. 验证安装
    运行go version,检查版本输出。

三、编写并部署Golang应用

  1. 创建项目目录并初始化模块
    在用户目录下创建项目文件夹(如~/my-golang-app),运行go mod init my-golang-appmy-golang-app为模块名称,可自定义),生成go.mod文件(用于管理依赖)。
  2. 编写示例代码
    创建main.go文件,内容如下(以经典的Hello World程序为例):
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, Ubuntu + Golang!")
    }
    
  3. 编译与运行
    • 编译程序:go build -o my-golang-app(生成可执行文件my-golang-app);
    • 运行程序:./my-golang-app,终端将输出Hello, Ubuntu + Golang!

四、可选配置:提升部署体验

1. 配置Go Modules(依赖管理)

若项目需要使用第三方库,建议开启Go Modules(Golang 1.16及以上版本默认开启):
运行go env -w GO111MODULE=on,之后使用go get <package-name>安装依赖(如go get github.com/gofiber/fiber/v2)。

2. 配置Nginx反向代理(生产环境必备)

若应用需要对外提供服务(如Web服务),可通过Nginx反向代理将流量转发到Golang程序:

  1. 安装Nginx
    运行sudo apt install nginx
  2. 配置Nginx
    编辑/etc/nginx/sites-available/default文件,修改server块内容:
    server {
        listen 80;
        server_name yourdomain.com;  # 替换为你的域名或公网IP
    
        location / {
            proxy_pass http://localhost:3000;  # 转发到Golang程序的监听端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    
  3. 重启Nginx
    运行sudo systemctl restart nginx,使配置生效。

五、常见问题排查

  • 环境变量未生效
    go version无法识别,检查~/.bashrc中的PATH配置是否正确,并确保运行了source ~/.bashrc
  • 权限问题
    若编译或运行时出现权限错误,可使用chmod +x my-golang-app给可执行文件添加执行权限。
  • 依赖下载失败
    go get无法下载依赖,检查网络连接是否正常,或配置Go代理(如go env -w GOPROXY=https://goproxy.cn,direct,国内推荐使用七牛云代理)。

0