几天来,我一直在尝试让 Rails 应用程序在 Bluehost 上的乘客下运行,但没有运气。转到我希望它运行的子域,我只得到一个包含 cgi-bin 和公共子目录的目录列表。不执行 rails 应用程序。
httpd.conf 包括:
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.6
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby
</IfModule>
和
<VirtualHost 162.144.138.43:80>
ServerName secure.xxxxx.com
ServerAlias www.secure.xxxxx.com
DocumentRoot /home/diamoou1/public_html/securefinance
ServerAdmin webmaster@secure.xxxxx.com
UseCanonicalName Off
CustomLog /usr/local/apache/domlogs/secure.xxxxx.com combined
CustomLog /usr/local/apache/domlogs/secure.xxxxx.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
## User diamoou1 # Needed for Cpanel::ApacheConf
UserDir enabled diamoou1
<IfModule mod_suphp.c>
suPHP_UserGroup diamoou1 diamoou1
</IfModule>
<IfModule !mod_disable_suexec.c>
<IfModule !mod_ruid2.c>
SuexecUserGroup diamoou1 diamoou1
</IfModule>
</IfModule>
<IfModule mod_ruid2.c>
RUidGid diamoou1 diamoou1
</IfModule>
ScriptAlias /cgi-bin/ /home/diamoou1/public_html/securefinance/cgi-bin/
<Directory /home/diamoou1/public_html/securefinance>
Options -MultiViews
AllowOverride All
</Directory>
</VirtualHost>
在 /home/diamoou1/public_html/securefinance/public 我有 .htaccess 文件:
<IfModule mod_passenger.c>
Allow from all
Order Deny,Allow
Options +FollowSymLinks -SymLinksIfOwnerMatch -MultiViews
PassengerResolveSymlinksInDocumentRoot on
#Set this to whatever environment you'll be running in
RailsEnv production
RackBaseURI /
SetEnv GEM_HOME /home/diamoou1/ruby/gems
</IfModule>
暂时在 .htaccess 文件中放置一个坏行会在日志中产生预期的错误,因此显然 apache 正在读取 .htaccess 文件。
我怀疑问题可能出在 RackBaseURI 中。我以root身份安装了Passenger。RackBaseURI 解析为 /root 并且有一个 /root/public_html 目录,尽管 apache 正在提供 /home/diamoou1/public_html/securefinance 目录(rails 应用程序实际所在的位置)。我不知道如何更改该变量,否则这就是问题所在。PassengerBaseURI 是一样的。
我该怎么做才能解决这个问题??????