ホームページ バックエンド開発 Golang DevOps の旅を始めるための Go-lang プロジェクトの引用

DevOps の旅を始めるための Go-lang プロジェクトの引用

Dec 12, 2024 pm 02:21 PM

? 導入

DevOps の世界へようこそ! ?今日は、DevOps タスクの実践的なプログラミングをさらに深く掘り下げるのに役立つ、別の刺激的なブログに戻ってきました。前回のブログでは、DevOps 自動化の基礎を築く 3 つの Python プロジェクトについて説明しました。

さあ、ギアを変えて、Go-lang のパワーを探ってみましょう!このブログでは、実用的で初心者にも優しい 3 つの Go-lang プロジェクトの構築について説明します。

  • ストレージ統計を追跡するための ディスク使用量の監視 ツール。
  • HTTP サーバー を使用して履歴書 Web サイトをホストしています。
  • DevOps ツールを管理するための RESTful API プログラム

それでは、お気に入りのコード エディターを入手して、始めましょう! ?


?前提条件

これらのプロジェクトの構築に入る前に、環境がセットアップされ、準備ができていることを確認してください。必要なものは次のとおりです:

1. Go (Golang)
Go をシステムにインストールする必要があります。オペレーティング システムに基づいて次の手順に従ってください:

Windows

  • 公式 Web サイトから最新の 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 ツアーを参照して簡単に紹介することをお勧めします。

これらの前提条件が満たされていれば、これらの素晴らしい 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

パーティションが 1 つあるため、異なるパスを指定しても同じ結果が得られます。

このプロジェクトは、Go がシステムの基盤となる API とどのように対話できるかを示し、システム監視タスクの優れた出発点となります。 ?


? HTTP サーバー プログラム: ポートフォリオ Web サイトのホスティング

2 番目のプロジェクトには、ポートフォリオ Web サイトをホストする HTTP サーバーを Go で作成することが含まれます。このプロジェクトでは、監視用のヘルス チェック エンドポイントを組み込みながら、静的 Web サイトを構築して提供する方法を示します。

ソース コードは私の GitHub リポジトリにあります。

HTTP サーバーを構築する手順

  • http_server.go という名前のファイルを作成し、次のコードを追加します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

仕組み

  • 静的ファイル サーバー: http.FileServer 関数は、./static ディレクトリからファイルを提供します。
  • ヘルス チェック エンドポイント: /health ルートは、単純なヘルス チェック メトリックを提供するために定義されています。
  • サーバーのセットアップ: サーバーはデフォルトでポート 8090 をリッスンし、起動中のエラーはすべてログに記録されます。

ポートフォリオ Web サイトの作成

  1. 構造: 静的フォルダー内に以下を作成します:

    • index.html
    • スタイル.css
    • profile.jpeg という名前のプロフィール写真を含む、images という名前のフォルダー。
  2. 次のコンテンツをファイルに追加します:

index.html:

brew install go
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

プログラムの実行

  • 次のコマンドを使用して HTTP サーバーを起動します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • あなたのポートフォリオ Web サイトは次の場所から利用できるようになります。 ローカルホスト: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 ツールの管理

このブログの最後のプロジェクトでは、DevOps ツールのリストを管理できる RESTful API を作成します。このプログラムは、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
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これにより、プロジェクトで project/tools パッケージを使用できるようになります。

プログラムの実行
次のコマンドを実行してサーバーを起動します:

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. フェッチツールの詳細 特定のツールの詳細を取得するには、次を使用します。
<!DOCTYPE html>
<html lang="en">
<head>
    <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">
</head>
<body>
    <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


?結論

このブログでは、ソフトウェア開発のさまざまな側面を実際に体験するのに役立つ 3 つの実践的な Go プロジェクトを検討してきました。ディスク使用量の監視から、シンプルな HTTP サーバーの構築、ポートフォリオ Web サイトのホスティング、そして最後に DevOps ツールを管理するための RESTful API の作成に至るまで、これらのプロジェクトは、Go プログラミング スキルを磨きたい人にとって強固な基盤を提供します。

  • ディスク使用量監視アプリケーションでは、Go でのシステム コールと基本的なファイル処理について紹介し、マシンのファイル システムと対話する方法について説明しました。
  • HTTP サーバー プロジェクトでは、静的ファイルの提供方法と基本的なヘルスチェック エンドポイントの処理方法を学習でき、Go で Web 開発を始めるのに役立ちます。
  • RESTful API プロジェクトは、API を構造化し、同時実行制御でデータを管理し、POST リクエストと GET リクエストを通じてアプリケーションをインタラクティブにする方法を示しました。

これらの各プロジェクトは、実際のアプリケーションに合わせて拡張できる構成要素です。システムの監視、Web アプリケーションの開発、API の構築に興味がある場合でも、Go は効率的な開発に必要なシンプルさとパワーを提供します。

?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。

それまで、ハッピーコーディング!!

楽しく学習してください! ?

以上がDevOps の旅を始めるための Go-lang プロジェクトの引用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles