node.js - 将 sudo 与 ExecStart (systemd) 结合使用

标签 node.js express digital-ocean production systemd

我正在尝试在端口 80 上运行一个 node.js 站点(我正在使用 Digital Ocean)。我在服务文件中使用 systemd 执行此操作

...
ExecStart=/usr/bin/nodejs /var/www/bin/app.js
...

在本地主机上,如果我使用 sudo 启动站点,这在端口 80 上工作正常,但在没有 sudo 的情况下。显然你需要以 root 身份运行低于 1024 的端口。

如何在 ExecStart 中启用 sudo?或者我在这里完全走错了路,如果是这样,我如何在端口 80 上获取 express 应用程序?

干杯,迈克

最佳答案

Systemd 默认以 root 身份启动 ExecStart= 中声明的可执行文件。

但是,如果您在服务文件中指定了 User=Group= 覆盖默认值,并且仍然需要运行需要 sudo,在命令前加上您的 sudo 位置的绝对路径:

...
ExecStart=/usr/bin/sudo /usr/bin/nodejs /var/www/bin/app.js
...

关于node.js - 将 sudo 与 ExecStart (systemd) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959877/

相关文章:

javascript - Heroku 上的 React 应用程序无法启动

javascript - AJAX 发送数据到 Node.js 服务器

node.js - Express.js 究竟如何处理错误?

node.js - 如何使用 Express.js 从在本地系统上运行的 node.js 应用程序连接到在 EC2 上运行的 redis?

node.js - 在带有 npm 的 Lambda 函数中使用 AWS Cognito

javascript - 如何在循环中顺序运行请求?

sql-server - 如何使用 SQL Server 配置 Passportjs?

digital-ocean - 生成 SSL 证书以将数据库连接到数据工作室

javascript - 如何将 backbonejs 应用程序部署到生产服务器。

amazon-web-services - 我可以在 DigitalOcean 托管的应用程序中使用 Cognito 进行用户身份验证吗?