[英]Deploy Yeoman full-stack app with Apache2 Reverse Proxy?
我有一个Yeoman全栈应用程序@ 2.0.13,具有与本教程完全相同的目录结构。
一切正常grunt serve:dist
等可以正常工作。 现在,我想进入生产阶段,并使用mod_proxy
将应用程序作为example.com/xxx
部署在apache服务器上。 我将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
, app.js
等)不是。 无论我尝试了什么,无论我测试过的任何指南中的设置如何,我都得到404
确实花了很多时间在此上。 在我看来,反向代理会以某种方式更改内部网址? 如果我将dist/
替换为仅侦听端口9000并返回hello world的节点脚本,则该设置有效。
我想念什么? 还有另一种方法吗?
所以我也在整个地方看了很长时间,但终于找到了这个链接:
Apache和Yeoman在同一服务器上构建了NodeJS应用...虚拟主机?
这使我走上了正确的道路,所以我认为应该解决的问题是将index.hml文件的标头部分中的基本标记更改为:
<base href="/xxx/">
而且它们应该是可访问的,至少对我而言。
我的虚拟主机设置如下所示:
<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/
对于其他有此问题的人,我最终使用了端口80
。 这可行。 在节点环境中,无论如何都不需要或使用/www
或apache / nginx。 所以摆脱它并使用
// Server port
port: process.env.OPENSHIFT_NODEJS_PORT ||
process.env.PORT ||
80,
在yeoman production.js
文件中。 而已。 可以从用户home/
目录home/
目录中提供整个应用程序,而无需安装任何类型的服务器http软件。 只需将dist
上传到服务器上的任何位置,然后永久使用即可:
sudo NODE_ENV=production forever start server/app.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.