部署 Passenger With Apache2 VirtualDocumentRoot

hxplove01 · 2013年12月19日 · 最后由 hxplove01 回复于 2013年12月23日 · 2791 次阅读

内部部署应用很麻烦,打算做一个 generator 生成当前 application 的 apache 配置文件,扔到 apache 配置目录中去,就可以直接访问了。 然后了解 apache 后发现了 VirtualDocumentRoot 这个配置,它的作用是配置通配 virtualhost,比如配置 a.test.com,b.test.com,只需要配置

ServerAlias *.test.com
VirtualDocumentRoot /var/www/%1

就完成了,访问各自的目录 然后...然后发现跟 passenger 不能一起用,访问后直接就是配置的目录的文件列表, 最后发现 passenger 的官方文档说:

VirtualDocumentRoot is not compatible with Phusion Passenger at the moment

请问各位小伙伴们有何解决方案


在追加一点东西吧,我的目的是这样的:我们正在做一个网站的 gem, clone 下来 gem 之后,我只需要执行 thor task,它就会帮我 generator 一个新的 ROR 项目,然后会自动替换里面所有的需要配置的文件,然后会把文件放到正确的位置,然后会生成一个 apache virtualHost 配置文件,并放到 apache 目录中去,然后会重启 apache,然后,你就可以直接访问这个网站了。 而对于一个普通的不会 code 的用户来说,它只需要执行一个 task,这个网站就 ok 了

为何不用 Capistrano 部署?

#1 楼 @kgen 我说的是 apache 的 documentRoot,跟使用哪个 Gem 部署没有关系,我是用的 Capistrano,可是我有十个项目,我还是得 10 个 virtualHost

#2 楼 @hxplove01 现在你修改主贴说明意图后,问得清晰多了。

抛弃 ubuntu12.04 了,ubuntu13.10 中 apache2 默认版本为 2.4, passenger 编译通过没问题,vhost_alias 没问题,一个配置搞定所有项目的配置文件。 ps:低版本的 ubuntu 上从一些 ppa 源安装的 apache2.4,会因为 ubuntu 上的一些 apache 依赖冲突而没有办法通过 passenger 编译,安装、卸载不了依赖的包,在 13.04 中问题依然存在,13.10 中问题解决

需要 登录 后方可回复, 如果你还没有账号请 注册新账号