Go-Web-Practice-это учебный проект. Реализуйте простое веб -приложение с помощью нативной библиотеки Голанга.
Этот проект изучен и написан видео «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, а миграция других IDE неизвестна.
- Только небольшой комментарий написан в Main.go, и комментарии других файлов будут обновлены в будущем.
- В текущем проекте очень мало интерфейсов маршрутизации, поэтому вы можете добавить их самостоятельно, если они вам нужны.
- Нет базы данных.
- Прежде чем работать с Docker и Docker-Compose, вам необходимо скомпилировать проект самостоятельно или поместить исполняемый файл в каталог проекта.
Сначала вы должны убедиться, что вы установили среду Голанга. Если вы измените проект, вам необходимо перекомпилировать и получить исполняемый файл, прежде чем его можно будет развернуть и запустить. **
Кросс-компиляция 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 | Время времени ожидания запроса (эта конфигурация не используется в проекте и зарезервирована) |
| след | трассировать Logger Путь к выводу журнала (не используется в проекте, зарезервировано) |
| информация | Информационный путь регистрации в журнал вывода |
| Предупреждение | Предупреждающий путь регистрации в журнал вывода |
| ошибка | Логист ошибок путем к выводу журнала |
Следующая структура каталога должна быть обеспечена при запуске (в качестве примера запуска Linux):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...Запустите исполняемый файл напрямую и посмотрите следующие подсказки о том, что выполнение успешного:

Вы можете проверить его с помощью curl localhost:8000/welcome , который вернет HTML с приветственным интерфейсом.
Настоящий доступ (конфигурация порта не изменена): http: // localhost: 8000.
Если вы развернете на сервере и хотите получить доступ к нему через общедоступную сеть, не забудьте настроить брандмауэр, чтобы открыть соответствующий порт. Если это облачный сервер, вы также должны открыть группу безопасности.
Мастерская ветвь обновила DockerFile и использовал Docker для проверки компиляции и работы Go-Web-Practice.
Ниже приведено руководство по компиляции/развертыванию Docker для Go-Web-Practice.
Что такое Docker, как установить и как его использовать, здесь не будет подробно объяснено.
Для получения подробной информации, пожалуйста, обратитесь к официальному документу 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 выше, близок к 1 ГБ, в то время как запускаемое изображение, встроенное в этом разделе, составляет всего около 100 МБ.
Примечание. После того, как изображение с именем GO-Web-Practice было построено выше, старое изображение должно быть удалено перед выполнением инструкций в этом разделе.
Во -первых, убедитесь, что в каталоге проекта есть собранной исполняемый файл.
В каталоге проекта есть подготовленный Dockerfile в /build/package проекта для создания файла изображения. Используйте следующие инструкции, чтобы построить изображение Docker.
$ 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]