首页 > 解决方案 > 如何使用 nodejs 脚本中的 pm2 在后台运行应用程序?

问题描述

我正在尝试创建一个应用程序,该应用程序允许我创建其他应用程序的演示并在子域上运行它们。现在,当我通过命令运行我的应用程序时一切正常node server.js,但是当我在后台使用 运行它时pm2 start server.js,以下脚本不起作用。当我使用 SSH 登录到我的 droplet 并运行pm2 status时,演示应用程序的启动脚本不在列表中。我应该怎么办?

const runInitialServerConfigurationNodejs = async (subdomain, port) => {
    await shellPromise(`cp /var/www/${subdomain}_app/server/.env.example /var/www/${subdomain}_app/.env`);
    await shellPromise(`cd /var/www/${subdomain}_app/server && yarn`);
    await shellPromise(`mv /var/www/${subdomain}_app/server/server.js /var/www/${subdomain}_app/server/${subdomain}.js`);
    await shellPromise(`echo "APP_ENV=production" >> /var/www/${subdomain}_app/server/.env`);
    await shellPromise(`echo "MONGODB_KEY=mongodb://localhost:27017/${subdomain}_db" >> /var/www/${subdomain}_app/server/.env`);
    await shellPromise(`echo "NODE_PORT=${port}" >> /var/www/${subdomain}_app/server/.env`);
    await shellPromise(`cd /var/www/${subdomain}_app/server && pm2 start ${subdomain}.js && pm2 save && pm2 set pm2:autodump true`); // doesnt work here

}

标签: node.jsshellpm2

解决方案


不知何故 pm2 不适用于我的实现。但是,我设法使用 forever 模块让它工作。


推荐阅读