Почему мои файлы 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
1 ответ
Вам нужно установить WorkingDirectory=
в каталог верхнего уровня вашего Node-приложения, где бы он ни находился.
Например:
WorkingDirectory=/home/ghost/myapp
или для глобально установленных приложений,
WorkingDirectory=/usr/lib/node_modules/myapp