Heim  >  Artikel  >  Backend-Entwicklung  >  So stellen Sie Golang in Nginx bereit

So stellen Sie Golang in Nginx bereit

PHPz
PHPzOriginal
2023-04-13 09:20:101711Durchsuche

In den letzten Jahren wurde die Golang-Sprache von Entwicklern aufgrund ihrer hohen Parallelitätsleistung, prägnanten Syntax und schnellen Entwicklungsgeschwindigkeit bevorzugt. In einer tatsächlichen Produktionsumgebung benötigen Golang-Anwendungen jedoch auch einen effizienten Server, um ihren Betrieb zu unterstützen. In diesem Artikel wird erläutert, wie Sie Nginx zum Bereitstellen von Golang-Anwendungen verwenden.

1. Einführung in Nginx

Nginx ist eine leichte, leistungsstarke Webserver-Software. Sie ist derzeit eine der beliebtesten Webserver-Software und eignet sich sehr gut für Hochleistungsdienste wie Lastausgleich und Reverse-Proxy. Im Vergleich zu Apache verfügt Nginx über einen geringeren Speicherbedarf, stärkere Anti-Parallelitätsfunktionen und eine höhere Leistung. Daher wird Nginx zunehmend in hochlastigen Webservice-Clustern eingesetzt.

2. Überblick über die Golang-Bereitstellungslösung

Generell kann die Bereitstellung von Golang-Anwendungen in die folgenden Aspekte unterteilt werden:

  1. Kompilieren Sie das Golang-Programm, um Binärdateien zu generieren.
  2. Verwenden Sie den Proxyserver Nginx, um Anforderungen weiterzuleiten Verwenden Sie Supervisor für die Prozessverwaltung
  3. Als nächstes stellen wir detailliert vor, wie Sie Nginx zur Implementierung von Reverse-Proxy und Lastausgleich verwenden, um Golang-Anwendungen während der Bereitstellung effizienter und stabiler zu machen.

3. Installieren Sie Nginx und zugehörige Komponenten

1. Führen Sie einfach den folgenden Befehl aus, um die einfache Installation von Nginx abzuschließen:

$ sudo apt-get update
$ sudo apt-get install nginx

Nachdem die Installation abgeschlossen ist, verwenden Sie den folgenden Befehl, um Nginx zu starten:

$ sudo systemctl start nginx

2. Golang-Anwendung erstellen

Um zu demonstrieren, wie eine Golang-Anwendung bereitgestellt wird, haben wir eine einfache hello.go-Datei mit dem folgenden Code geschrieben:

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)
}

3. Kompilieren Sie die Binärdatei

Im Stammverzeichnis der Golang-Anwendung , führen Sie den folgenden Befehl zum Kompilieren aus. Generieren Sie eine Binärdatei:

$ go build -o myapp

Die generierte Binärdatei wird in der myapp-Datei im aktuellen Verzeichnis abgelegt.

4. Führen Sie die Golang-Anwendung aus.

Führen Sie den folgenden Befehl im Befehlszeilenterminal aus, um die Golang-Anwendung auszuführen:

$ ./myapp

Nach dem Ausführen können Sie über localhost:8080 im Browser auf die Anwendung zugreifen.

4. Konfigurieren Sie Nginx

1. Um die Bereitstellung von Golang-Anwendungen zu erleichtern, müssen wir Nginx-Reverse-Proxy-Anfragen verwenden. Bearbeiten Sie die Nginx-Konfigurationsdatei /etc/nginx/nginx.conf und ändern Sie sie in den folgenden Inhalt:

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;
        }
    }
}

Nach Abschluss der Änderung verwenden Sie den folgenden Befehl, um Nginx neu zu starten, damit die Konfiguration wirksam wird:

$ sudo systemctl restart nginx

Als nächstes greifen Sie zu localhost in der Adressleiste des Browsers Sie können auf Golang-Anwendungen zugreifen.

2. Lastausgleich

Für Szenarien mit hoher Parallelität in Produktionsumgebungen müssen wir Lastausgleichsmechanismen verwenden, um die Systemleistung und -stabilität zu verbessern. Nginx bietet eine Vielzahl von Lastausgleichsstrategien, einschließlich Polling, IP-Hash, gewichteter Endpunkt usw. In diesem Artikel nehmen wir die Polling-Strategie als Beispiel, um die Konfiguration des Nginx-Lastausgleichs vorzustellen.

Ändern Sie in der Nginx-Konfigurationsdatei den Upstream-Teil der Konfiguration, um einen Lastausgleich zu erreichen:

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;
    }
}

Hier haben wir drei Golang-Anwendungsinstanzen konfiguriert, und Nginx verteilt Anforderungen per Abfrage an jede Instanz. Nachdem die Änderung abgeschlossen ist, starten Sie Nginx neu.

5. Verwenden Sie Supervisor für das Prozessmanagement. In einer Produktionsumgebung müssen wir Prozessmanagement-Tools verwenden, um Anwendungen zu verwalten.

Installieren Sie zuerst den Supervisor:

$ sudo apt-get install supervisor

Dann erstellen Sie eine Supervisor-Konfigurationsdatei, z. B. myapp.conf. Der Inhalt der Konfigurationsdatei lautet wie folgt:

[program:myapp]
command=/path/to/myapp
autostart=true
autorestart=true
user=username

Dabei ist „command“ der auszuführende Befehl, Autostart und Autorestart dienen dem Supervisor zum automatischen Starten und Neustarten der Anwendung. Verwenden Sie den folgenden Befehl, um Supervisor zu starten:

$ sudo systemctl start supervisor

Supervisor prüft regelmäßig, ob die Anwendung abnormal beendet wird, und startet die Anwendung automatisch neu.

6. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit Nginx Golang-Anwendungen bereitstellen und Supervisor für das Prozessmanagement verwenden. Durch Reverse-Proxy- und Lastausgleichsmechanismen können wir problemlos leistungsstarke und stabile Golang-Anwendungen bereitstellen. Den Lesern wird empfohlen, entsprechende Anpassungen und Optimierungen in tatsächlichen Produktionsumgebungen vorzunehmen.

Das obige ist der detaillierte Inhalt vonSo stellen Sie Golang in Nginx bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn