Почему мои файлы css/js не могут быть найдены, когда systemd перезапускает мое приложение node.js?

У меня есть приложение node.js, которое я пытаюсь развернуть в производственном режиме, используя systemd, чтобы перезапустить его в случае сбоя/перезагрузки сервера. Приложение работает нормально, когда я запускаю его с помощью «node app.js» (т.е. все мои общедоступные файлы найдены). Однако, когда я завершаю процесс и systemd перезапускает его, Express больше не может найти мои файлы css/js. Я использую connect-assets для объединения моих файлов css/js.

Я думаю, что проблема в моем пути к узлу, но я не совсем уверен. Это ошибка, которую я вижу в своем браузере, когда systemd перезапускает приложение:

500 Error ...
> 11| != css('styles')
12| != js('application')
No file found for route css/styles.css

Когда я изучаю процесс, который я вручную запустил с помощью команды «node app.js», я вижу:

ghost   30222  6.8 17.8 140348 90848 pts/0    Sl+  18:01   0:08 node app.js

И когда systemd перезапускает приложение, я вижу следующее:

ghost   30332  5.5  9.1  94036 46516 ?        Ssl  18:05   0:01 /usr/local/bin/node /home/ghost/myapp/app.js

Вот мой служебный файл:

[Service]
ExecStart=/usr/local/bin/node /home/ghost/myapp/app.js 
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-sample
User=ghost
Group=ghost
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

person gh0st    schedule 26.11.2014    source источник
comment
Возможно, вы захотите установить WorkingDirectory на /home/ghost/myapp/.   -  person Wrikken    schedule 27.11.2014
comment
Да, похоже, это помогло. Спасибо @Wrikken!   -  person gh0st    schedule 27.11.2014


Ответы (1)


Вам нужно установить WorkingDirectory= в каталог верхнего уровня вашего приложения Node, где бы он ни находился.

Например:

WorkingDirectory=/home/ghost/myapp

или для глобально установленных приложений,

WorkingDirectory=/usr/lib/node_modules/myapp
person Michael Hampton    schedule 09.06.2015