近年、Golang 言語は、その高い同時実行パフォーマンス、簡潔な構文、および迅速な開発速度により開発者に好まれています。ただし、実際の運用環境では、Golang アプリケーションの動作をサポートする効率的なサーバーも必要です。この記事では、Nginx を使用して Golang アプリケーションをデプロイする方法を紹介します。
1. Nginx の概要
Nginx は軽量で高性能な Web サーバー ソフトウェアであり、現在最も人気のある Web サーバー ソフトウェアの 1 つであり、ロード バランシングやリバース プロキシに非常に適しています。 . およびその他の高パフォーマンスのサービス。 Apache と比較して、Nginx はメモリ使用量が小さく、強力な同時実行防止機能と高いパフォーマンスを備えています。したがって、Nginx は高負荷の Web サービス クラスターで使用されることが増えています。
2. Golang デプロイメント スキームの概要
一般的に、Golang アプリケーションのデプロイメントは次の側面に分けることができます:
$ sudo apt-get update $ sudo apt-get install nginx2. Golang アプリケーションの作成 ここでは、Golang アプリケーションをデプロイする方法を示すために、次のような単純な hello.go ファイルを作成しました。次のコード:
$ sudo systemctl start nginx3. バイナリ ファイルをコンパイルします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 を編集し、次の内容に変更します:
$ ./myapp変更が完了したら、次のコマンドを使用して 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 supervisorcommand は実行するコマンド、autostart と autorestart はスーパーバイザーの自動起動および再起動アプリケーションです。次のコマンドを使用してスーパーバイザを起動します:
[program:myapp] command=/path/to/myapp autostart=true autorestart=true user=usernameスーパーバイザはアプリケーションが実行されているかどうかを定期的にチェックし、プログラムが異常終了したことを検出した場合は、アプリケーションを自動的に再起動します。 6. 概要この記事では、Nginx を使用して Golang アプリケーションをデプロイし、プロセス管理に Supervisor を使用する方法を紹介します。リバース プロキシと負荷分散メカニズムを通じて、高性能で安定した Golang アプリケーションを簡単にデプロイできます。実際の運用環境で適切な調整と最適化を行うことをお勧めします。
以上がnginx に golang をデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。