Heim >Backend-Entwicklung >Golang >So stellen Sie Golang in Nginx bereit
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:
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!