搜索
首页后端开发Golang激动人心的 Go-lang 项目来启动您的 DevOps 之旅

? 介绍

欢迎来到 DevOps 的世界! ?今天,我带着另一个令人兴奋的博客回来了,帮助您更深入地了解 DevOps 任务的实际编程。在我之前的博客中,我们探索了 3 个为 DevOps 自动化奠定基础的 Python 项目。

现在,让我们换个方向,探索 Go-lang 的力量!本博客将指导您构建 3 个既实用又适合初学者的 Go-lang 项目:

  • 监控磁盘使用情况用于跟踪存储统计信息的工具。
  • 使用 HTTP 服务器托管简历网站。
  • 用于管理 DevOps 工具的 RESTful API 程序

所以,拿起你最喜欢的代码编辑器,让我们开始吧! ?


?先决条件

在我们深入构建这些项目之前,让我们确保您的环境已设置完毕并准备就绪。这是您需要的:

1。 Go(Go 语言)
您需要在系统上安装 Go。根据您的操作系统执行以下步骤:

Windows

  • 从官网下载最新的Go安装程序。
  • 运行安装程序并按照屏幕上的说明进行操作。
  • 通过打开命令提示符或 PowerShell 并键入以下内容来验证安装:
go version

Ubuntu

  • 打开终端并运行:
sudo apt update  
sudo apt install -y golang
  • 验证安装:
go version

macOS

  • 使用Homebrew安装Go。跑步:
brew install go
  • 验证安装:
go version

2。对Go的基本了解

虽然您不需要成为专家,但对变量、函数和结构等 Go 概念有基本的了解将有助于您顺利地进行操作。如果您是 Go 新手,我建议您探索 Go Tour 以获取快速介绍。

满足这些先决条件后,您就可以开始构建这些很棒的 Go-lang 项目了! ?


?监控磁盘使用情况应用程序

让我们从第一个项目开始我们的旅程——磁盘使用情况监控工具。该程序将帮助您分析系统上任何指定目录的磁盘使用情况。

您可以在我的 GitHub 存储库中找到源代码。让我们首先创建一个名为 disk_usage.go 的文件并添加以下代码:

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

计划如何运作:

  • 程序使用 syscall.Statfs 函数来获取磁盘统计信息,包括总空间、已用空间和可用空间。
  • 它计算已用磁盘空间的百分比,并以用户友好的方式格式化输出。
  • 实施错误处理以检查提供的路径是否存在或访问它是否存在问题。

运行程序
要运行该程序,请使用以下命令:

  • 查看特定目录的磁盘使用情况:
go version
  • 如果不指定路径,程序默认为根目录(/):
sudo apt update  
sudo apt install -y golang

xciting Go-lang Projects to Kickstart Your DevOps Journey

由于我有一个分区,如果我提供不同的路径,我会得到相同的结果。

这个项目演示了 Go 如何与系统的底层 API 交互,使其成为系统监控任务的一个很好的起点。 ?


? HTTP 服务器程序:托管组合网站

第二个项目涉及在 Go 中创建一个托管作品集网站的 HTTP 服务器。该项目演示了如何构建和提供静态网站,同时合并健康检查端点进行监控。

您可以在我的 GitHub 存储库中找到源代码。

构建 HTTP 服务器的步骤

  • 创建一个名为http_server.go的文件并添加以下代码:
go version

如何运作

  • 静态文件服务器:http.FileServer 函数提供 ./static 目录中的文件。
  • 健康检查端点:定义 /health 路由以提供简单的健康检查指标。
  • 服务器设置:服务器默认侦听端口 8090,并记录启动过程中的任何错误。

创建投资组合网站

  1. 结构:在静态文件夹内,创建:

    • index.html
    • 样式.css
    • 名为 images 的文件夹,其中包含名为 profile.jpeg 的个人资料图片。
  2. 将以下内容添加到您的文件中:

index.html:

brew install go

运行程序

  • 使用以下命令启动 HTTP 服务器:
go version
  • 您的作品集网站现在将位于: 本地主机:8090

访问健康检查
要检查服务器的健康状况,请访问:

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

xciting Go-lang Projects to Kickstart Your DevOps Journey

该项目展示了如何使用 Go-lang 创建一个用于托管静态内容的功能性 Web 服务器,并通过健康检查端点进行额外监控。 ?


? RESTful API 项目:管理 DevOps 工具

在本博客的最终项目中,我们将创建一个 RESTful API,允许您管理 DevOps 工具列表。该程序演示了如何使用 Go 的 net/http 包来处理 RESTful 路由和管理数据。

