2016-07-20 1 views
0

Ich habe eine grundlegende NodeJS Blog-Anwendung gebaut und ich hosten es auf einem Centos7 Minimal VPS (OpenVZ glaube ich).Ich kann keine Verbindung zu meiner NodeJS-Site herstellen, wenn sie als Dienst ausgeführt wird. Es gibt keine Fehlermeldungen, die ich finden kann

Ich habe die entsprechende Knoten-Version, MongoDB und die Abhängigkeiten npm mit "npm install" nach dem Klonen von meinem Git-Repository installiert.

Ich kann die Site manuell über die Befehlszeile fehlerfrei erstellen und starten und die Site über einen Webbrowser erreichen, um zu überprüfen, ob alles funktioniert.

Wenn ich jedoch versuche, die Seite mit 'sudo systemctl blog start' zu starten, scheint nichts zu passieren. "stytemctl blog status" zeigt grünen "aktiven (laufenden)" Text, aber ich kann keine Verbindung über einen Browser herstellen.

[[email protected] Blog-Project]$ sudo systemctl status blog 
● blog.service - blog nodejs server 
    Loaded: loaded (/etc/systemd/system/blog.service; enabled; vendor preset: disabled) 
    Active: active (running) since Wed 2016-07-20 15:56:31 EST; 2min 52s ago 
Main PID: 12451 (server.js) 
    CGroup: /system.slice/blog.service 
      └─12451 /usr/bin/env /var/www/Blog-Project/server.js 

Hier ist meine .service Datei aus /etc/systemd/system/blog.service

[Unit] 
Description=blog nodejs server 
After=network.target 

[Service] 
ExecStart=/var/www/Blog-Project/server.js 
Restart=always 
User=root 
Group=nobody 
Environment=PATH=/usr/bin:/usr/local/bin 
Environment=NODE_ENV=production 
WorkingDirectory=/var/www/Blog-Project 

[Install] 
WantedBy=multi-user.target 

ich die server.js mit diesem Befehl ausführbar gemacht haben:

chmod +x server.js 

Kann jemand an etwas denken, das ich vielleicht verpasst habe?

Inhalt server.js wie gewünscht:

#!/usr/bin/env 
// Require packages 
var express = require('express'); 
var cors = require('cors'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
var stormpath = require('express-stormpath'); 


var app = express(); 


// Middleware 
app.use(cors()); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(express.static(__dirname + '/views')); 
app.use('/images', express.static(__dirname + '/images')); 
...... etc., etc... 
+1

Was ist in Ihrem server.js? Verbindet Ihr System .js-Dateien mit node.js oder müssen Sie in Ihrer Servicedatei den Pfad angeben? – leetibbett

+0

Ich habe die Datei server.js hinzugefügt und bemerke, dass ich den 'Knoten' am Ende der ersten Zeile verlassen habe. Ich werde jetzt testen. –

+0

Das war definitiv die Lösung. Kann ich dir die Antwort irgendwie geben? Ich bin noch neu in SO. –

Antwort

2

Sie in server.js angeben müssen, dass es unter node.js, wie diese ausgeführt werden soll:

#!/bin/env node 

oder führen Sie es wie ein Knotenscript, das den Skriptnamen als Parameter für den Knoten in der Befehlszeile verwendet.

Verwandte Themen