Für die Verwaltung von Node.js-Anwendungen auf einem Produktionsserver ist häufig ein Prozessmanager erforderlich, der dafür sorgt, dass Ihre Anwendungen reibungslos laufen und nach Abstürzen automatisch wiederhergestellt werden. PM2 ist einer der beliebtesten Prozessmanager für Node.js und bietet leistungsstarke Funktionen wie Prozessüberwachung, Protokollverwaltung und Cluster-Modus.
Wenn Sie eine Anwendung auf einer Google Cloud Ubuntu-Instanz ausführen, kann es vorkommen, dass PM2-Prozesse nur für den Benutzer sichtbar sind, der sie gestartet hat. Dies kann problematisch sein, wenn Ihr Server über mehrere Benutzer verfügt, z. B. Entwickler, Systemadministratoren oder automatisierte Bereitstellungsskripts. In diesem Blogbeitrag gehen wir die Schritte durch, um PM2 als systemweiten Dienst zu konfigurieren und ihn allen Benutzern auf dem Server zugänglich zu machen.
Standardmäßig wird PM2 als Prozess unter dem Benutzer ausgeführt, der es gestartet hat. Das heißt, wenn Sie als einzelner Benutzer eine SSH-Verbindung zu Ihrem Server herstellen und einen PM2-Prozess starten, ist dieser Prozess für einen anderen Benutzer, der sich über SSH anmeldet, nicht sichtbar. Um dieses Problem zu beheben, können wir PM2 so konfigurieren, dass es als Dienst auf Systemebene ausgeführt wird. Dieser Ansatz hat mehrere Vorteile:
Bevor wir beginnen, stellen Sie sicher, dass Sie Folgendes haben:
Um sicherzustellen, dass alle Benutzer auf PM2 zugreifen können, sollte es global installiert werden. Sie können PM2 global mit npm:
installieren
sudo npm install -g pm2
Dieser Befehl installiert PM2 im globalen npm-Verzeichnis und macht es systemweit verfügbar.
Als nächstes müssen wir PM2 so einrichten, dass es als Dienst ausgeführt wird. Dadurch kann PM2 Prozesse auf Systemebene verwalten, anstatt an eine bestimmte Benutzersitzung gebunden zu sein.
Führen Sie den folgenden Befehl aus, um das erforderliche Startskript für PM2 zu generieren:
pm2 startup
Dieser Befehl erkennt das von Ihrer Ubuntu-Instanz verwendete Init-System (normalerweise systemd) und stellt einen Befehl bereit, der mit sudo ausgeführt werden muss, um PM2 als systemweiten Dienst zu konfigurieren. Die Ausgabe sieht etwa so aus:
[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>
Hier
Kopieren Sie den in der Ausgabe des vorherigen Schritts bereitgestellten Befehl und führen Sie ihn aus. Zum Beispiel:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
Dieser Befehl erstellt einen systemd-Dienst, der PM2 mit den richtigen Umgebungsvariablen und dem richtigen Benutzerkontext startet.
Wenn unter PM2 bereits Prozesse ausgeführt werden, die Sie über Neustarts hinweg beibehalten möchten, müssen Sie die aktuelle Prozessliste speichern. Dadurch wird eine Dump-Datei erstellt, die PM2 zum Wiederherstellen von Prozessen beim Systemstart verwendet:
pm2 save
Der Befehl „pm2 save“ speichert die aktuelle Liste der verwalteten Prozesse in einer JSON-Datei in ~/.pm2/dump.pm2. Diese Datei wird beim Start von PM2 automatisch geladen und stellt so sicher, dass Ihre Anwendungen nach einem Neustart wiederhergestellt werden.
Um sicherzustellen, dass PM2 beim Systemstart automatisch startet, müssen Sie den Dienst aktivieren:
sudo systemctl enable pm2-johndoe
Ersetzen Sie johndoe durch den entsprechenden Benutzernamen. Dieser Befehl aktiviert den PM2-Dienst und stellt sicher, dass er bei jedem Systemstart gestartet wird.
Da PM2 nun als systemweiter Dienst konfiguriert ist, sollte es für jeden Benutzer auf dem Server zugänglich sein. Um den Status der Prozesse zu überprüfen oder aufzulisten, kann jeder Benutzer Folgendes ausführen:
pm2 list
Dieser Befehl zeigt die Liste der vom systemweiten PM2-Dienst verwalteten Prozesse an, unabhängig davon, welcher Benutzer angemeldet ist.
Wenn Sie möchten, dass mehrere Benutzer auf PM2-Protokolle zugreifen können, müssen Sie möglicherweise die Dateiberechtigungen anpassen oder PM2 so konfigurieren, dass Protokolle in einem freigegebenen Verzeichnis gespeichert werden. Dadurch wird sichergestellt, dass alle Benutzer Protokolle für die unter PM2 ausgeführten Prozesse anzeigen und verwalten können.
Um das Protokolldateiverzeichnis zu ändern, können Sie die folgende Umgebungsvariable verwenden:
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!
Das obige ist der detaillierte Inhalt vonEinrichten des PMor-Mehrbenutzerzugriffs auf der Ubuntu-Instanz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!