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

标签 javascript node.js apache passenger

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

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

我一直在本地运行我的应用程序,并在为托管在那里的 Node 应用程序提供 Passenger 构建的主机上运行。我相信在客户服务器上部署 Passenger 是个好主意。

我确定客户服务器正在运行:

HAProxy 1.4->Varnish->Apache2

HAProxy 1.4->Apache2。

我的知识就到此为止,我可以说我真的没有这方面的经验。 Passenger 可以使用 apache 运行,并且教程看起来非常简单。这是否仅仅意味着所要做的就是:

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

2)配置Apache

3) 运行应用程序?

还有比这更复杂的吗?魔法?

谢谢!

最佳答案

这是一个great tutorial and video关于它是如何完成的。

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

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>

请注意,乘客可能不知道正确的可执行文件在哪里(例如 Node )。默认情况下,它将在用户 PATH 中查找,但如果需要,您可以在 Apache 配置文件中进行配置,如下所示。如果您不知道 Node 安装在哪里,请尝试运行which node

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

如果您的 Node 应用程序使用 NODE_ENV 环境变量,您应该注意,乘客默认设置 NODE_ENV=product。但是,您可以将其更改为您想要的任何内容,如下所示:

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

但是,正如往常一样,第一次它不会完美地工作。当事情不起作用时,跟踪乘客日志文件,然后用谷歌搜索这些错误。它通常位于 /var/log/apache2/error_log 中。您可以通过运行 passenger-config --detect-apache2 找出错误日志的确切位置。

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

一点一点地克服错误,直到取得胜利!

关于javascript - 是否可能,如果,如何在此环境中部署 Node + Passenger 应用程序(HAProxy 1.4->Apache2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547776/

相关文章:

javascript - 如何使用 React useEffect 仅调用一次加载函数

javascript - Ajax - 插入图像

android - 尝试在 Ubuntu 13.04 上运行 Phonegap

javascript - 如何从 Node.js 连接到 nethack?

apache - 将 http 和 https 请求重定向到新主机

javascript - android 和 javascript 之间的接口(interface)?

javascript - 开 Jest 模拟 aws-sdk ReferenceError : Cannot access before initialization

node.js - 带有 TypeScript : Declaration expected compiler error after @component 的 Angular2

apache - .htaccess 重写/foo/bar/to/foo/bar.php

apache - 清除apache服务器内存缓存