我一直在使用Phusion Passenger + Rails / Sinatra进行很多项目。 乘客在主要的Nginx或Apache进程下运行。
但是我对Unicorn感兴趣,部分原因是因为它运行在用户空间。 您只需将Nginx设置为将proxy_pass请求连接到以正常用户帐户启动的Unicorn进程的unix套接字。
这两种替代方法运行Web应用程序的优点和缺点有什么要说的吗? 我的意思是在pipe理方便,稳定,简单等方面。
当你说sudo – sudo提升用户root权限,但是本质上是相同的。
那么,低编号的端口只对root用户可用,所以在许多情况下以普通用户身份运行应用程序可能需要更改一些防火墙。
在用户空间中,您可以select更好的划分(每个应用程序/堆栈用户最less使用,因此您可以将所有内容设置在一个地方并轻松在系统之间移动),甚至是chroot。 一般情况下,避免以root身份运行(很多应用程序在开始避免以root身份运行时会下降到“nobody”),因为如果以root身份运行的进程受到威胁,您可能会让攻击者获得root权限。
以普通用户身份运行通常对安全性更好,但IMO确实取决于您的应用程序。
那么,Phusion / Nginx / Unicorn都在用户空间和内核空间上运行,我想你可以说它是作为非特权用户运行的,而不是特权/ root用户 。 这有一些优点:
除此之外,我build议你在Nginx中使用Unicorn的套接字选项,这样可以简化部署过程,并且在不需要完全重启应用服务器的情况下阅读关于部署的文档
正如coredump所说,你的意思是作为一个特权用户而不是普通用户运行。 但是Phusion Passenger绝对不会作为特权用户运行 。
www-data帐户下运行。 Phusion Passenger比Unicorn更容易pipe理和安装,因为它可以为你自动执行更多的事情。 Phusion Passenger由于其看门狗架构而非常稳定。 它监视其内部的帮助程序并在其中任何一个失败时重新启动它们。 Phusion Passenger被超过15万个网站使用,其中包括Pixar,纽约时报,AirBnB,Oakley和赛门铁克等大品牌 。 即将到来的Phusion Passenger 4将增加更多稳定性和可靠性相关的function。