这是我第一次尝试为 Ubuntu 创建启动脚本。我需要为我的 API 启动一个 Express 服务器,我已经遵循了让 Node.js 服务在 Ubuntu Server 上始终保持活动状态。
所以我的 server.js 看起来像这样(我也做了一个chmod +x
):
import express from 'express'
import morgan from 'morgan'
import bodyParser from 'body-parser'
import mongoose from 'mongoose'
import router from './router'
// chargement du fichier .env qui contient les différentes configuration du projet
require('dotenv').config({path: __dirname + '/.env'})
// Connexion à MongoDB
mongoose.connect('mongodb://localhost/Lyveat_Rider')
// Initialisation du serveur http
const app = express()
// Logger qui affiche toutes les requêtes dans la console
app.use(morgan('combined'))
// Parseur du body pour les requêtes
app.use(bodyParser.urlencoded({ extended: false }));
// Utilise v1 comme prefix pour l'API
app.use('/v1', router)
// Launch the server on port 3000
const server = app.listen(process.env.PORT, () => {
const { address, port } = server.address();
console.log(`Listening at http://${address}:${process.env.PORT}`)
});
我创建了一个server_node.service
在 /etc/systemd/system/ 内命名的服务,内容如下:
[Unit]
Description=Node.js Lyveat_Rider Http Server
[Service]
PIDFile=/tmp/lyveat_rider-99.pid
Restart=always
KillSignal=SIGQUIT
WorkingDirectory=/home/dev/lyveat/api
ExecStart=/home/dev/lyveat/api/server.js
[Install]
WantedBy=multi-user.target
我尝试了多种方法,首先没有标题(#!usr/bin/env 节点)我有这个错误:
在步骤 EXEC 生成 /home/dev/lyveat/api/server.js 时失败:Exec 格式错误
我放置标题后出现错误:
/usr/bin/env: 'node /** server.js */\r': 没有这样的文件或目录
我还尝试使用nodejs而不是node,并且尝试了在另一个主题上找到的这个命令:
ln -s /usr/bin/nodejs /usr/bin/node
所以我真的不知道如何让它发挥作用。
答案1
我知道这不是您为其创建服务的方法的解决方案,但这就是我为我的服务器所做的。
试试 PM2.它可以轻松运行多个nodejs服务器和应用程序并管理它们。它易于设置,可以在启动时启动服务器,还可以监视并启动服务器(如果服务器因任何原因停止)。这快速开始告诉你你需要什么。