2016-07-20 1 views
0

Я создал базовое приложение для блога NodeJS, и я размещаю его на Centos7 Minimal VPS (OpenVZ, я считаю).Не удается подключиться к моему сайту NodeJS при запуске службы. Нет сообщений об ошибках, которые я могу найти

После клонирования из моего репозитория git я установил соответствующую версию узла, MongoDB и зависимости npm с «npm install».

Я могу создать и запустить сайт вручную из командной строки без каких-либо ошибок и добраться до сайта через веб-браузер, чтобы убедиться, что все работает.

Однако, когда я пытаюсь запустить сайт с 'sudo systemctl blog start', ничего не происходит. «Статус stytemctl blog» показывает зеленый «активный (рабочий)» текст, но я не могу подключиться через браузер.

[[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 

Вот мой .Service файл из /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 

Я сделал server.js исполняемого с этой командой:

chmod +x server.js 

Может ли кто-нибудь подумать о чем-то, что я, возможно, пропустил?

содержание server.js в соответствии с просьбой:

#!/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

Что у вас на сервере server.js? ваша система связывает файлы .js с узлом node.js или вам нужно указать путь узла в вашем служебном файле? – leetibbett

+0

Я добавил файл server.js, и я заметил, что я оставил «узел» в конце первой строки. Я проверю сейчас. –

+0

Это было определенно решение. Могу ли я дать вам ответ? Я все еще новичок в SO. –

ответ

2

Вы должны указать в server.js, что он должен работать под Node.js, как это:

#!/bin/env node 

или выполнить его, как с использованием имени сценария в качестве параметра для узла в командной строке.