Apache

5

के तहत उपनिर्देशिका में उत्पादन के लिए एक रेल 4 एप को कॉन्फ़िगर करना मेरे साथ तीन प्रमुख समस्याएं हैं जिनसे मैं संघर्ष कर रहा हूं, मैं उनमें से किसी के लिए किसी भी मदद की सराहना करता हूं।Apache

1) मैं रूट्स ऐप को myurl.com/myapp/ रूट के रूप में कैसे कॉन्फ़िगर कर सकता हूं?

मैं routes.rb में करने की कोशिश की:

scope '/myapp' || '/' do 
    # all resources and routes go here 
    root :to => "papers#index" 

    resources :papers 
end 

और environment.rb में, मैं शीर्ष

ENV['RAILS_RELATIVE_URL_ROOT'] = "/myapp" 

यह लगभग काम करता है को यह कहा, कि rake routes को छोड़कर के लिए किसी भी मार्ग प्रिंट नहीं करता "/ ", और GET myurl.com/myapp/ActionController::RoutingError (No route matches [GET] "/")

2) अपाचे को बताने की क्या ज़रूरत है?

अपने साझा किए गए सर्वर प्रदाता /fcgi-bin/rails4 जा रहा है

#!/bin/sh 

# This is needed to find gems installed with --user-install 
export HOME=/home/kadrian 

# Include our profile to include the right RUBY 
. $HOME/.bash_profile 

# This makes Rails/Rack think we're running under FastCGI. WTF?! 
# See ~/.gem/ruby/1.9.1/gems/rack-1.2.1/lib/rack/handler.rb 
export PHP_FCGI_CHILDREN=1 

# Get into the project directory and start the Rails server 
cd $HOME/rails4 
exec bundle exec rails server -e production 

जब मैं साइट पर किसी भी लिंक पर क्लिक करें के साथ ~/html/.htaccess

RewriteEngine on 
RewriteRule ^myapp/(.*)$ /fcgi-bin/rails4/$1 [QSA,L] 

को यह डाल करने के लिए सुझाव देते हैं, ब्राउज़र यूआरएल जैसे बदलता है myurl.com/fcgi-bin/rails4/papers/1 पर, जहां यह myurl.com/myapp/papers/1 होना चाहिए। मैं इसे कैसे रोक सकता हूं?

3) कैसे संपत्ति प्राप्त करने के लिए काम कर रहे

मुझे लगता है कि यह किसी भी तरह 1 के साथ एक साथ हल किया जाएगा) और 2)। हालांकि, अभी, एप्लिकेशन करने की कोशिश करता:

GET myurl.com/assets/application-5e86fb668d97d38d6994ac8e9c45d45e.css 

जो एक 404 Not Found procudes। संपत्ति उपनिर्देशिका के तहत भी होनी चाहिए, है ना? रेलवे को वहां रखने/खोजने के लिए मैं कैसे कहूं?

उत्तर

3

कुछ प्रश्न हैं जो मैं आपके प्रश्न का प्रयास करने और उत्तर देने के लिए करने जा रहा हूं।

  1. मैं यह सोचते हैं रहा हूँ वहाँ एक स्थिर साइट myurl.com में परोसा है और है कि आप केवल चाहते रेल एप्लिकेशन मैं अपने साझा होस्टिंग प्रदाता एक तरीके के रूप FastCGI पसंद संभालने हूँ myurl.com/myapp

  2. पर पेश किए जाएं, रैक क्षुधा (रेल)

उन मान्यताओं के आधार पर सेवा करने के लिए, मुझे विश्वास है कि यदि आप:

  1. ~/html/myapp फ़ोल्डर के अंतर्गत अपने रेल एप्लिकेशन ले जाएँ
  2. सामग्री के साथ ~/html/myapp/public करने के लिए एक .htaccess फ़ाइल जोड़ें:
 

    AddHandler fastcgi-script .fcgi 

    Options +FollowSymLinks +ExecCGI 

    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L] 

    ErrorDocument 500 "Rails application failed to start properly" 

  1. सामग्री के साथ ~/html/myapp/public करने के लिए एक dispatch.fcgi फ़ाइल जोड़ें:
 

    ENV['RAILS_ENV'] ||= 'production' 
    ENV['GEM_HOME'] = File.expand_path('your_gem_home') 

    require 'fcgi' 
    require File.join(File.dirname(__FILE__), '../config/environment.rb') 

  1. chmod +x ~/html/myapp/public/dispatch.fcgi

एप्लिकेशन ठीक और मार्ग ठीक शुरू कर देना चाहिए ...

मैं तुम्हें config.action_controller.relative_url_root स्थापना के बारे में चिंता करने की जरूरत नहीं लगता।

मैं आपके ऐप को तैनात करने से पहले bundle install --deployment का उपयोग करके अपने रत्न भी इंस्टॉल करूंगा। root :to => 'controller#action' अपने config/routes.rb

आशा में इस मदद करता है और यदि नहीं, तो बाहर की जाँच:

Dreamhost - Rails 3 and FastCGI और FastCGI setup जिसमें शामिल

अंत में, कारण है कि आप एक रूट मार्ग नहीं मिल रहे हैं क्योंकि वहाँ नहीं है ENV['RAILS_RELATIVE_URL_ROOT']

का उपयोग करने के बारे में कुछ संकेत