сервер express.js как сервис с systemd - 502 - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь запустить мой экспресс-сервер в качестве службы с помощью 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}, и служба тоже должна быть

...