我正在转动我的车轮... Apache正在工作并正常提供静态html,png等。试图让Passenger从www.mydomain.com/rails/
当我尝试点击我的应用时,它就是这样:www.mydomain.com/rails/myapp/railsclassname
我只得到一个Apache 403错误。 myapp的生产日志中没有任何内容。
Apache2 access.log:
"GET /rails/ HTTP/1.1" 403 1085
Apache2 error.log:
[Fri Jun 11 22:44:01 2010] [error] [client 10.0.1.41] File does not exist: /Library/WebServer/wwwroot/rails/railsclassname
我甚至尝试过www.mydomain.com/myapp/classname
显然,Passenger没有将我的子文件夹rails/
中的请求路由到我的rails应用程序。不知道我搞砸了哪里。最明显的事情是“乘客似乎没有运行”...我已经按照说明向sudo apachectl graceful
说了一遍,我做过(以及停止/启动)。新的,所以对我来说很容易!
以下是一些可能有用的信息。很高兴根据需要提供更多......
根据some instruction @ Passenger site我已经从/Library/WebServer/myapp/rails
创建了一个符号链接 - > /Library/WebServer/rails/myapp/public
myhost:myapp joe$ passenger-config --root
/Library/Ruby/Gems/1.8/gems/passenger-2.2.14
myhost:myapp joe$ passenger-status
ERROR: Phusion Passenger doesn't seem to be running.
apollo:myapp joe $ cat /etc/httpd/httpd.conf
...
<removed for brevity>
...
# Copied From Passenger Installer
LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.14
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
# End Passenger Installer
NameVirtualHost *
<VirtualHost *:80>
ServerName www.mydomain.com
DocumentRoot /Library/WebServer/rails/myapp/public # <-- be sure to point to 'public'!
RackBaseURI /rails
<Directory /Library/WebServer/rails/myapp/public>
AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off
order allow,deny
Allow from all
</Directory>
</VirtualHost>
来自NameVirtualHost的最后一点是从我发现的一些在线资料中拼凑而成的...因为我一直在拼命想找到一些东西/任何能够显示乘客至少有脉搏的东西!?!
答案 0 :(得分:2)
所以,你有
www.mydomain.com
www.mydomain.com/rails
这些都指向不同的网站(让我们称之为main和rails),每个网站的代码可能会保存在文件系统中,如下所示:
/Library/WebServer/main/
/Library/WebServer/rails/
我们从rails应用程序的公共文件夹创建一个符号链接到主应用程序中名为rails的文件夹:
ln -s /Library/WebServer/rails/public /Library/WebServer/main/rails
然后我们为主站点创建一个VirtualHost(而不是rails站点,我假设主站点不是rails)并将rails app添加为子URI,如下所示:
<VirtualHost *:80>
ServerName www.mydomain.com
DocumentRoot /Library/WebServer/main
<Directory /Library/WebServer/main>
Allow from all
</Directory>
RackBaseURI /rails
<Directory /Library/WebServer/main/rails>
Options -MultiViews
</Directory>
</VirtualHost>
(如果您已经为主网站设置了VirtualHost,则可以将RackBaseURI和之前的目录声明添加到其中)。
现在重启apache,你应该可以去:
www.mydomain.com/rails
并查看“欢迎使用Rails”页面,或:
www.mydomain.com/rails/controllername
希望有所帮助。