ホームページ > バックエンド開発 > Golang > nginx に golang をデプロイする方法

nginx に golang をデプロイする方法

PHPz
リリース: 2023-04-13 10:18:45
オリジナル
1755 人が閲覧しました

近年、Golang 言語は、その高い同時実行パフォーマンス、簡潔な構文、および迅速な開発速度により開発者に好まれています。ただし、実際の運用環境では、Golang アプリケーションの動作をサポートする効率的なサーバーも必要です。この記事では、Nginx を使用して Golang アプリケーションをデプロイする方法を紹介します。

1. Nginx の概要

Nginx は軽量で高性能な Web サーバー ソフトウェアであり、現在最も人気のある Web サーバー ソフトウェアの 1 つであり、ロード バランシングやリバース プロキシに非常に適しています。 . およびその他の高パフォーマンスのサービス。 Apache と比較して、Nginx はメモリ使用量が小さく、強力な同時実行防止機能と高いパフォーマンスを備えています。したがって、Nginx は高負荷の Web サービス クラスターで使用されることが増えています。

2. Golang デプロイメント スキームの概要

一般的に、Golang アプリケーションのデプロイメントは次の側面に分けることができます:

  1. Golang プログラムをコンパイルしてバイナリを生成するfiles
  2. プロキシ サーバー Nginx を使用してリクエストを転送する
  3. 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 を編集し、次の内容に変更します:

$ ./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 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート