Rumah pembangunan bahagian belakang Golang xciting Projek Go-lang untuk Memulakan Perjalanan DevOps Anda

xciting Projek Go-lang untuk Memulakan Perjalanan DevOps Anda

Dec 12, 2024 pm 02:21 PM

? pengenalan

Selamat datang ke dunia DevOps! ? Hari ini, saya kembali dengan satu lagi blog yang menarik untuk membantu anda menyelam lebih mendalam ke dalam pengaturcaraan praktikal untuk tugas DevOps. Dalam blog saya sebelum ini, kami meneroka 3 projek Python yang meletakkan asas untuk automasi DevOps.

Sekarang, mari tukar gear dan terokai kuasa Go-lang! Blog ini akan membimbing anda membina 3 projek Go-lang yang praktikal dan mesra pemula:

  • Alat Memantau Penggunaan Cakera untuk menjejak statistik storan.
  • Menghos tapak web resume menggunakan pelayan HTTP.
  • Satu Program API RESTful untuk mengurus alatan DevOps.

Jadi, ambil editor kod kegemaran anda, dan mari mulakan! ?


? Pra-Syarat

Sebelum kita menyelami pembinaan projek ini, mari pastikan persekitaran anda disediakan dan sedia untuk digunakan. Inilah yang anda perlukan:

1. Pergi (Golang)
Anda perlu memasang Go pada sistem anda. Ikuti langkah ini berdasarkan sistem pengendalian anda:

Tingkap

  • Muat turun pemasang Go terbaharu daripada tapak web rasmi.
  • Jalankan pemasang dan ikut arahan pada skrin.
  • Sahkan pemasangan dengan membuka Command Prompt atau PowerShell dan menaip:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ubuntu

  • Buka terminal dan jalankan:

1

2

sudo apt update 

sudo apt install -y golang

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Sahkan pemasangan:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

macOS

  • Gunakan Homebrew untuk memasang Go. Jalankan:

1

brew install go

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Sahkan pemasangan:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

2. Pemahaman Asas Go

Walaupun anda tidak perlu menjadi pakar, mempunyai pemahaman asas tentang konsep Go seperti pembolehubah, fungsi dan struktur akan membantu anda mengikutinya dengan lancar. Jika anda baru menggunakan Go, saya syorkan anda menerokai Go Tour untuk pengenalan pantas.

Dengan memenuhi prasyarat ini, anda sudah bersedia untuk mula membina projek Go-lang yang hebat ini! ?


? Pantau Apl Penggunaan Cakera

Mari kita mulakan perjalanan kita dengan projek pertama — alat pemantauan penggunaan cakera. Program ini akan membantu anda menganalisis penggunaan cakera untuk mana-mana direktori tertentu pada sistem anda.

Anda boleh mencari kod sumber dalam repositori GitHub saya. Mari mulakan dengan mencipta fail bernama disk_usage.go dan menambah kod berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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)

}

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Cara Program Berfungsi:

  • Atur cara menggunakan fungsi syscall.Statfs untuk mengambil statistik cakera, termasuk jumlah, terpakai dan ruang kosong.
  • Ia mengira peratusan ruang cakera yang digunakan dan memformatkan output dengan cara yang mesra pengguna.
  • Pengendalian ralat dilaksanakan untuk menyemak sama ada laluan yang disediakan wujud atau jika terdapat isu semasa mengaksesnya.

Menjalankan Program
Untuk menjalankan program, gunakan arahan berikut:

  • Semak penggunaan cakera bagi direktori tertentu:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Jika tiada laluan ditentukan, atur cara lalai kepada direktori akar (/):

1

2

sudo apt update 

sudo apt install -y golang

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

xciting Go-lang Projects to Kickstart Your DevOps Journey

Memandangkan saya mempunyai satu partition, saya akan mendapat hasil yang sama jika saya menyediakan laluan yang berbeza.

Projek ini menunjukkan cara Go boleh berinteraksi dengan API asas sistem anda, menjadikannya titik permulaan yang bagus untuk tugas pemantauan sistem. ?


? Program Pelayan HTTP: Mengehos Laman Web Portfolio

Projek kedua melibatkan penciptaan pelayan HTTP dalam Go yang mengehoskan tapak web portfolio. Projek ini menunjukkan cara anda boleh membina dan menyediakan tapak web statik sambil menggabungkan titik akhir pemeriksaan kesihatan untuk pemantauan.

Anda boleh mencari kod sumber dalam repositori GitHub saya.

Langkah untuk Membina Pelayan HTTP

  • Buat fail bernama http_server.go dan tambah kod berikut:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Cara Ia Berfungsi

  • Pelayan Fail Statik: Fungsi http.FileServer menyediakan fail daripada direktori ./static.
  • Titik Akhir Pemeriksaan Kesihatan: Laluan /kesihatan ditakrifkan untuk menyediakan metrik pemeriksaan kesihatan yang mudah.
  • Persediaan Pelayan: Pelayan mendengar pada port 8090 secara lalai, dan sebarang ralat semasa permulaan direkodkan.

