搜索
首页后端开发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
您如何使用PPROF工具分析GO性能?您如何使用PPROF工具分析GO性能?Mar 21, 2025 pm 06:37 PM

本文解释了如何使用PPROF工具来分析GO性能,包括启用分析,收集数据并识别CPU和内存问题等常见的瓶颈。

您如何在GO中编写单元测试?您如何在GO中编写单元测试?Mar 21, 2025 pm 06:34 PM

本文讨论了GO中的编写单元测试,涵盖了最佳实践,模拟技术和有效测试管理的工具。

如何编写模拟对象和存根以进行测试?如何编写模拟对象和存根以进行测试?Mar 10, 2025 pm 05:38 PM

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

如何定义GO中仿制药的自定义类型约束?如何定义GO中仿制药的自定义类型约束?Mar 10, 2025 pm 03:20 PM

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

如何使用跟踪工具了解GO应用程序的执行流?如何使用跟踪工具了解GO应用程序的执行流?Mar 10, 2025 pm 05:36 PM

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化

解释GO反射软件包的目的。您什么时候使用反射?绩效有什么影响?解释GO反射软件包的目的。您什么时候使用反射?绩效有什么影响?Mar 25, 2025 am 11:17 AM

本文讨论了GO的反思软件包,用于运行时操作代码,对序列化,通用编程等有益。它警告性能成本,例如较慢的执行和更高的内存使用,建议明智的使用和最佳

您如何在GO中使用表驱动测试?您如何在GO中使用表驱动测试?Mar 21, 2025 pm 06:35 PM

本文讨论了GO中使用表驱动的测试,该方法使用测试用例表来测试具有多个输入和结果的功能。它突出了诸如提高的可读性,降低重复,可伸缩性,一致性和A

您如何在go.mod文件中指定依赖项?您如何在go.mod文件中指定依赖项?Mar 27, 2025 pm 07:14 PM

本文讨论了通过go.mod,涵盖规范,更新和冲突解决方案管理GO模块依赖关系。它强调了最佳实践,例如语义版本控制和定期更新。

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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。