मैं उत्पादन मोड में चलने के लिए अपने रेल एप्लिकेशन को कैसे बदल सकता हूं? क्या ऐसा करने के लिए एक config फाइल, environment.rb है?
मैं उत्पादन मोड में चलने के लिए अपने रेल एप्लिकेशन को कैसे बदल सकता हूं? क्या ऐसा करने के लिए एक config फाइल, environment.rb है?
जवाबों:
अपाचे और फ़्यूज़न पैसेंजर का उपयोग करके उत्पादन मोड (चरण-दर-चरण) में रेल 4 एप्लिकेशन को सेटअप और चलाने के लिए कैसे:
आम तौर पर आप अपनी रेल परियोजना में प्रवेश कर सकेंगे rails s
, और http://something.com:3000 पर अपने ऐप का विकास संस्करण प्राप्त कर सकेंगे । उत्पादन मोड कॉन्फ़िगर करने के लिए थोड़ा पेचीदा मामला है।
मैं थोड़ी देर के लिए इस के साथ खिलवाड़ कर रहा था, इसलिए मुझे लगा कि मैं इसे newbies (जैसे खुद के लिए) के लिए लिखूंगा। वहाँ कुछ छोटे tweaks के जो पूरे इंटरनेट में फैले हुए हैं और लगा कि यह आसान हो सकता है।
सर्वर के मुख्य सेटअप के लिए इस गाइड का संदर्भ लें (CentOS 6, लेकिन यह लगभग सभी लिनक्स फ्लेवर पर लागू होना चाहिए): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-साथ-अपाचे और यात्री-ऑन-centos -6
पूर्ण निश्चित करें कि पैसेंजर सेट होने के बाद आपने /etc/httpd/conf/httpd.conf
फ़ाइल को अपनी निर्देशिका संरचना को प्रतिबिंबित करने के लिए संपादित किया है । आप अपने रेल प्रोजेक्ट / पब्लिक फोल्डर में डॉक्यूमेंटरूट को इंगित करना चाहते हैं । httpd.conf
फाइल में कहीं भी इस तरह की dir है: /var/www/html/your_application/public
अपडेट करने की जरूरत है या सब कुछ बहुत निराशा होगी। मैं इस पर अधिक जोर नहीं दे सकता हूं।
सर्वर को रिबूट करें (या बहुत कम से कम अपाचे - service httpd restart
)
अपना रेल प्रोजेक्ट फोल्डर डालें /var/www/html/your_application
और माइग्रेशन शुरू करें rake db:migrate
। सुनिश्चित करें कि एक डेटाबेस टेबल मौजूद है, भले ही आप बाद में टेबल जोड़ने की योजना बनाएं (यह भी चरण 1 का हिस्सा है)।
RAILS_ENV=production rake secret
- यह एक secret_key बनाएगा जिसे आप जोड़ सकते हैं config/secrets.yml
। आप इसे कॉपी / पेस्ट कर सकते हैं। चल रहे चीजों को प्राप्त करने के लिए इसे config / mystery.yml में डाल सकते हैं , हालांकि मैं आपको ऐसा नहीं करने की सलाह दूंगा। व्यक्तिगत रूप से, मैं यह सुनिश्चित करने के लिए यह कदम उठाता हूं कि बाकी सब कुछ काम कर रहा है, फिर इसे वापस बदलें और इसे बाद में स्रोत करें।
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
यदि आप स्थैतिक संपत्ति की सेवा कर रहे हैं। यह जेएस, सीएसएस, छवि फ़ाइलों को /public
फ़ोल्डर में धकेल देगा ।
RAILS_ENV=production rails s
इस बिंदु पर आपका ऐप http://something.com/whatever
इसके बजाय उपलब्ध होना चाहिए :3000
। यदि नहीं, passenger-memory-stats
और देखें कि क्या कोई प्रविष्टि है908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
मैं शायद जघन्य कुछ याद किया है, लेकिन यह मेरे लिए अतीत में काम किया है।
यह अब होगा
rails server -e production
या, अधिक कॉम्पैक्ट
rails s -e production
यह रेल 3+ परियोजनाओं के लिए काम करता है।
rails s -e production
server -e production
उन पर कैसे चला जाए?
production
हमेशा डिफ़ॉल्ट होता है।
echo "export RAILS_ENV=production" >> ~/.bash_profile
यदि आप पैसेंजर पर चल रहे हैं , तो डिफ़ॉल्ट उत्पादन में चलाने के लिए है, आपके अपाचे में है:
<VirtualHost *:80>
ServerName application_name.rails.local
DocumentRoot "/Users/rails/application_name/public"
RailsEnv production ## This is the default
</VirtualHost>
यदि आप केवल एक स्थानीय सर्वर को मोंगरेल या वेब्रिक से चला रहे हैं, तो आप कर सकते हैं:
./script/server -e production
या बैश में:
RAILS_ENV=production ./script/server
वास्तव में enviornment.rb में RAILS_ENV स्थिरांक को ओवरराइड करना संभवतः आपका अंतिम उपाय होना चाहिए, क्योंकि यह संभवत: सेट नहीं रहने वाला है ( एक और उत्तर जो मैंने उस पर दिया था देखें )
अगर mipadi का सुझाव काम नहीं करता है, तो इसे config / environment.rb में जोड़ें
# force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'
ENV['RAILS_ENV'] ||= 'production'
उन पर भी लागू किया जा सकता है?
वातावरण चर बदलें RAILS_ENV
करने के लिए production
।
~/.bashrc
या ~/.bash_profile
या बसexport RAILS_ENV=production"
$> export RAILS_ENV=production
rails s -e production
यह RAILS_ENV
= के साथ सर्वर चलाएगा 'production'
।
इसके अलावा आपको एसेट्स का रास्ता तय करना होगा production.rb
config.serve_static_assets = true
इसके बिना आपकी संपत्ति लोड नहीं होगी।
में रेल 3
Application.rb Rails.env = ActiveSupport::StringInquirer.new('production')
में जोड़ना और rails s
उसी के समान काम करेगाrails server -e production
module BlacklistAdmin
class Application < Rails::Application
config.encoding = "utf-8"
Rails.env = ActiveSupport::StringInquirer.new('production')
config.filter_parameters += [:password]
end
end
यह "रैल सर्वर-प्रोडक्शन" द्वारा उत्पादन वातावरण में रेल सर्वर चलाने का एक अच्छा तरीका नहीं है, क्योंकि तब रेल एकल-थ्रेडेड अनुप्रयोग के रूप में चलती है, और एक समय में केवल एक HTTP अनुरोध का जवाब दे सकती है।
रेल के लिए उत्पादन पर्यावरण के बारे में सबसे अच्छा लेख उत्पादन वातावरण है - रेल 3
डिफॉल्ट सर्वर के लिए: s -e उत्पादन को रेल करता है
कॉस्ट्यूम सर्वर पोर्ट के लिए: रेल s -p [पोर्ट] -ई उत्पादन, उदा। रेल एस-पी 3002-ई उत्पादन
कृपया सुनिश्चित करें कि आपने नीचे अपने environment.rb फ़ाइल में किया है।
ईएनवी ['आरआईएलएसईएनवी'] = = 'प्रोडक्शन'
यदि आप साझा होस्टिंग परिवेश या फ़ुशन यात्री में आवेदन करते हैं, तो आपको उत्पादन के रूप में .httaccess (सार्वजनिक फ़ोल्डर के अंदर) और सेट मोड में बदलाव करने की आवश्यकता हो सकती है।