是否有可能以及如何在此环境中部署Node + Passenger应用程序(HAProxy 1.4-> Apache2)

时间:2014-12-18 13:31:39

标签: javascript node.js apache passenger

有些人可能认为这是一个愚蠢的问题,但我是前端人,我有很多想法。

我为客户开发了一个Node应用程序,它已经准备好放在生产服务器上了。服务器是一台专用机器,据我所知,目前运行的是高流量的Wordpress博客和论坛(也是PHP + MySQL)。

我一直在本地和托管上运行我的应用程序,该托管在那里托管的Passenger for Node应用程序中提供了构建。我认为在客户服务器上部署Passenger是一个好主意。

我已确定客户服务器运行:

HAProxy 1.4-> Varnish-> Apache2

HAProxy 1.4-> Apache2。

我的知识在这里结束,我可以说我对这些东西真的没有经验。乘客可以使用apache运行,教程似乎非常简单。它只是意味着所有必须做的就是:

1)在服务器上安装Node和Passenger(使用Apache模式)

2)配置Apache

3)运行应用程序?

这比那复杂吗?魔法?

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是关于如何完成的great tutorial and video

总而言之,他们建议您的节点应用具有以下结构:

application directory
  |
  +-- app.js
  |
  +-- public/
  |
  +-- tmp/

然后在您的服务器上install the Passenger Apache Module

然后你需要配置apache看起来像这样(假设你的应用程序安装在/var/www/my_awesome_app

<VirtualHost *:80>
    ServerName www.foo.com
    DocumentRoot /var/www/my_awesome_app/public
</VirtualHost>

请注意,乘客可能不知道正确的可执行文件的位置(如节点)。默认情况下,它将查看用户PATH,但如果需要,您可以在Apache配置文件中配置它,如此。如果您不知道节点的安装位置,请尝试运行which node

<VirtualHost *:80>
    ...
    PassengerNodejs /usr/sbin/node
    ...
</VirtualHost>   

如果您的节点应用使用的是NODE_ENV环境变量,则应注意乘客默认设置NODE_ENV=production。但是,您可以将其更改为您想要的任何内容:

<VirtualHost *:80>
    ...
    PassengerAppEnv staging
    ...
</VirtualHost>  

然而,按照通常情况,它不会在第一次完美运作。如果事情不起作用,请拖尾乘客日志文件,然后谷歌那些错误。这通常位于/var/log/apache2/error_log。您可以通过运行passenger-config --detect-apache2找到错误日志的确切位置。

要实时拖动日志,请尝试tail -f /var/log/apache2/error_log

在你获胜之前,一点一点地完成错误!