2015-08-04 5 views
11

Meine Frage läuft über HTTP-Server in Kombination mit PM2.Running NodeJs http-Server für immer mit PM2

Das Problem, das ich Gesicht ist, dass:

  1. HTTP-Server als Eingabe erfordert einen Ordner, der die Wurzel der Website ist und eine Portnummer auf die Website ausgeführt werden.
  2. PM2 erkennt den HTTP-Server-Befehl nicht, auch wenn HTTP-Server mit der Option -g installiert ist. So

Ich habe versucht, die folgenden (man beachte den Doppelstrich, der die Parameter an den HTTP-Server-Skript übergeben sollte.

/node_modules/http-server/lib$ pm2 start http-server.js -- /home/unixuser/websiteroot -p8686 

Aber es funktioniert nicht

ich auch versucht:

http-server /home/unixuser/websiteroot -p8686 

Welche Arbeit leistet, aber nicht über die große Unterstützung von PM2?

Irgendwelche Vorschläge wären großartig, danke!

+0

überprüfen Sie Ihren Build-Pfad gehen und treffen: build/prod $ sudo pm2 start/usr/local/bin/http-server -p 8080 – Jaswinder

Antwort

28

Sie hatten es fast.

prüfen, wo http-Server durch die Ausführung befindet:

$ which http-server 

Sie sollten so etwas wie dieses /usr/bin/http-server

Dann cd in das Verzeichnis Sie Dateien von dienen wollen lernen und auszuführen:

$ pm2 start /usr/bin/http-server --name my-file-server -- -p 8080 -d false 

--name my-file-server ist optional, aber -- ist erforderlich, um Argumente zu übergeben der http-server Befehl.

+0

Danke, das hat tatsächlich funktioniert, ich wusste nicht, dass es einen http-Server-Befehl gab. –

+1

Sie haben oft mehrere Versionen/Installationen der gleichen ausführbaren Datei auf dem gleichen Computer und 'which' ist praktisch, um zu sehen, welcher mit dem Befehl verknüpft ist. –

+1

Danke für die Erwähnung von '--' um Argumente an http-Server zu übergeben, kam ich dafür –

0

wenn wir einen Build erzeugt durch Grunzen, dann auf seinem Weg gehen und traf:

~/app/build/prod$ sudo pm2 start /usr/local/bin/http-server -p 8080 

Jetzt App Status bei localhost:8080