云计算百科
云计算领域专业知识百科平台

如何在服务器 Ubuntu 20.04 上搭建 Go Fiber 应用 + Traefik 自动 HTTPS 指导

在现代的 Web 开发中,Go Fiber 因其高效、轻量以及易于扩展的特点,成为构建 API 和 Web 应用的理想框架。而 Traefik 是一款现代化的反向代理和负载均衡器,特别适用于微服务架构,可以自动为应用配置 HTTPS。A5数据在本文中,我们将详细介绍如何在 Ubuntu 20.04 服务器上搭建 Go Fiber 应用,并通过 Traefik 配置自动化的 HTTPS 证书获取和管理。

系统需求

香港服务器www.a5idc.com硬件配置:

  • CPU:Intel Xeon E5-2640 v4(8核16线程)
  • 内存:16GB DDR4
  • 存储:2x 960GB NVMe SSD(RAID 1)
  • 网络:100M BGP带宽 + 25M CN2直连
  • 操作系统:Ubuntu 20.04 x64

软件需求:

  • Docker:容器化应用管理
  • Docker Compose:编排工具
  • Go:编程语言
  • Fiber:Go 的 Web 框架
  • Traefik:反向代理和自动 HTTPS 配置
  • Certbot:用于生成和管理 SSL 证书

环境准备

1. 安装 Docker 和 Docker Compose

首先,确保服务器已经安装了 Docker 和 Docker Compose。通过以下命令来安装:

# 更新软件包列表
sudo apt update

# 安装 Docker
sudo apt install -y docker.io

# 启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

检查 Docker 和 Docker Compose 安装情况:

docker –version
docker-compose –version

2. 安装 Go

Go Fiber 是基于 Go 的 Web 框架,因此需要安装 Go 环境。可以通过以下步骤安装 Go:

# 安装 Go
sudo apt update
sudo apt install -y golang-go

# 检查 Go 版本
go version

3. 安装 Traefik

Traefik 将作为反向代理,管理 HTTPS 配置。通过 Docker Compose 部署 Traefik:

# 创建 traefik.yml 配置文件
sudo nano /etc/traefik/traefik.yml

配置文件内容如下:

# traefik.yml 配置文件
api:
insecure: true
dashboard: true

entryPoints:
web:
address: ":80"
web-secure:
address: ":443"

providers:
docker: {}

certificatesResolvers:
http:
acme:
email: youremail@example.com
storage: acme.json
httpChallenge:
entryPoint: web

4. 配置防火墙

如果你的服务器启用了防火墙,确保开放 HTTP 和 HTTPS 端口:

sudo ufw allow 80,443/tcp
sudo ufw reload

Go Fiber 应用开发与 Docker 部署

1. 创建 Go 应用

创建一个新的 Go 项目并编写 Fiber 应用:

mkdir go-fiber-app
cd go-fiber-app
go mod init go-fiber-app

安装 Fiber 库:

go get github.com/gofiber/fiber/v2

然后在 main.go 文件中编写应用:

package main

import "github.com/gofiber/fiber/v2"

func main() {
app := fiber.New()

app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, Go Fiber with Traefik!")
})

app.Listen(":3000")
}

2. 创建 Dockerfile

为 Go 应用创建 Dockerfile:

# 使用 Go 官方镜像
FROM golang:1.16-alpine

# 设置工作目录
WORKDIR /app

# 复制 Go 模块和源代码
COPY go.mod go.sum ./
RUN go mod tidy

# 复制整个源代码
COPY . .

# 构建应用
RUN go build -o app .

# 暴露端口
EXPOSE 3000

# 运行应用
CMD ["./app"]

3. 创建 Docker Compose 文件

在项目根目录下创建 docker-compose.yml 文件:

version: '3.7'

services:
traefik:
image: traefik:v2.5
command:
"–api.insecure=true"
"–entryPoints.web.address=:80"
"–entryPoints.web-secure.address=:443"
"–providers.docker=true"
"–certificatesResolvers.http.acme.email=your-email@example.com"
"–certificatesResolvers.http.acme.storage=acme.json"
ports:
"80:80"
"443:443"
volumes:
"/var/run/docker.sock:/var/run/docker.sock"
"./acme.json:/acme.json"
restart: always

go-fiber-app:
build: .
labels:
"traefik.enable=true"
"traefik.http.routers.go-fiber-app.rule=Host(`your-domain.com`)"
"traefik.http.services.go-fiber-app.loadbalancer.server.port=3000"
"traefik.http.routers.go-fiber-app.entrypoints=web-secure"
"traefik.http.routers.go-fiber-app.tls=true"
"traefik.http.routers.go-fiber-app.tls.certresolver=http"
depends_on:
traefik
restart: always

4. 启动应用和 Traefik

使用 Docker Compose 启动 Go 应用和 Traefik:

docker-compose up –build -d

此命令将自动构建并启动容器,Traefik 会为 Go 应用自动配置 HTTPS。

5. 验证 HTTPS 配置

访问 https://your-domain.com,Traefik 将自动通过 Let’s Encrypt 获取 SSL 证书。如果一切配置正确,你应该能够通过 HTTPS 安全地访问 Go Fiber 应用。

评测

以下是对本次部署方案的一些评测,涵盖性能、易用性和安全性等方面。

项目内容
服务器配置 Ubuntu 20.04, 16GB 内存, 100M BGP带宽
应用架构 Go Fiber + Traefik
HTTPS 自动化 通过 Traefik 与 Let’s Encrypt
部署难度 中等,主要涉及 Docker 和 Traefik 配置
性能评估 Go Fiber 性能优越,适合高并发应用
安全性 使用 Traefik 自动获取 HTTPS,提升了安全性
扩展性 容器化部署,支持水平扩展

总结

A5数据在本文中介绍了如何在 Ubuntu 20.04 上搭建 Go Fiber 应用,并使用 Traefik 实现自动 HTTPS 配置。通过 Docker 和 Docker Compose 进行容器化部署,不仅实现了高效、安全的 Web 应用架构,还通过自动化 HTTPS 证书配置大大简化了 SSL 管理。使用这种方法可以轻松地搭建高性能、安全的 Web 应用,适用于各种场景,尤其是需要高并发和稳定性的生产环境。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 如何在服务器 Ubuntu 20.04 上搭建 Go Fiber 应用 + Traefik 自动 HTTPS 指导
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!