是否有可能,如果,如何在此环境中部署节点 + 乘客应用程序(HAProxy 1.4->Apache2)

Is it possible and if, how to deploy Node + Passenger app in this environment (HAProxy 1.4->Apache2)

本文关键字:HAProxy 应用程序 Apache2 乘客 节点 如果 有可能 是否 部署 环境      更新时间:2023-09-26

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

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

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

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

HAProxy 1.4->清漆->阿帕奇2

HAProxy 1.4->Apache2.

的知识到此为止,我可以说我真的没有这方面的经验。乘客可以使用 apache 运行,教程似乎非常简单。这是否仅仅意味着所有必须做的是:

1( 在服务器上安装节点和乘客(使用 Apache 模式(

2( 配置阿帕奇

3( 运行应用程序?

它比这更复杂吗?魔法?

谢谢!

这是一个关于如何完成的很棒的教程和视频。

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

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

然后在您的服务器上安装乘客阿帕奇模块。

然后,您需要将 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

一点

一点地克服错误,直到你获胜!