Go-Web-Practice adalah proyek pembelajaran. Menerapkan aplikasi web sederhana dengan menggunakan Perpustakaan Asli Golang.
Proyek ini dipelajari dan ditulis oleh video "Go Web Programming Start Quick Start [Golang/Go Language] (Lengkap)" oleh teknisi perangkat lunak utama UP di stasiun B.
Berdasarkan video, beberapa modifikasi telah dibuat:
Proyek ini telah diuji dan digunakan, dan Panduan Penyebaran Host Linux ada di bawah ini.
Struktur Proyek:
go-web-practice
.
├── LICENSE
├── README.md
├── build
│ └── package
│ ├── dockerfile.build_run
│ └── dockerfile.run
├── cmd
│ └── main.go
├── configs
│ └── config.json
├── deployments
│ └── docker-compose.yaml
├── go.mod
├── internal
│ ├── config
│ │ ├── config.go
│ │ └── config_test.go
│ ├── controller
│ │ ├── controller.go
│ │ ├── index.go
│ │ ├── look.go
│ │ └── welcome.go
│ ├── log
│ │ └── log.go
│ ├── middleware
│ │ ├── cross.go
│ │ ├── log.go
│ │ └── timeout.go
│ └── templates
│ └── template.go
└── web
├── img
│ ├── favicon.ico
│ ├── golang-down.png
│ ├── golang-right.png
│ └── golang.png
├── plugins
│ ├── bootstrap
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── js
│ │ └── bootstrap.min.js
│ └── jquery
│ └── js
│ └── jquery.min.js
└── templates
├── index.tmpl
├── look.tmpl
├── test.tmpl
└── welcome.tmpl
Melihat
Berikut ini adalah masalah proyek saat ini
Atau sesuatu untuk diperhatikan saat mengerjakan pekerjaan rumah universitas.
- Proyek ini dikembangkan menggunakan Goland, dan migrasi IDE lainnya tidak diketahui.
- Hanya sedikit komentar yang ditulis di Main.go, dan komentar file lain diperbarui di masa mendatang.
- Ada sangat sedikit antarmuka perutean dalam proyek saat ini, sehingga Anda dapat menambahkannya sendiri jika Anda membutuhkannya.
- Tidak ada database.
- Sebelum berjalan dengan Docker dan Docker-Compose, Anda perlu menyusun proyek sendiri atau menempatkan file yang dapat dieksekusi di direktori proyek.
Pertama, Anda harus memastikan bahwa Anda telah menginstal lingkungan Golang. Jika Anda memodifikasi proyek, Anda perlu mengkompilasi ulang dan mendapatkan file yang dapat dieksekusi sebelum dapat digunakan dan dijalankan. **
Kompilasi silang Golang memberikan kenyamanan besar, yang memungkinkan kami untuk menyusun file yang dapat dieksekusi yang dapat berjalan di Linux di Windows.
Anda dapat menggunakan skrip .bat berikut untuk menyelesaikan kompilasi file yang dapat dieksekusi di lingkungan Windows dan Linux di Windows.
# 请以项目目录为工作目录执行该脚本
# windows 可执行文件编译
go build -o go-web-practice.exe cmdmain.go
# linxu 可执行文件编译
set CGO_ENABLED = 0
set GOOS = linux
set GOARCH = amd64
go build -o go-web-practice .cmdmain.go
pause Jika Anda mengembangkan macOS atau Linux, Anda dapat membangunnya dengan make .
makeProyek ini menggunakan file JSON untuk mengonfigurasi.
Periksa semantik konfigurasi config/conifg.json seperti yang ditunjukkan pada tabel berikut dan memodifikasinya sesuai dengan kebutuhan Anda.
| Bidang konfigurasi | Semantik |
|---|---|
| statis | Jalur ke file statis |
| templat | Jalan menuju Template Go |
| alamat | Alamat startup layanan (default kosong, dan penyebaran jaringan publik dapat diimplementasikan) |
| pelabuhan | Port untuk startup layanan |
| HandletimeOutsecond | waktu pemrosesan waktu outout (konfigurasi ini tidak digunakan dalam proyek dan dipesan) |
| jejak | Trace Logger Path to output log (tidak digunakan dalam proyek, dicadangkan) |
| info | Info Logger Path to Output Log |
| Peringatan | Path Logger Peringatan ke Log Output |
| kesalahan | Logger Kesalahan Path to Output Log |
Struktur direktori berikut harus dipastikan saat berjalan (mengambil Linux berjalan sebagai contoh):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...Jalankan file yang dapat dieksekusi secara langsung dan lihat prompt berikut bahwa menjalankan berhasil:

Anda dapat mengujinya dengan curl localhost:8000/welcome , yang akan mengembalikan HTML antarmuka selamat datang.
Akses asli (konfigurasi port tidak dimodifikasi): http: // localhost: 8000.
Jika Anda menggunakan server dan ingin mengaksesnya melalui jaringan publik, ingatlah untuk mengatur firewall untuk membuka port yang sesuai. Jika itu adalah server cloud, Anda juga harus membuka grup keamanan.
Cabang Master telah memperbarui DockerFile dan menggunakan Docker untuk menguji kompilasi dan pengoperasian GO-WEB-PRACTICE.
Berikut ini adalah panduan pelarian kompilasi/penyebaran Docker untuk Go-Web-Practice.
Apa itu Docker, cara menginstal dan cara menggunakannya, tidak akan dijelaskan secara rinci di sini.
Untuk detailnya, silakan merujuk ke dokumen Docker resmi: https://docs.docker.com/
Jalankan perintah dalam urutan berikut di direktori proyek untuk menyelesaikan kompilasi pada saat pembangunan gambar dan jalankan layanan saat wadah dimulai.
$ docker build -t go-web-practice -f ./build/package/dockerfile.build_run . docker run -d -p 8000:8000 go-web-practiceSetelah kompilasi lokal dan pembuatan file yang dapat dieksekusi, bangun gambar yang sedang berjalan, yang dapat memastikan bahwa gambar dapat berjalan secara normal bahkan jika ukuran gambar kecil.
Ukuran gambar gambar yang dikompilasi dan dijalankan menggunakan Docker di atas mendekati 1GB, sedangkan gambar yang dapat dibangun di bagian ini hanya sekitar 100MB.
Catatan: Setelah gambar bernama Go-Web-Practice telah dibangun di atas, gambar lama harus dihapus sebelum menjalankan instruksi di bagian ini.
Pertama, pastikan ada file yang dapat dieksekusi di direktori proyek.
Ada DockerFile yang disiapkan di Direktori /build/package proyek untuk menghasilkan file gambar. Gunakan instruksi berikut untuk membangun gambar Docker.
$ docker build -t go-web-practice -f ./build/package/dockerfile.run . Masukkan perintah berikut saat menjalankan wadah di latar belakang:
$ docker run -d -p 8000:8000 go-web-practicedocker-composeSetelah membangun gambar, itu juga digunakan secara langsung dengan menggunakan directive compose Docker:
$ docker-compose -f deployments/docker-compose.yaml upPerhatikan bahwa jika konfigurasi port dimodifikasi, Anda perlu memodifikasi perintah Docker Run dan bidang pemetaan port di file konfigurasi compose docker.yaml.
Jika Anda memiliki pertanyaan, silakan hubungi saya melalui email: [email protected]