Go-Web-Practice เป็นโครงการเรียนรู้ ใช้เว็บแอปพลิเคชันอย่างง่ายโดยใช้ไลบรารีดั้งเดิมของ Golang
โครงการนี้เรียนรู้และเขียนโดยวิดีโอ "Go Web Programming Quick Start [Golang/Go Language] (เสร็จสมบูรณ์)" โดยช่างเทคนิคหลักของ UP บนสถานี B
จากวิดีโอมีการแก้ไขบางอย่าง:
โครงการนี้ได้รับการทดสอบและปรับใช้และคู่มือการปรับใช้โฮสต์ Linux อยู่ด้านล่าง
โครงสร้างโครงการ:
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
สังเกต
ต่อไปนี้เป็นปัญหาปัจจุบันของโครงการ
หรือบางสิ่งบางอย่างให้ความสนใจเมื่อทำการบ้านในมหาวิทยาลัย-
- โครงการได้รับการพัฒนาโดยใช้ Goland และการย้ายถิ่นของ IDEs อื่น ๆ ไม่เป็นที่รู้จัก
- มีเพียงความคิดเห็นเพียงเล็กน้อยเท่านั้นที่เขียนไว้ใน Main.go และความคิดเห็นของไฟล์อื่น ๆ จะได้รับการปรับปรุงในอนาคต
- มีอินเทอร์เฟซการกำหนดเส้นทางน้อยมากในโครงการปัจจุบันดังนั้นคุณสามารถเพิ่มด้วยตัวเองได้หากคุณต้องการ
- ไม่มีฐานข้อมูล
- ก่อนที่จะทำงานกับ Docker และ Docker-compose คุณต้องรวบรวมโครงการด้วยตัวเองหรือวางไฟล์ที่เรียกใช้งานในไดเรกทอรีโครงการ
ก่อนอื่นคุณต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งสภาพแวดล้อมของ Golang หากคุณแก้ไขโครงการคุณจะต้องคอมไพล์อีกครั้งและรับไฟล์ที่เรียกใช้งานได้ก่อนที่จะสามารถปรับใช้และเรียกใช้ได้ -
การรวบรวมข้ามของ Golang ให้ความสะดวกสบายอย่างมากซึ่งช่วยให้เราสามารถรวบรวมไฟล์ที่สามารถเรียกใช้งานได้ซึ่งสามารถทำงานใน Linux บน Windows
คุณสามารถใช้สคริปต์. bat ต่อไปนี้เพื่อทำการรวบรวมไฟล์ที่เรียกใช้งานได้ในสภาพแวดล้อม Windows และ Linux ใน 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 หากคุณกำลังพัฒนาบน MacOS หรือ Linux คุณสามารถสร้างด้วย make
makeโครงการนี้ใช้ไฟล์ JSON เพื่อกำหนดค่า
ตรวจสอบความหมายการกำหนดค่าของ config/conifg.json ดังแสดงในตารางต่อไปนี้และแก้ไขตามความต้องการของคุณ
| ฟิลด์การกำหนดค่า | ความหมาย |
|---|---|
| คงที่ | เส้นทางไปยังไฟล์คงที่ |
| เทมเพลต | เส้นทางไปยังเทมเพลต Go |
| ที่อยู่ | ที่อยู่ของการเริ่มต้นบริการ (ค่าเริ่มต้นว่างเปล่าและการปรับใช้เครือข่ายสาธารณะสามารถนำไปใช้ได้) |
| ท่าเรือ | พอร์ตสำหรับการเริ่มต้นบริการ |
| Handletimeoutsecond | เวลาประมวลผลเวลาหมดเวลา (การกำหนดค่านี้ไม่ได้ใช้ในโครงการและสงวนไว้) |
| ติดตาม | ติดตามตัวบันทึกเส้นทางเพื่อส่งออกบันทึก (ไม่ได้ใช้ในโครงการสงวนไว้) |
| ข้อมูล | ข้อมูล PATH LOGGER ข้อมูลไปยังบันทึกเอาต์พุต |
| คำเตือน | คำเตือนพา ธ ไปยังบันทึกเอาต์พุต |
| ข้อผิดพลาด | ตัวบันทึกข้อผิดพลาดพา ธ ไปยังบันทึกเอาต์พุต |
โครงสร้างไดเรกทอรีต่อไปนี้จะต้องมั่นใจเมื่อทำงาน (ใช้ Linux ทำงานเป็นตัวอย่าง):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...เรียกใช้ไฟล์ที่เรียกใช้งานโดยตรงและดูพรอมต์ต่อไปนี้ว่าการรันสำเร็จ:

