使用Apache2反向代理部署Yeoman全栈应用程序?

时间:2016-03-09 12:07:55

标签: angularjs apache gruntjs yeoman angular-fullstack

我有一个Yeoman全栈应用程序@ 2.0.13,其目录结构与this tutorial完全相同。

一切正常 - grunt serve:dist等工作没有任何错误。现在,我想继续使用example.com/xxx将应用程序部署到apache服务器mod_proxy上。我将grunt build生成的/dist目录复制到主目录并启动服务器应用程序:

NODE_ENV=production node server/app.js

应用程序启动,填充用户等等。一切都很好。现在我为节点应用程序设置虚拟主机设置:

<Location /html/xxx/>
  ProxyPass http://127.0.0.1:9000/
  ProxyPassReverse http://127.0.0.1:9000/
</Location>

这种作品。奇怪的是,dist目录中的index.html 加载正确

  dist
    ├── public
    │   ├── app                 
    │   ├── assets              
    │   ├── bower_components          
    │   └─ index.html <---
    |
    └── server
        ├── api                 
        ├── auth                
        ├── components          
        ├── config              
        ├── views              
        ├─ app.js              
        └─ router.js

proxyPass有效,index.html已加载 - 但文件index.html指的是(4个汇编的public/app个文件/ vendor.js,{{1等等)不是。无论我尝试过什么,我都会得到一个app.js,无论我测试的任何指南是什么设置

enter image description here

真的花了很多时间。对我来说似乎反向代理以某种方式改变了内部网址?如果我用一个只侦听端口9000并返回hello world的节点脚本替换404,则设置有效。

我错过了什么?还有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

所以我在这个地方看了很长时间,但终于找到了这个链接:
Apache and Yeoman built NodeJS app on the Same Server... Virtual Hosts?
这让我走上正轨,所以我认为应该解决的问题是将index.hml文件的header部分中的基本标记更改为:

    <base href="/xxx/">

他们应该是可以访问的,至少对我而言。
我的vhost设置如下所示:

    <Proxy /xxx/*>
            Order deny,allow
            Allow from all
    </Proxy>

    ProxyPass /xxx http://127.0.0.1:6969/
    ProxyPassReverse /xxx http://127.0.0.1:6969/

答案 1 :(得分:0)

对于遇到此问题的其他人,我最终使用了端口80。这有效。在节点环境中,您无论如何都不需要或使用/www或apache / nginx。所以摆脱这个并使用

 // Server port
 port:     process.env.OPENSHIFT_NODEJS_PORT ||
           process.env.PORT ||
           80,

在yeoman production.js文件中。而已。可以在用户home/目录中提供整个应用程序,而无需安装任何类型的服务器http软件。只需将dist上传到服务器上的任意位置,然后使用forever即可运行:

sudo NODE_ENV=production forever start server/app.js