有些人可能认为这是一个愚蠢的问题,但我是前端人员,我有很多想法。
我已经为客户开发了一个 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/