Ces dernières années, le langage Golang a été privilégié par les développeurs pour ses performances de concurrence élevées, sa syntaxe concise et sa vitesse de développement rapide. Cependant, dans un environnement de production réel, les applications Golang ont également besoin d'un serveur efficace pour prendre en charge leur fonctionnement. Cet article explique comment utiliser Nginx pour déployer des applications Golang.
1. Introduction à Nginx
Nginx est un logiciel de serveur Web léger et hautes performances. Il s'agit de l'un des logiciels de serveur Web les plus populaires actuellement et convient parfaitement aux services hautes performances tels que l'équilibrage de charge et le proxy inverse. Par rapport à Apache, Nginx a une empreinte mémoire plus petite, des capacités anti-concurrence plus fortes et des performances plus élevées. Par conséquent, Nginx est de plus en plus utilisé dans les clusters de services Web à forte charge.
2. Présentation de la solution de déploiement Golang
De manière générale, le déploiement des applications Golang peut être divisé selon les aspects suivants :
Ensuite, nous présenterons en détail comment utiliser Nginx pour implémenter le proxy inverse et l'équilibrage de charge, rendant les applications Golang plus efficaces et plus stables pendant le déploiement.
3. Installez Nginx et les composants associés
1. Installez Nginx
Exécutez simplement la commande suivante pour terminer l'installation simple de Nginx :
$ sudo apt-get update $ sudo apt-get install nginx
Une fois l'installation terminée, utilisez la commande suivante pour démarrer Nginx :
$ sudo systemctl start nginx
. 2. Créer une application Golang
Ici, pour montrer comment déployer une application Golang, nous avons écrit un simple fichier hello.go avec le code suivant :
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 Compilez le fichier binaire
Dans le répertoire racine de l'application Golang. , exécutez la commande suivante pour compiler Générer le fichier binaire :
$ go build -o myapp
Le fichier binaire généré sera placé dans le fichier myapp du répertoire courant.
4. Exécutez l'application Golang
Exécutez la commande suivante dans le terminal de ligne de commande pour exécuter l'application Golang :
$ ./myapp
Après l'exécution, vous pouvez accéder à l'application via localhost:8080 dans le navigateur.
4. Configurer Nginx
1. Proxy inverse
Afin de faciliter le déploiement des applications Golang, nous devons utiliser les requêtes de proxy inverse Nginx. Editez le fichier de configuration Nginx /etc/nginx/nginx.conf et modifiez-le avec le contenu suivant :
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; } } }
Une fois la modification terminée, utilisez la commande suivante pour redémarrer Nginx afin que la configuration prenne effet :
$ sudo systemctl restart nginx
Ensuite, accédez localhost dans la barre d'adresse du navigateur Vous pouvez accéder aux applications Golang.
2. Équilibrage de charge
Pour les scénarios à haute concurrence dans les environnements de production, nous devons utiliser des mécanismes d'équilibrage de charge pour améliorer les performances et la stabilité du système. Nginx propose une variété de stratégies d'équilibrage de charge, notamment l'interrogation, le hachage IP, le point de terminaison pondéré, etc. Dans cet article, nous prenons la stratégie d'interrogation comme exemple pour présenter comment configurer l'équilibrage de charge Nginx.
Dans le fichier de configuration de Nginx, l'équilibrage de charge peut être réalisé en modifiant la configuration de la partie amont :
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; } }
Ici, nous avons configuré trois instances d'application Golang, et Nginx distribuera les requêtes à chaque instance de manière interrogée. Une fois la modification terminée, redémarrez Nginx.
5. Utiliser Supervisor pour la gestion des processus
Dans un environnement de production, nous devons utiliser des outils de gestion de processus pour gérer les applications. Supervisor est un outil de gestion de processus couramment utilisé.
Tout d'abord, installez le Superviseur :
$ sudo apt-get install supervisor
Ensuite, créez un fichier de configuration du Superviseur, tel que myapp.conf, le contenu du fichier de configuration est le suivant :
[program:myapp] command=/path/to/myapp autostart=true autorestart=true user=username
Parmi eux, command est la commande à exécuter, démarrage automatique et le redémarrage automatique sont le superviseur pour démarrer et redémarrer automatiquement l'application. Utilisez la commande suivante pour démarrer Supervisor :
$ sudo systemctl start supervisor
Supervisor vérifiera régulièrement si l'application est en cours d'exécution. S'il constate que le programme se ferme anormalement, il redémarrera automatiquement l'application.
6. Résumé
Cet article explique comment utiliser Nginx pour déployer des applications Golang et utiliser Supervisor pour la gestion des processus. Grâce aux mécanismes de proxy inverse et d’équilibrage de charge, nous pouvons facilement déployer des applications Golang stables et performantes. Il est recommandé aux lecteurs de procéder aux ajustements et optimisations appropriés dans les environnements de production réels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!