怎样在 Ubuntu 21.04 上使用 Golang 设置光纤服务器

概述

纤维 是一个用 高朗. 它具有高效的 HTTP 引擎、不断增长的 中间件社区,以及易于使用的 表达– 启发式 API。 本指南解释了如何在 Ubuntu 21.04 上安装 Fiber 并执行一些基本任务。

先决条件

部署一个新的 Ubuntu 21.04 Vultr 云服务器。 设置具有 sudo 权限的非 root 用户。 验证您的服务器是最新的。

安装 Golang

Fiber 需要 Golang 1.14 或更高版本并且是 build-essential。

安装 build-essential。

$ sudo apt install build-essential

找到最新的稳定版 linux-amd64 Golang 版本 在官方网站上.

下载最新的稳定版本。 您的文件名可能与显示的不同。

$ wget https://golang.org/dl/go1.17.linux-amd64.tar.gz

将压缩的构建文件解压缩到本地二进制文件文件夹。

$ sudo tar -C /usr/local -xvzf go1.17.linux-amd64.tar.gz

将 Golang 构建添加到 PATH 环境变量。

$ echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile

重新加载您的个人资料。

$ source ~/.profile

验证 Golang 安装。

$ go version
go version go1.17 linux/amd64

初始化项目

创建项目根目录。

$ cd ~
$ mkdir fiberserver && cd fiberserver

初始化 Golang 项目环境。

代替 example.com 具有与项目远程位置相对应的唯一 URL。 对于大多数项目,这可能是 github.com 如果您的代码托管在那里。 如果您的代码位于自定义远程位置,请使用该位置的 URL。 如果您的项目不可下载,请将 example.com 替换为任何唯一的文本标识符。

$ go mod init example.com/fiberserver

安装光纤。

$ go get github.com/gofiber/fiber/v2

在项目根目录中创建一个主 Golang 文件。

$ nano main.go

将以下代码粘贴到 main.go 文件。

该代码在端口 3000 上启动 Web 服务器并返回“Hello, World!” 发送到任何请求 / 端点。

package main

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

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

        app.Get("https://www.vultr.com/", func (c *fiber.Ctx) error {
                return c.SendString("Hello, World!n")
        })

        app.Listen(":3000")
}

Fiber 可以通过更改来监听标准的 HTTP 端口 app.Listen(":3000")app.Listen(":80"). 请记住,非 root 用户无法将进程绑定到 1024 以下的端口。您应该在 Fiber 前面使用代理服务器,例如 Nginx 以供生产使用。

编译并运行服务器

切换到项目文件夹。

$ cd ~/fiberserver

编译项目代码。

$ go build

运行编译好的二进制文件。

$ ./fiberserver

在 Web 浏览器中,在端口 3000 上导航到服务器的 IP 地址。 例如:

http://192.0.2.123:3000      

您应该会看到“Hello,World!” 页。

添加路线

纤维易于膨胀 app.Group 应用程序接口。 下面是如何创建一个组织在它自己的包中的基本路由。

切换到项目文件夹。

$ cd ~/fiberserver

创建一个新的路由文件夹。

$ mkdir api

切换到新文件夹并创建一个新的 Golang 文件。

$ cd api
$ nano api.go

粘贴以下内容以添加 hello 下的路线 /api 团体。

package api

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

func Route(app *fiber.App) {
    api := app.Group("/api")

    api.Get("/hello", func (c *fiber.Ctx) error {
        return c.SendString("Hello from API!n")
    })
}

为保持一致性,请保持包名称与路由文件夹名称相同。

回到项目根目录,替换里面的代码 main.go 到下面来实现新的路由。

package main

import (
        "example.com/fiberserver/api"
        "github.com/gofiber/fiber/v2"
)

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

        app.Get("https://www.vultr.com/", func (c *fiber.Ctx) error {
                return c.SendString("Hello, World!n")
        })

        api.Route(app) // add new route

        app.Listen(":3000")
}

记得改 example.comexample.com/fiberserver/api 到您在项目初始化时选择的模块名称。 如果您将项目文件夹称为其他名称,请更改 fiberserver 到那个名字。 还, api 语句末尾是您为新路由创建的文件夹的名称。

重新编译项目。

$ go build

运行新的二进制文件。

$ ./fiberserver

在 Web 浏览器中,在端口 3000 上导航到服务器的 IP 地址。 例如:

http://192.0.2.123:3000      

您应该会看到“Hello,World!” 页。

测试新路由:

http://192.0.2.123:3000/api/hello      

这一次,您应该看到“Hello from API!” 页。

添加中间件

使用 app.Use 添加中间件的 API。 按照以下步骤设置一个简单的中间件,该中间件根据用户的客户端覆盖用户请求。

编辑 main.go 文件并将代码替换为以下内容。 以下中间件通过以下方式检查客户端是否使用 Linux User-Agent 请求标头并用消息覆盖每个请求。

package main

import (
        "strings"

        "example.com/fiberserver/api"
        "github.com/gofiber/fiber/v2"
)

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

        // Check if client is using Linux
        app.Use(func (c *fiber.Ctx) error {
            if strings.Contains(c.Get("User-Agent"), "Linux x86_64") {
                return c.SendString("You are using a Linux client.n")
            }
            return c.Next()
        })

        app.Get("https://www.vultr.com/", func (c *fiber.Ctx) error {
                return c.SendString("Hello, World!n")
        })

        api.Route(app) // add new route

        app.Listen(":3000")
}

在项目文件夹的根目录中,重新编译项目代码。

$ go build

执行新编译的二进制文件。

$ ./fiberserver

在 Web 浏览器中,在端口 3000 上导航到服务器的 IP 地址。 例如:

http://192.0.2.123:3000      

如果您使用 Linux,您应该看到“您正在使用 Linux 客户端。”,否则您会看到“Hello, World!”

创建服务

注册服务以在服务器自动重启时重启 Fiber。

编译项目。

$ cd ~/fiberserver
$ go build

创建一个 fiberserver.service 归档 /lib/systemd/system/.

$ sudo nano /lib/systemd/system/fiberserver.service

将以下内容粘贴到文件中。 更换 ExecStart 带有已编译项目代码位置的路径。

[Unit]
Description=Fiber Server

[Service]
Type=simple
Restart=always
RestartSec=10s
ExecStart=/path/to/compiled/binary/file

[Install]
WantedBy=multi-user.target

启用该服务以允许它在启动时自动启动。

$ sudo systemctl enable fiberserver

启动服务。

$ sudo systemctl start fiberserver

重新启动服务器。

$ reboot

等待服务器重新启动,然后在 Web 浏览器中在端口 3000 上导航到服务器的 IP 地址。 例如:

http://192.0.2.123:3000      

您应该会看到一个有效的服务器响应。

更多信息

如需更多信息,请 见光纤文档.

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com