Membuat Laman Web Portfolio

  1. Struktur: Di dalam folder statik, cipta:

    • index.html
    • style.css
    • Folder bernama imej dengan gambar profil bernama profile.jpeg.
  2. Tambah kandungan berikut pada fail anda:

index.html:

1

brew install go

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menjalankan Program

  • Mulakan pelayan HTTP dengan arahan berikut:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Tapak web portfolio anda kini boleh didapati di: localhost:8090

Mengakses Pemeriksaan Kesihatan
Untuk menyemak kesihatan pelayan, lawati:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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)

}

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

xciting Go-lang Projects to Kickstart Your DevOps Journey

Projek ini mempamerkan cara menggunakan Go-lang untuk mencipta pelayan web berfungsi untuk mengehos kandungan statik, dengan pemantauan tambahan melalui titik akhir pemeriksaan kesihatan. ?


? Projek API RESTful: Mengurus Alat DevOps

Dalam projek akhir blog ini, kami akan mencipta API RESTful yang membolehkan anda mengurus senarai alatan DevOps. Program ini menunjukkan penggunaan pakej net/http Go untuk mengendalikan laluan RESTful dan mengurus data.

Kod sumber lengkap tersedia pada repositori GitHub saya.

Membina API RESTful
Langkah 1: Program Utama
Buat fail bernama main.go dan tambah kod berikut:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Pengendalian Data
Dalam direktori alat, buat fail bernama data.go dan tambah:

1

2

sudo apt update 

sudo apt install -y golang

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 3: Pengendali
Dalam direktori alat, buat fail lain bernama handler.go dan tambah:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Memulakan Modul

Sebelum menjalankan program, mulakan modul Go:

1

brew install go

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini memastikan projek boleh menggunakan pakej projek/alat.

Menjalankan Program
Mulakan pelayan dengan menjalankan:

1

go version

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menguji API

  1. Senaraikan Semua Alat Untuk mengambil senarai alatan, gunakan:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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)

}

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

xciting Go-lang Projects to Kickstart Your DevOps Journey

Output:

1

go run disk_usage.go /path/to/directory

Salin selepas log masuk
  1. Tambah Alat Baharu Untuk menambah alat baharu, gunakan:

1

go run disk_usage.go

Salin selepas log masuk

xciting Go-lang Projects to Kickstart Your DevOps Journey

Output:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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)

    }

}

Salin selepas log masuk
  1. Ambil Butiran Alat Untuk mengambil butiran alat tertentu, gunakan:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

<!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;

}

Salin selepas log masuk

Output:

1

go run http_server.go

Salin selepas log masuk

xciting Go-lang Projects to Kickstart Your DevOps Journey


? Kesimpulan

Dalam blog ini, kami telah meneroka tiga projek praktikal Go yang membantu anda mendapatkan pengalaman langsung dengan pelbagai aspek pembangunan perisian. Daripada memantau penggunaan cakera kepada membina pelayan HTTP ringkas kepada mengehos tapak web portfolio, dan akhirnya, mencipta API RESTful untuk mengurus alatan DevOps, projek ini menyediakan asas yang kukuh untuk sesiapa sahaja yang ingin mempertajam kemahiran pengaturcaraan Go mereka.

  • Aplikasi pemantauan penggunaan cakera memperkenalkan anda kepada panggilan sistem dan pengendalian fail asas dalam Go, memberikan anda cerapan tentang cara anda boleh berinteraksi dengan sistem fail mesin.
  • Projek pelayan HTTP membolehkan anda mempelajari cara menyampaikan fail statik dan mengendalikan titik akhir pemeriksaan kesihatan asas, membantu anda memulakan pembangunan web dalam Go.
  • Projek API RESTful menunjukkan cara menstruktur API, mengurus data dengan kawalan serentak dan menjadikan aplikasi anda interaktif melalui permintaan POST dan GET.

Setiap projek ini adalah blok binaan yang boleh dikembangkan untuk disesuaikan dengan aplikasi dunia sebenar. Sama ada anda berminat untuk memantau sistem, membangunkan aplikasi web atau membina API, Go menyediakan kesederhanaan dan kuasa yang diperlukan untuk pembangunan yang cekap.

? Untuk blog yang lebih bermaklumat, Ikuti saya di Hashnode, X(Twitter) dan LinkedIn.

Sehingga itu, Selamat Mengekod!!

Selamat Belajar! ?

Atas ialah kandungan terperinci xciting Projek Go-lang untuk Memulakan Perjalanan DevOps Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Mar 03, 2025 pm 05:22 PM

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Mar 03, 2025 pm 05:15 PM

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Mar 03, 2025 pm 05:18 PM

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?

Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya? Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya? Mar 10, 2025 pm 05:38 PM

Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya?

See all articles