搜尋
首頁後端開發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上Kubernetes節點如何管理Debian上Kubernetes節點如何管理May 16, 2025 pm 01:18 PM

在Debian系統上管理Kubernetes(K8S)節點通常涉及以下幾個關鍵步驟:1.安裝和配置Kubernetes組件準備工作:確保所有節點(包括主控節點和工作節點)都已安裝Debian操作系統,並且滿足安裝Kubernetes集群的基本要求,如足夠的CPU、內存和磁盤空間。禁用swap分區:為了確保kubelet能夠順利運行,建議禁用swap分區。設置防火牆規則:允許必要的端口,如kubelet、kube-apiserver、kube-scheduler等使用的端口。安裝container

Golang在Debian上的安全設置Golang在Debian上的安全設置May 16, 2025 pm 01:15 PM

在Debian上設置Golang環境時,確保系統安全是至關重要的。以下是一些關鍵的安全設置步驟和建議,幫助您構建一個安全的Golang開發環境:安全設置步驟系統更新:在安裝Golang之前,確保系統是最新的。使用以下命令更新系統軟件包列表和已安裝的軟件包:sudoaptupdatesudoaptupgrade-y防火牆配置:安裝並配置防火牆(如iptables)以限制對系統的訪問。僅允許必要的端口(如HTTP、HTTPS和SSH)連接。 sudoaptinstalliptablessud

Debian上Kubernetes部署的性能如何調優Debian上Kubernetes部署的性能如何調優May 16, 2025 pm 01:12 PM

在Debian上優化和部署Kubernetes集群的性能是一個涉及多個方面的複雜任務。以下是一些關鍵的優化策略和建議:硬件資源優化CPU:確保為Kubernetes節點和Pod分配足夠的CPU資源。內存:增加節點的內存容量,特別是對於內存密集型應用。存儲:使用高性能的SSD存儲,避免使用網絡文件系統(如NFS),因為它們可能會引入延遲。內核參數優化編輯/etc/sysctl.conf文件,添加或修改以下參數:net.core.somaxconn:65535net.ipv4.tcp_max_syn

Python腳本在Debian如何定時任務Python腳本在Debian如何定時任務May 16, 2025 pm 01:09 PM

在Debian系統中,你可以利用cron來安排定時任務,實現Python腳本的自動化執行。首先,啟動終端。通過輸入以下命令,編輯當前用戶的crontab文件:crontab-e如果需要以root權限編輯其他用戶的crontab文件,請使用:sudocrontab-uusername-e將username替換為你要編輯的用戶名。在crontab文件中,你可以添加定時任務,格式如下:*****/path/to/your/python-script.py這五個星號分別代表分鐘(0-59)、小

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

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整合開發工具