Maison  >  Article  >  développement back-end  >  déploiement du démon golang

déploiement du démon golang

WBOY
WBOYoriginal
2023-05-15 10:26:37828parcourir

Avec le développement rapide de la technologie Internet, divers langages performants émergent les uns après les autres. Parmi eux, Golang est devenu le langage de choix pour de plus en plus de développeurs grâce à son mécanisme de concurrence efficace et sa syntaxe concise. Dans les environnements de production réels, nous devons souvent déployer nos applications Golang sur le serveur sous la forme d'un processus démon pour implémenter des fonctions telles que le démarrage automatique et le redémarrage en cas d'erreur. Ensuite, nous présenterons comment utiliser systemd pour déployer des applications Golang en tant que démons.

1. Qu'est-ce qu'un processus démon ? Pour faire simple, un processus démon est un processus qui s'exécute en arrière-plan et reste actif. Il ne dépend pas du terminal et ne se termine pas à la fermeture du terminal. Il peut démarrer automatiquement au démarrage du système et redémarrer automatiquement lorsqu'une erreur est rencontrée. C'est très courant dans les scénarios de serveur. Par exemple, les serveurs Web, les bases de données, etc. fonctionnent tous sous la forme de processus démons, garantissant la fiabilité et la stabilité du système.

2. Pourquoi choisir systemd

Il existe de nombreuses façons d'exécuter des applications en tant que démons dans les systèmes Linux, tels que nohup, screen, etc. Bien que ces méthodes soient simples et faciles à utiliser, elles ne peuvent répondre qu’à des exigences relativement basiques en termes d’évolutivité et de gestion. systemd est un service de gestion de système relativement nouveau, son objectif est de remplacer des services tels que SysV et Upstart. Systemd considère l'optimisation du temps de démarrage comme son principe directeur le plus élevé. Grâce à l'analyse et aux tests d'un grand nombre de systèmes Linux différents et de services associés, systemd a obtenu une série d'excellentes fonctionnalités telles qu'une vitesse de démarrage très rapide et une configuration simple et facile. Actuellement, systemd a été adopté par de nombreuses distributions Linux.

3. Écrivez l'application Golang

Supposons que notre application doit écouter les requêtes HTTP et renvoyer "hello world", créez d'abord un fichier main.go :

package main

import (
    "fmt"
    "net/http"
)

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!
")
}

func main() {
    http.HandleFunc("/", HelloWorld)
    http.ListenAndServe(":8080", nil)
}

Exécutez la commande suivante pour démarrer l'application :

go run main.go

Vous peut accéder à http://localhost:8080 Voir l'effet.

4. Créer un fichier d'unité Systemd

Un fichier d'unité Systemd est un fichier de configuration qui contient des informations sur les performances, la configuration et le démarrage/arrêt d'un service spécifique. Avant d'utiliser systemd, vous devez créer un fichier Unit du script de démarrage du démon, nommé myapp.service, comme indiqué ci-dessous :

[Unit]
Description=My App
After=network.target

[Service]
User=root
WorkingDirectory=/root/myapp
ExecStart=/root/myapp/myapp
Restart=always

[Install]
WantedBy=multi-user.target

L'explication de chaque paramètre est la suivante : myapp.service,如下所示:

systemctl daemon-reload  # 重载 daemon
systemctl start myapp.service  # 启动服务
systemctl enable myapp.service  # 将服务设为开机启动

各项参数的解释如下:

  • Description:服务的描述
  • After:当在运行 run level 的时候,本 unit 必需在顺序列表的最后。(本文的设置表示必须在网络服务启动后才启动本应用)
  • User:应用程序运行的用户
  • WorkingDirectory:应用程序运行的工作目录
  • ExecStart:应用程序执行的命令
  • Restart:如果应用程序意外终止,则自动重新启动应用程序
  • WantedBy:用来指定哪些 target(启动级别)或者多个 target(启动级别)下将会启用该 service。

创建 Unit 文件后,将其复制到 /etc/systemd/system/

    Description : Description du service
  • Après : Lors de l'exécution du niveau d'exécution, cette unité doit être à la fin de la liste de séquence. (Les paramètres de cet article indiquent que l'application doit être démarrée après le démarrage du service réseau)
  • Utilisateur : l'utilisateur sous lequel l'application est exécutée
  • WorkingDirectory
  • WorkingDirectory
  • code> : Le répertoire de travail dans lequel l'application s'exécute.
  • ExecStart : La commande exécutée par l'application
  • Redémarrer : Si l'application est arrêtée de manière inattendue, l'application sera automatiquement redémarrée
  • WantedBy : utilisé pour spécifier quelle cible (niveau de démarrage) ou plusieurs cibles (niveau de démarrage) activera le service.
Après avoir créé le fichier Unit, copiez-le dans le répertoire /etc/systemd/system/.

Ensuite, exécutez la commande suivante pour démarrer le processus démon :

systemctl status myapp.service

À ce stade, notre application Golang a été déployée sur le serveur sous la forme d'un processus démon. Vous pouvez vérifier l'état du service via la commande suivante :

rrreee

5. Résumé

Cet article explique comment utiliser systemd pour déployer des applications Golang en tant que démons sur le serveur. Il existe de nombreuses façons de gérer le système, et celle ci-dessus n’est qu’une méthode de mise en œuvre. J'espère que cela inspirera les lecteurs qui ont besoin d'exécuter des applications Golang en tant que démons. Plus de détails sur Systemd doivent être étudiés par vous-même. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn