近年、Golang 言語は、その高い同時実行パフォーマンス、簡潔な構文、および迅速な開発速度により開発者に好まれています。ただし、実際の運用環境では、Golang アプリケーションの動作をサポートする効率的なサーバーも必要です。この記事では、Nginx を使用して Golang アプリケーションをデプロイする方法を紹介します。
1. Nginx の概要
Nginx は軽量で高性能な Web サーバー ソフトウェアであり、現在最も人気のある Web サーバー ソフトウェアの 1 つであり、ロード バランシングやリバース プロキシに非常に適しています。 . およびその他の高パフォーマンスのサービス。 Apache と比較して、Nginx はメモリ使用量が小さく、強力な同時実行防止機能と高いパフォーマンスを備えています。したがって、Nginx は高負荷の Web サービス クラスターで使用されることが増えています。
2. Golang デプロイメント スキームの概要
一般的に、Golang アプリケーションのデプロイメントは次の側面に分けることができます:
- Golang プログラムをコンパイルしてバイナリを生成するfiles
- プロキシ サーバー Nginx を使用してリクエストを転送する
- Supervisor をプロセス管理に使用する
#次に、Nginx を使用してリバース プロキシとリバース プロキシを実装する方法を詳しく紹介します。負荷分散により、Golang アプリケーションのデプロイメント時の効率と安定性が向上します。
3. Nginx と関連コンポーネントのインストール
1. Nginx のインストール
次のコマンドを実行するだけで、Nginx の簡単なインストールが完了します。完了したら、次のコマンドを使用して Nginx を起動します:
$ sudo apt-get update
$ sudo apt-get install nginx
ログイン後にコピー
2. Golang アプリケーションの作成
ここでは、Golang アプリケーションをデプロイする方法を示すために、次のような単純な hello.go ファイルを作成しました。次のコード:
$ sudo systemctl start nginx
ログイン後にコピー
3. バイナリ ファイルをコンパイルします
Golang アプリケーションのルート ディレクトリで、次のコマンドを実行してバイナリ ファイルをコンパイルして生成します:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Nginx!")
})
http.ListenAndServe(":8080", nil)
}
ログイン後にコピー
生成されたバイナリ ファイルは、現在のディレクトリの myapp ファイルに配置されます。
4. Golang アプリケーションを実行します
コマンド ライン ターミナルで次のコマンドを実行して、Golang アプリケーションを実行します:
$ go build -o myapp
ログイン後にコピー
実行後、localhost:8080 を使用できます。ブラウザからアプリにアクセスします。
4. Nginx の設定
1. リバース プロキシ
Golang アプリケーションのデプロイメントを容易にするために、Nginx リバース プロキシ リクエストを使用する必要があります。 Nginx 構成ファイル /etc/nginx/nginx.conf を編集し、次の内容に変更します:
変更が完了したら、次のコマンドを使用して Nginx を再起動し、構成を有効にします:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
multi_accept on;
}
http {
upstream myapp{
server 127.0.0.1:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
ログイン後にコピー
次に、ブラウザのアドレス バーで localhost に移動し、Golang アプリケーションにアクセスします。
2. 負荷分散
実稼働環境での同時実行性の高いシナリオでは、負荷分散メカニズムを使用してシステムのパフォーマンスと安定性を向上させる必要があります。 Nginx は、ポーリング、IP ハッシュ、加重エンドポイントなどを含む、さまざまな負荷分散戦略を提供します。この記事では、ポーリング戦略を例として、Nginx ロード バランシングを構成する方法を紹介します。
Nginx 構成ファイルで、負荷分散を実現するために上流部分の構成を変更します。
$ sudo systemctl restart nginx
ログイン後にコピー
ここでは 3 つの Golang アプリケーション インスタンスを構成しており、Nginx は各インスタンスに分散されたリクエストをポーリングします。 。変更が完了したら、Nginxを再起動します。
5. プロセス管理に Supervisor を使用する
運用環境では、アプリケーションを管理するためにプロセス管理ツールを使用する必要があります。Supervisor は一般的に使用されるプロセス管理ツールです。
まず、スーパーバイザーをインストールします:
upstream myapp {
server 127.0.0.1:8080;
server 127.0.0.1:8090;
server 127.0.0.1:8100;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
ログイン後にコピー
次に、myapp.conf などのスーパーバイザー構成ファイルを作成します。構成ファイルの内容は次のとおりです。
$ sudo apt-get install supervisor
ログイン後にコピー
command は実行するコマンド、autostart と autorestart はスーパーバイザーの自動起動および再起動アプリケーションです。次のコマンドを使用してスーパーバイザを起動します:
[program:myapp]
command=/path/to/myapp
autostart=true
autorestart=true
user=username
ログイン後にコピー
スーパーバイザはアプリケーションが実行されているかどうかを定期的にチェックし、プログラムが異常終了したことを検出した場合は、アプリケーションを自動的に再起動します。
6. 概要
この記事では、Nginx を使用して Golang アプリケーションをデプロイし、プロセス管理に Supervisor を使用する方法を紹介します。リバース プロキシと負荷分散メカニズムを通じて、高性能で安定した Golang アプリケーションを簡単にデプロイできます。実際の運用環境で適切な調整と最適化を行うことをお勧めします。
以上がnginx に golang をデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。