在Production中以最小权限运行sails.js.

时间:2014-11-17 10:41:54

标签: javascript node.js ubuntu gruntjs sails.js

我在Ubuntu Trusty上的节点0.10.33上使用Sails.js 0.10.5。我希望以生产环境中具有最少权限的非root用户身份执行节点进程。我很满意绑定到1024以下端口的各种选项,但我更关心目录权限。

理想情况下,我更喜欢节点进程只对其日志文件具有写访问权,而不是其他任何内容。它应该只对包含app.js及以下的目录具有读访问权。

目前我需要授予./.tmp目录以及./views目录的写访问权限,因为启动时运行的grunt任务。我宁愿在部署时以不同的用户而不是在运行时执行繁琐的任务。 sails www命令似乎很有希望,但我无法获得理想的结果。

有人可以指出我正确的方向运行Sails.js,对其资产,视图等没有写入权限吗?

3 个答案:

答案 0 :(得分:4)

使用sails www构建静态资产

chmod -R 440所有文件和目录,以便您的用户和网络服务器(组)可以访问这些文件。

使用nginx / apache在端口80/443上托管Web服务器并代理对sails的请求(在自己的端口或unix套接字上运行)。

使用PM2运行风帆以使其保持运行并让它管理/收集日志。

Sails将解除,但无法编写其.tmp目录,因为所有静态文件都将通过nginx / apache路由到www目录,所以甚至不需要这样做。

答案 1 :(得分:2)

对我来说,最简单的解决方案似乎是将需要提升权限的grunt任务分离到一个单独的文件中,您可以在部署时与其他用户一起调用。然后帆不需要运行任何东西,只能读取。

答案 2 :(得分:1)

编辑:我使用带有apache的PM2作为代理(使用mod WS)。

您可以使用一个代理(如apache)从端口80路由到基于主机的其他内部服务器端口。

通过这种方式,您可以在同一台服务器上运行多个应用程序。

它有很多有用的功能,比如查看日志如何在终端中使用varius应用程序,重启和登录崩溃的应用程序,以用户身份运行应用程序,应用程序状态等等。

Pm2链接:https://github.com/Unitech/pm2

PM2配置:https://github.com/Unitech/PM2/blob/development/ADVANCED_README.md#options