2010-06-12 75 views
2

我正在旋轉我的車輪... Apache正在工作和靜態HTML,PNG等正常服務。試圖讓乘客服務於一個Rails應用程序出www.mydomain.com/rails/部署與乘客到Mac OS X Leopard服務器的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

客運,很明顯,不是將請求發送到我的子文件夾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. 

阿波羅:MYAPP喬$貓的/ 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這最後一點上是由許多網上資料拼湊起來的我已經找到了......我一直在拼命地試圖找到一些/任何物品這將顯示乘客至少有一個脈搏!?!

回答

2

所以,你有

www.mydomain.com 
www.mydomain.com/rails 

這些都指向不同的網站(讓我們稱之爲他們主要和軌道),每個站點的代碼可能像這樣被保存在文件系統上:

/Library/WebServer/main/ 
/Library/WebServer/rails/ 

我們在你的主應用程序創建一個從您的Rails應用的公用文件夾一個符號鏈接到一個文件夾,名爲軌道:

ln -s /Library/WebServer/rails/public /Library/WebServer/main/rails 

然後我們主網站創建一個虛擬主機(不導軌之一,我假設的主要場所是不是軌)和應用程序添加軌作爲一個子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和之前的Directory聲明)。

現在重新啓動Apache,你應該能去:

www.mydomain.com/rails 

,看到 「歡迎使用Rails的」 頁面,或:

www.mydomain.com/rails/controllername 

希望有所幫助。

+0

謝謝!很有幫助。現在它正在工作。有點。 'www.mydomain.com/rails'工作,但'www.mydomain.com/rails /'不!另外'www.mydomain.com/rails/controller/new'和'www.mydomain.com/rails/controller'都可以工作但是'www.mydomain.com/rails/controller/1'和'www.mydomain.com/ rails/controller/show/1'不??? – Meltemi 2010-06-19 00:04:40

+0

這是因爲/ rails /由Apache的目錄處理程序處理。你可以通過在Apache中禁用mod_autoindex來解決這個問題。 RailsAllowModRewrite應該在默認情況下關閉,這將消除這個問題,但是一些配置會被覆蓋。 – Delameko 2010-06-21 12:48:45

+0

訪問controller/1時會出現什麼錯誤? – Delameko 2010-06-21 12:49:12