คุณสามารถทดสอบได้ด้วย curl localhost:8000/welcome ซึ่งจะส่งคืน HTML ของอินเทอร์เฟซต้อนรับ
การเข้าถึงแบบดั้งเดิม (การกำหนดค่าพอร์ตไม่ได้รับการแก้ไข): http: // localhost: 8000
หากคุณกำลังปรับใช้บนเซิร์ฟเวอร์และต้องการเข้าถึงผ่านเครือข่ายสาธารณะอย่าลืมตั้งค่าไฟร์วอลล์เพื่อเปิดพอร์ตที่เกี่ยวข้อง หากเป็นเซิร์ฟเวอร์คลาวด์คุณต้องเปิดกลุ่มความปลอดภัยด้วย
สาขาหลักได้อัปเดต DockerFile และใช้ Docker เพื่อทดสอบการรวบรวมและการดำเนินงานของการปฏิบัติงาน GO-WEB
ต่อไปนี้เป็นคู่มือการรวบรวม/การปรับใช้ Docker สำหรับการปฏิบัติ GO-WEB
นักเทียบท่าคืออะไรวิธีการติดตั้งและวิธีการใช้งานจะไม่ถูกอธิบายในรายละเอียดที่นี่
สำหรับรายละเอียดโปรดดูเอกสาร Docker อย่างเป็นทางการ: https://docs.docker.com/
ดำเนินการคำสั่งในลำดับต่อไปนี้ในไดเรกทอรีโครงการเพื่อทำการรวบรวมในเวลาที่สร้างภาพและเรียกใช้บริการเมื่อคอนเทนเนอร์เริ่มต้น
$ docker build -t go-web-practice -f ./build/package/dockerfile.build_run . docker run -d -p 8000:8000 go-web-practiceหลังจากการรวบรวมและการสร้างไฟล์ที่ใช้งานได้แล้วสร้างภาพที่กำลังทำงานซึ่งสามารถมั่นใจได้ว่าภาพสามารถทำงานได้ตามปกติแม้ว่าขนาดภาพจะเล็ก
ขนาดภาพของภาพที่รวบรวมและเรียกใช้โดยใช้ Docker ด้านบนใกล้กับ 1GB ในขณะที่ภาพที่เรียกใช้ในส่วนนี้มีเพียงประมาณ 100MB
หมายเหตุ: หลังจากที่มีการสร้างภาพที่มีชื่อว่า Go-Web-Practice ด้านบนภาพเก่าจะต้องถูกลบก่อนที่จะดำเนินการตามคำแนะนำในส่วนนี้
ก่อนอื่นตรวจสอบให้แน่ใจว่ามีไฟล์ปฏิบัติการที่รวบรวมได้ในไดเรกทอรีโครงการ
มี DockerFile ที่เตรียมไว้ในไดเรกทอรี /build/package ของโครงการเพื่อสร้างไฟล์ภาพ ใช้คำแนะนำต่อไปนี้เพื่อสร้างอิมเมจนักเทียบท่า
$ docker build -t go-web-practice -f ./build/package/dockerfile.run . ป้อนคำสั่งต่อไปนี้เมื่อเรียกใช้คอนเทนเนอร์ในพื้นหลัง:
$ docker run -d -p 8000:8000 go-web-practicedocker-composeหลังจากสร้างภาพแล้วมันจะถูกปรับใช้โดยตรงโดยใช้คำสั่ง Docker-compose:
$ docker-compose -f deployments/docker-compose.yaml upโปรดทราบว่าหากการกำหนดค่าพอร์ตได้รับการแก้ไขคุณจะต้องแก้ไขคำสั่ง Docker Run และฟิลด์การแมปพอร์ตในไฟล์การกำหนดค่า Docker-compose.yaml
หากคุณมีคำถามใด ๆ โปรดติดต่อฉันทางอีเมล: [email protected]