我已经设置了一个 apache 网络服务器,它可以运行 PHP。
它没有设置静态虚拟主机,并且动态路由所有请求。
请求http://example.com/将从文档根目录/var/www/example.com
(VirtualDocumentRoot)提供服务,并且请求http://example.com/~user/将从文档根目录/home/user/public_html
(mod_userdir) 提供服务。后者无论在哪个域中都可以工作。
我希望能够使用 Phusion Passenger 从文档根目录或子目录为 Ruby on Rails 应用程序提供服务。但是,它要求我向指令中添加几行<VirtualHost>
,而这显然不存在。
我更喜欢不需要 root 权限即可部署应用程序的解决方案,但这并不重要。如果我的部署同样简单,我也不介意不使用 Passenger 的解决方案。
答案1
简单的解决方案是在 mod_perl 中编写一个位置模块,该模块会根据每个请求动态更新虚拟主机环境(而不是容器)。这就是我们在客户端通过 ftp 登录之前未设置的站点处理 404 错误的方法。
答案2
不幸的是,这似乎是不可能的。Passenger 与 userdirs 完全不兼容,而使用 VirtualDocumentRoot 则需要单独的 VirtualHost。