温馨提示×

ubuntu golang编译怎么部署

小樊
40
2026-10-10 06:35:00
栏目: 编程语言

下面按从编译到部署的完整流程,给你一个在 Ubuntu + Golang 上的实战指南,适合新手到生产环境。


一、Ubuntu 上安装 Go

1. 安装(推荐官方二进制)

sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz

2. 配置环境变量

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

验证:

go version

二、编译 Go 程序(关键)

1. 普通编译

go build -o app main.go

2. 交叉 / 无依赖编译(推荐服务器用)

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -ldflags="-s -w" -o app main.go

说明:

  • CGO_ENABLED=0:不依赖系统库
  • -s -w:减小体积

三、部署方式(常见 3 种)


✅ 方式一:直接运行(最简单)

./app

后台运行:

nohup ./app > app.log 2>&1 &

✅ 方式二:systemd 托管(推荐生产)

1. 创建服务文件

sudo vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My Go App
After=network.target

[Service]
ExecStart=/opt/myapp/app
WorkingDirectory=/opt/myapp
User=www-data
Restart=always

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

查看状态:

sudo systemctl status myapp

✅ 方式三:Docker 部署(最规范)

Dockerfile 示例

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build -o app

FROM alpine
WORKDIR /app
COPY --from=build /src/app .
CMD ["./app"]

构建运行:

docker build -t myapp .
docker run -d -p 8080:8080 myapp

四、Nginx 反向代理(Web 服务常用)

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

五、常见坑提醒

✅ Ubuntu 防火墙

sudo ufw allow 8080

✅ 端口被占用

lsof -i:8080

✅ 权限问题

chmod +x app

六、推荐目录结构

/opt/myapp/
├── app
├── config.yaml
└── logs/

如果你愿意,可以告诉我:

  • 是 Web / 微服务 / CLI 工具?
  • 是否用 Docker / 云服务器 / K8s?

我可以直接给你一套最适合你的部署方案。

0 踩