Я пытаюсь запустить мой экспресс-сервер в качестве службы с помощью systemd. Однако после его настройки запросы к нему ожидают в течение одной минуты, а затем завершаются неудачно с таймаутом 504 шлюза.
когда:
sudo systemctl stop nodeserver.service
ответ - сразу 502 плохих шлюза. Когда я делаю node server.js
без systemd, все коды ответов равны 200.
Это мой системный файл:
[Unit]
Description=Express server
[Service]
Type=simple
ExecStart=/usr/bin/node /opt/nodeserver/server.js
#WorkingDirectory=/opt/nodeserver
Restart=always
# Restart service after 10 seconds if node service crashes
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodejs-example
[Install]
WantedBy=multi-user.target
Это статус во время работы
nodeserver.service - Express server
Loaded: loaded (/etc/systemd/system/nodeserver.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-03-11 11:27:31 UTC; 39s ago
Main PID: 24419 (node)
Tasks: 6 (limit: 1152)
CGroup: /system.slice/nodeserver.service
└─24419 /usr/bin/node /opt/nodeserver/server.js
это мой сервер express.js:
const express = require("express")
const cors = require("cors")
const app = express();
const PORT = 1234;
const spawn = require("child_process").spawn;
app.use(cors())
app.listen(PORT, function () {
console.log(`listening on port:${PORT}...`)
})
app.get("/api/play/:choice", function (req, res) {
pythonProcess = spawn('python', ["./script.py", req.params.choice]);
pythonProcess.stdout.on('data', function (data) {
let string = data.toString('utf-8')
const json = JSON.parse('{' + string.replace(/(\w+):(\w+)/g, `"$1":"$2"`) + '}')
res.status(200).send(json)
})
})
Сервер express.js доступен по адресу lcoalhost: 1234 / {params}, и служба тоже должна быть