完整的源代码可以在我的 GitHub 存储库中找到。

构建 RESTful API
第 1 步:主程序
创建一个名为 main.go 的文件并添加以下代码:

go version

第 2 步:数据处理
在tools目录中,创建一个名为data.go的文件并添加:

sudo apt update  
sudo apt install -y golang

第 3 步:处理程序
在tools目录中,创建另一个名为handler.go的文件并添加:

go version

初始化模块

运行程序之前,初始化Go模块:

brew install go

这确保项目可以使用项目/工具包。

运行程序
通过运行启动服务器:

go version

测试 API

  1. 列出所有工具 要获取工具列表,请使用:
package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

xciting Go-lang Projects to Kickstart Your DevOps Journey

输出:

go run disk_usage.go /path/to/directory
  1. 添加新工具 要添加新工具,请使用:
go run disk_usage.go

xciting Go-lang Projects to Kickstart Your DevOps Journey

输出:

package main
import (
    "fmt"
    "net/http"
)
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
}
func main() {
    fs := http.FileServer(http.Dir("./static"))
    http.Handle("/", fs)
    http.HandleFunc("/health", healthCheckHandler)
    port := "8090"
    fmt.Printf("Starting server on port %s....", port)
    err := http.ListenAndServe(":"+port, nil)
    if err != nil {
        fmt.Println("Error starting server:", err)
    }
}
  1. 获取工具详细信息 要获取特定工具的详细信息,请使用:


    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pravesh Sudha - Portfolio</title>
    <link rel="stylesheet" href="style.css">


    <header>
        <div>



<p><strong>style.css:</strong><br>
</p>

<pre class="brush:php;toolbar:false">body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}

