Maison > Article > interface Web > Configuration de l'accès multi-utilisateur PMor sur une instance Ubuntu
La gestion des applications Node.js sur un serveur de production nécessite souvent un gestionnaire de processus pour garantir le bon fonctionnement de vos applications et leur récupération automatique en cas de crash. PM2 est l'un des gestionnaires de processus les plus populaires pour Node.js, offrant des fonctionnalités puissantes telles que la surveillance des processus, la gestion des journaux et le mode cluster.
Si vous exécutez une application sur une instance Google Cloud Ubuntu, vous pourriez rencontrer une situation dans laquelle les processus PM2 ne sont visibles que par l'utilisateur qui les a démarrés. Cela peut être problématique si votre serveur compte plusieurs utilisateurs, tels que des développeurs, des administrateurs système ou des scripts de déploiement automatisés. Dans cet article de blog, nous passerons en revue les étapes permettant de configurer PM2 en tant que service à l'échelle du système, le rendant accessible à tous les utilisateurs du serveur.
Par défaut, PM2 s'exécute comme un processus sous l'utilisateur qui l'a démarré. Cela signifie que si vous vous connectez via SSH à votre serveur en tant qu'utilisateur et démarrez un processus PM2, ce processus ne sera pas visible par un autre utilisateur qui se connecte via SSH. Pour résoudre ce problème, nous pouvons configurer PM2 pour qu'il s'exécute en tant que service au niveau du système. Cette approche présente plusieurs avantages :
Avant de commencer, assurez-vous d'avoir les éléments suivants :
Pour garantir que tous les utilisateurs puissent accéder à PM2, celui-ci doit être installé globalement. Vous pouvez installer PM2 globalement en utilisant npm :
sudo npm install -g pm2
Cette commande installe PM2 dans le répertoire global npm, le rendant disponible dans tout le système.
Ensuite, nous devons configurer PM2 pour qu'il s'exécute en tant que service. Cela permettra à PM2 de gérer les processus au niveau du système plutôt que d'être lié à une session utilisateur spécifique.
Exécutez la commande suivante pour générer le script de démarrage nécessaire pour PM2 :
pm2 startup
Cette commande détecte le système d'initialisation utilisé par votre instance Ubuntu (généralement systemd) et fournit une commande qui doit être exécutée avec sudo pour configurer PM2 en tant que service à l'échelle du système. Le résultat ressemblera à ceci :
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u <username> --hp /home/<username>
Ici,
Copiez la commande fournie dans le résultat de l'étape précédente et exécutez-la. Par exemple :
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
Cette commande crée un service systemd qui démarre PM2 avec les variables d'environnement et le contexte utilisateur corrects.
Si vous avez déjà des processus exécutés sous PM2 et que vous souhaitez conserver lors des redémarrages, vous devez enregistrer la liste actuelle des processus. Cela crée un fichier de dump que PM2 utilisera pour restaurer les processus au démarrage du système :
pm2 save
La commande pm2 save enregistre la liste actuelle des processus gérés dans un fichier JSON dans ~/.pm2/dump.pm2. Ce fichier est chargé automatiquement au démarrage de PM2, garantissant ainsi la résurrection de vos applications après un redémarrage.
Pour garantir que PM2 démarre automatiquement au démarrage du système, vous devez activer le service :
sudo systemctl enable pm2-johndoe
Remplacez johndoe par le nom d'utilisateur approprié. Cette commande active le service PM2, garantissant qu'il démarre à chaque démarrage du système.
Maintenant que PM2 est configuré en tant que service à l'échelle du système, il devrait être accessible à tout utilisateur du serveur. Pour vérifier l'état des processus ou pour les lister, tout utilisateur peut exécuter :
pm2 list
Cette commande affichera la liste des processus gérés par le service PM2 à l'échelle du système, quel que soit l'utilisateur connecté.
Si vous avez besoin que les journaux PM2 soient accessibles par plusieurs utilisateurs, vous devrez peut-être ajuster les autorisations des fichiers ou configurer PM2 pour stocker les journaux dans un répertoire partagé. Cela garantit que tous les utilisateurs peuvent afficher et gérer les journaux des processus exécutés sous PM2.
Pour modifier le répertoire du fichier journal, vous pouvez utiliser la variable d'environnement suivante :
export PM2_HOME=/path/to/shared/pm2/home
Set this in a global configuration file, like /etc/environment, to make it persistent across sessions.
Once PM2 is set up as a service, users can manage processes using standard PM2 commands. However, depending on the permissions and user roles, some commands might require sudo access. For example:
sudo pm2 list
This command will list the processes managed by the system-wide PM2 service, making it easier for administrators and developers to collaborate on server management.
Setting up PM2 as a system-wide service on your Ubuntu instance ensures that your Node.js applications are robustly managed and accessible to all users on the server. This setup is particularly useful in environments with multiple users or automated deployment processes, providing a reliable and centralized way to manage applications.
By following the steps outlined in this guide, you can ensure that PM2 is available to all users, your processes are automatically restarted after system reboots, and logs are easily accessible. This not only simplifies server management but also enhances the reliability of your applications in production.
Happy coding!
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!