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.
2. Pourquoi choisir systemd
3. Écrivez l'application Golang
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
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 serviceAprè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éeWorkingDirectory</li><li><code>WorkingDirectory</li> code> : Le répertoire de travail dans lequel l'application s'exécute.</li><li><code>ExecStart
: La commande exécutée par l'applicationRedémarrer
: Si l'application est arrêtée de manière inattendue, l'application sera automatiquement redémarréeWantedBy
: utilisé pour spécifier quelle cible (niveau de démarrage) ou plusieurs cibles (niveau de démarrage) activera le service. /etc/systemd/system/
. Ensuite, exécutez la commande suivante pour démarrer le processus démon : systemctl status myapp.service
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!