header {
    background: #4caf50;
    color: #fff;
    padding: 20px 0;
    text-align: center;
}
header .profile-picture {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    margin-bottom: 15px;
}
header h1 {
    font-size: 2.5em;
    margin: 0;
}
header .subtitle {
    font-size: 1.2em;
    margin: 0;
}
main {
    padding: 20px;
    max-width: 800px;
    margin: 20px auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
main .about,
main .links {
    margin-bottom: 20px;
}
main .links ul {
    list-style: none;
    padding: 0;
}
main .links li {
    margin: 10px 0;
}
main .links a {
    color: #4caf50;
    text-decoration: none;
    font-weight: bold;
}
main .links a:hover {
    text-decoration: underline;
}
footer {
    text-align: center;
    padding: 10px 0;
    background: #333;
    color: #fff;
}

输出:

go run http_server.go

xciting Go-lang Projects to Kickstart Your DevOps Journey


?结论

在本博客中,我们探索了三个实用的 Go 项目,可帮助您获得软件开发不同方面的实践经验。从监控磁盘使用情况到构建简单的 HTTP 服务器,再到托管产品组合网站,最后创建 RESTful API 来管理 DevOps 工具,这些项目为任何希望提高 Go 编程技能的人提供了坚实的基础。

  • 磁盘使用情况监控应用程序向您介绍了 Go 中的系统调用和基本文件处理,让您深入了解如何与计算机的文件系统进行交互。
  • HTTP 服务器项目 让您能够学习如何提供静态文件并处理基本的健康检查端点,帮助您开始使用 Go 进行 Web 开发。
  • RESTful API 项目演示了如何构建 API、通过并发控制管理数据以及如何通过 POST 和 GET 请求使应用程序交互。

每个项目都是一个构建块,可以扩展以适应实际应用程序。无论您是对监控系统、开发 Web 应用程序还是构建 API 感兴趣,Go 都能提供高效开发所需的简单性和强大功能。

?如需了解更多信息博客,请在 Hashnode、X(Twitter) 和 LinkedIn 上关注我。

到此为止,祝您编码愉快!!

快乐学习! ?

以上是激动人心的 Go-lang 项目来启动您的 DevOps 之旅的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Debian如何配置Golang网络参数Debian如何配置Golang网络参数May 16, 2025 pm 01:06 PM

在Debian系统中调整Golang的网络参数可以通过多种方式实现,以下是几种可行的方法:方法一:通过设置环境变量临时设置环境变量:在终端中输入以下命令可以临时设置环境变量,此设置仅在当前会话有效。exportGODEBUG="gctrace=1netdns=go"其中,gctrace=1会激活垃圾回收跟踪,netdns=go则使Go使用其自身的DNS解析器而非系统默认的。永久设置环境变量:将上述命令添加到你的shell配置文件中,例如~/.bashrc或~/.profile

LibOffice在Debian上的快捷键有哪些LibOffice在Debian上的快捷键有哪些May 16, 2025 pm 01:03 PM

在Debian系统上自定义LibOffice的快捷键可以通过系统设置进行调整。以下是一些常用的步骤和方法来设置LibOffice的快捷键:设置LibOffice快捷键的基本步骤打开系统设置:在Debian系统中,点击左上角的菜单(通常是一个齿轮图标),然后选择“系统设置”。选择设备:在系统设置窗口中,选择“设备”。选择键盘:在设备设置页面中,选择“键盘”。找到对应工具的命令:在键盘设置页面中,向下滚动到最底部可以看到“快捷键”选项,点击它会弹出一个窗口。在弹出的窗口中找到对应LibOffice工

Debian部署Kubernetes有哪些注意事项Debian部署Kubernetes有哪些注意事项May 16, 2025 pm 01:00 PM

在Debian系统上部署Kubernetes(K8s)集群时,需要关注多个关键点,以确保集群的稳定性和安全性。以下是一些主要的注意事项:禁用Swap分区:从Kubernetes1.8版本开始,需要禁用Swap分区。可以使用以下命令临时禁用Swap:sudoswapoff-a若要永久禁用Swap,需编辑/etc/fstab文件,并注释掉包含“swap”的行。设置内核参数:启用IPv4转发:sudotee/etc/sysctl.d/k8s.conf设置网络参数,如net.bridge.brid

Kubernetes部署在Debian上有哪些优势Kubernetes部署在Debian上有哪些优势May 16, 2025 pm 12:57 PM

Kubernetes(简称K8s)在Debian上部署具有以下优势:稳定性:Debian是一个稳定且可靠的操作系统,适合作为Kubernetes的运行环境。许多教程推荐使用Debian12作为底层操作系统进行Kubernetes的部署,这表明Debian提供了可靠的运行环境,能够满足Kubernetes对操作系统的基本要求。安全性:Debian提供了强大的安全特性,如SELinux和AppArmor,可以进一步增强Kubernetes集群的安全性。通过合理的配置和优化措施,可以确保Kuberne

如何在Debian上部署Kubernetes集群如何在Debian上部署Kubernetes集群May 16, 2025 pm 12:54 PM

在Debian系统上部署Kubernetes集群可以通过多种方法实现,以下是利用kubeadm工具在Debian12上设置Kubernetes集群的详细步骤:预备工作确保你的Debian系统已经更新到最新版本。确保你拥有具有管理员权限的sudo用户。确保所有节点之间可以通过稳定网络互相连接。安装步骤设置主机名和更新hosts文件:在每个节点上,使用hostnamectl命令设置主机名,并在/etc/hosts文件中添加节点IP与主机名的对应关系。禁用所有节点的swap分区:为了让kubelet正

Debian上Golang环境怎么搭建Debian上Golang环境怎么搭建May 16, 2025 pm 12:51 PM

在Debian系统上搭建Golang环境,可以按照以下步骤进行:1.更新系统包列表首先,确保你的系统包列表是最新的:sudoaptupdate2.安装GolangDebian的官方仓库中提供了Golang的安装包。你可以使用以下命令来安装:sudoaptinstallgolang-go3.验证安装安装完成后,可以通过以下命令来验证Golang是否安装成功:goversion如果安装成功,你会看到类似如下的输出:goversiongo1.20.3linux/amd644.设置环境变

Debian上JavaScript开发有哪些最佳实践Debian上JavaScript开发有哪些最佳实践May 16, 2025 pm 12:48 PM

在Debian系统上进行JavaScript开发时,可以采用以下最佳实践来优化开发过程:选择合适的日志库对于Node.js应用,选择一个功能强大的日志库至关重要。常用的日志库如Winston、Pino和Bunyan等,提供了丰富的功能,包括日志级别设置、格式化和存储。使用正确的日志级别正确使用日志级别(如fatal、error、warn、info、debug)可以帮助区分关键事件和常规信息事件,有助于后续的故障排除和性能优化。日志分析工具GoAccess:对于网络日志分析,GoAccess是一个

如何更新Debian上的Kubernetes版本如何更新Debian上的Kubernetes版本May 16, 2025 pm 12:45 PM

在Debian上更新Kubernetes版本的步骤如下:备份现有集群:在进行任何升级之前,请确保备份您的Kubernetes集群数据。这可以通过使用etcd的备份工具来完成。检查当前版本:首先,您需要了解当前运行的Kubernetes版本。可以使用以下命令进行检查:kubectlversion查看可用的更新:访问Kubernetes官方发布页面(https://github.com/kubernetes/kubernetes/releases),查看最新的稳定版本,并确认是否支持您的Debian

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具