我已经在 Linux 机器上为 Apache 安装了 mod_passenger。模块已正确编译,Apache 似乎正在正确加载它(这方面没有错误)。
但是当我设置一个 vhost 指向 Rails 应用程序(Redmine 项目管理)时,我收到一个页面,提示“无法启动 Ruby on Rails 应用程序”。具体来说,“错误消息:没有这样的文件或目录 - config/environment.rb”。
我可以看到 Redmine 根文件夹中确实有一个 config/environment.rb。我的 vhost 配置如下:
<VirtualHost *:80>
# server DocumentRoot, address, and admin email
RailsBaseURI /redmine
DocumentRoot /srv/www/htdocs
</VirtualHost>
我已经在 /srv/www/htdocs/redmine 获得了 Redmine 源代码(没有符号链接或任何东西,因为它对此感到抱怨)。
由于什么都没有起作用,我一怒之下以递归方式将 /redmine 文件夹的文件所有权和模式设置为 wwwrun:www(我的 Apache 用户和组)和 777。您认为这是问题所在吗?
非常感谢任何想法或建议。
附言:有没有用 PHP 重写 Redmine 的项目?哈哈!
答案1
我遇到了同样的错误,并且这个http://randomthoughtsgr.wordpress.com/2011/10/17/redmine-sub-uri-and-apache-configuration/帮我解决了!
在尝试在子 uri 中设置 Redmine 时,我遇到了一个问题,即尝试设置 apache。Passenger 将显示以下错误: 没有这样的文件或目录 – config/environment.rb尝试访问Redmine网页时。
在尝试了一些关于该问题的建议后,我设法让Redmine使用以下配置工作:
Passenger.load 配置文件如下(路径可能因安装不同而有所不同):
LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/apache2/mod_passenger.so PassengerRoot /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.9 PassengerRuby /opt/ruby-enterprise-1.8.7-2011.03/bin/ruby PassengerDefaultUser www-data
在虚拟主机配置中我添加了以下内容:
PassengerAppRoot /usr/local/lib/redmine-1.2/ RailsBaseURI /redmine RailsEnv production
乘客应用根目录代表redmine的安装路径。
RailsBasedURI表示 URL 中代表 Redmine 的子目录,例如。http://www.example.org/redmine(要使此功能正常工作,还需要有 redmine 的符号链接-。/public 位于 Web 根文件夹内)。
我也改变了redmine-1.2文件夹和符号链接 redmine 文件夹到 apache 用户/组(我认为这是必要的)。
答案2
乘客子URI部署的部署模式比较具体。
你有创建符号链接。这些必须指向public
目录(而不是RAILS_ROOT
)。Passenger 使用此符号链接中的信息来查找应用程序的其余部分。这是为了确保您永远不会在文档根目录中安装 Rails 应用程序(您永远不应该这样做,以避免您的代码和配置被任何人公开看到。)
在你的情况下,这意味着将 Redmine 安装到类似的地方/srv/www/redmine
。然后创建一个符号链接
ln -s /srv/www/redmine/public /srv/www/htdocs/redmine
有了这些,您就可以保持虚拟主机原样,假设您的 Web 服务器用户有权读取其中的所有文件/srv/www/redmine/public
。最后一条提示:检查文件的所有者config/environment.rb
。它的所有者将是运行 redmine 的用户(只要它不是 root 用户)。
欲了解更多信息,请查看优秀的乘客文件。