Go-Web-Practiceは学習プロジェクトです。 Golangのネイティブライブラリを使用して、簡単なWebアプリケーションを実装します。
このプロジェクトは、ビデオ「Go Webプログラミングクイックスタート[Golang/Go Language](Complete)」によって学習および書かれています。
ビデオに基づいて、いくつかの変更が行われました:
このプロジェクトはテストおよび展開されており、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の環境をインストールしていることを確認する必要があります。プロジェクトを変更する場合は、展開して実行する前に、プロジェクトを再コンパイルして取得する必要があります。 **
Golangのクロスコンパイルは、WindowsのLinuxで実行できる実行可能ファイルをコンパイルできるようにするため、非常に便利な利便性を提供します。
次の.batスクリプトを使用して、Windowsの実行可能ファイルコンパイルとWindowsのLinux環境を完了できます。
# 请以项目目录为工作目录执行该脚本
# 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 | タイムアウト時間の処理時間を要求します(この構成はプロジェクトでは使用されず、予約されています) |
| トレース | トレースロガーログを出力するパス(プロジェクトで使用されていない、予約済み) |
| 情報 | 出力ログへの情報ロガーパス |
| 警告 | 出力ログへの警告ロガーパス |
| エラー | エラーロガー出力ログへのパス |
実行時に次のディレクトリ構造を確保する必要があります(Linuxを例として実行する):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...実行可能ファイルを直接実行し、実行が成功したという次のプロンプトを確認してください。

curl localhost:8000/welcomeでテストできます。これにより、Welcome InterfaceのHTMLが返されます。
ネイティブアクセス(ポート構成は変更されていません):http:// localhost:8000。
サーバーに展開していて、パブリックネットワークを介してアクセスしたい場合は、対応するポートを開くためにファイアウォールを設定することを忘れないでください。クラウドサーバーの場合は、セキュリティグループも開く必要があります。
マスターブランチはDockerfileを更新し、Dockerを使用してGo-Web-Practiceの編集と操作をテストしました。
以下は、Go-Web-PracticeのDockerコンピレーション/展開ランガイドです。
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を使用してコンパイルおよび実行された画像の画像サイズは1GBに近く、このセクションで構築された実行可能な画像は約100MBです。
注:go-web-practiceという名前の画像が上に構築された後、このセクションの指示を実行する前に古い画像を削除する必要があります。
まず、プロジェクトディレクトリにコンパイルされた実行可能ファイルがあることを確認してください。
画像ファイルを生成するために、プロジェクトの/build/packageディレクトリに準備されたdockerfileがあります。次の手順を使用して、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-Compose.yaml構成ファイルのDocker Runコマンドとポートマッピングフィールドを変更する必要があることに注意してください。
ご質問がある場合は、メールでご連絡ください:[email protected]