उत्पादन के लिए एक रेल आवेदन बदलें


190

मैं उत्पादन मोड में चलने के लिए अपने रेल एप्लिकेशन को कैसे बदल सकता हूं? क्या ऐसा करने के लिए एक config फाइल, environment.rb है?


2
ऐसा लगता है कि दूसरे उत्तर में बहुत अधिक वोट हैं, क्या आप इसे त्वरित समीक्षा देने के लिए तैयार हैं और दूसरे उत्तर को तब तक स्वीकार करेंगे जब तक कि आपके पास इसके बारे में कोई मुद्दा न हो। भविष्य के आगंतुकों की मदद करेंगे। Thx :)
विकसित करें

जवाबों:


73

अपाचे और फ़्यूज़न पैसेंजर का उपयोग करके उत्पादन मोड (चरण-दर-चरण) में रेल 4 एप्लिकेशन को सेटअप और चलाने के लिए कैसे:

आम तौर पर आप अपनी रेल परियोजना में प्रवेश कर सकेंगे rails s, और http://something.com:3000 पर अपने ऐप का विकास संस्करण प्राप्त कर सकेंगे । उत्पादन मोड कॉन्फ़िगर करने के लिए थोड़ा पेचीदा मामला है।

मैं थोड़ी देर के लिए इस के साथ खिलवाड़ कर रहा था, इसलिए मुझे लगा कि मैं इसे newbies (जैसे खुद के लिए) के लिए लिखूंगा। वहाँ कुछ छोटे tweaks के जो पूरे इंटरनेट में फैले हुए हैं और लगा कि यह आसान हो सकता है।

  1. सर्वर के मुख्य सेटअप के लिए इस गाइड का संदर्भ लें (CentOS 6, लेकिन यह लगभग सभी लिनक्स फ्लेवर पर लागू होना चाहिए): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-साथ-अपाचे और यात्री-ऑन-centos -6

  2. पूर्ण निश्चित करें कि पैसेंजर सेट होने के बाद आपने /etc/httpd/conf/httpd.confफ़ाइल को अपनी निर्देशिका संरचना को प्रतिबिंबित करने के लिए संपादित किया है । आप अपने रेल प्रोजेक्ट / पब्लिक फोल्डर में डॉक्यूमेंटरूट को इंगित करना चाहते हैंhttpd.confफाइल में कहीं भी इस तरह की dir है: /var/www/html/your_application/publicअपडेट करने की जरूरत है या सब कुछ बहुत निराशा होगी। मैं इस पर अधिक जोर नहीं दे सकता हूं।

  3. सर्वर को रिबूट करें (या बहुत कम से कम अपाचे - service httpd restart)

  4. अपना रेल प्रोजेक्ट फोल्डर डालें /var/www/html/your_applicationऔर माइग्रेशन शुरू करें rake db:migrate। सुनिश्चित करें कि एक डेटाबेस टेबल मौजूद है, भले ही आप बाद में टेबल जोड़ने की योजना बनाएं (यह भी चरण 1 का हिस्सा है)।

  5. RAILS_ENV=production rake secret- यह एक secret_key बनाएगा जिसे आप जोड़ सकते हैं config/secrets.yml। आप इसे कॉपी / पेस्ट कर सकते हैं। चल रहे चीजों को प्राप्त करने के लिए इसे config / mystery.yml में डाल सकते हैं , हालांकि मैं आपको ऐसा नहीं करने की सलाह दूंगा। व्यक्तिगत रूप से, मैं यह सुनिश्चित करने के लिए यह कदम उठाता हूं कि बाकी सब कुछ काम कर रहा है, फिर इसे वापस बदलें और इसे बाद में स्रोत करें।

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompileयदि आप स्थैतिक संपत्ति की सेवा कर रहे हैं। यह जेएस, सीएसएस, छवि फ़ाइलों को /publicफ़ोल्डर में धकेल देगा ।

  8. 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

मैं शायद जघन्य कुछ याद किया है, लेकिन यह मेरे लिए अतीत में काम किया है।


2
मुझे लगता है कि इस जवाब को स्टैकओवरफ्लो डॉक्यूमेंटेशन में माइग्रेट किया जाना चाहिए।
व्हिटेकैट

मुझे लगता है कि यदि आप अपाचे की तरह वितरित वेब सामग्री का उपयोग नहीं करना चाहते हैं, तो आप RAILS_SERVE_STATIC_FILES = 1 को R Colors_ENV = उत्पादन के आगे जोड़ सकते हैं, इसका मतलब है कि रेल हर फ़ाइल की सेवा करेगी, इसलिए इसके लिए अनुशंसा नहीं की जाएगी वास्तविक उत्पादन राज्य ...
3D0

351

यह अब होगा

rails server -e production

या, अधिक कॉम्पैक्ट

rails s -e production

यह रेल 3+ परियोजनाओं के लिए काम करता है।


33
या लघु संस्करणrails s -e production
पावेल निकोलोव

2
Heroku जैसी क्लाउड सेवाओं के बारे में क्या? server -e productionउन पर कैसे चला जाए?
ग्रीन

क्लाउड सेवाओं में आमतौर पर पर्यावरण को निर्दिष्ट करने के लिए विकल्प होते हैं, लेकिन उनमें productionहमेशा डिफ़ॉल्ट होता है।
जेम्स बिलिंगम जूल

2
echo "export RAILS_ENV=production" >> ~/.bash_profile
मियोकी

बहुत पसंद किया गया उत्तर, यह एक इसे StackOverflow प्रलेखन के लिए बनाना चाहिए।
dan.exe

61

यदि आप पैसेंजर पर चल रहे हैं , तो डिफ़ॉल्ट उत्पादन में चलाने के लिए है, आपके अपाचे में है:

<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 स्थिरांक को ओवरराइड करना संभवतः आपका अंतिम उपाय होना चाहिए, क्योंकि यह संभवत: सेट नहीं रहने वाला है ( एक और उत्तर जो मैंने उस पर दिया था देखें )


54

अगर 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'

Heroku जैसी क्लाउड सेवाओं के बारे में क्या? मई ENV['RAILS_ENV'] ||= 'production'उन पर भी लागू किया जा सकता है?
ग्रीन

मैंने इस फ़ाइल को लंबे समय तक संपादित किया और भूल गया .. याद दिलाने के लिए धन्यवाद .. बहुत समय बचाया
एग्नेस



18

आप पर्यावरण को स्क्रिप्ट / सर्वर पर भी भेज सकते हैं:

$ script/server -e production

12
rails s -e production

यह RAILS_ENV= के साथ सर्वर चलाएगा 'production'

इसके अलावा आपको एसेट्स का रास्ता तय करना होगा production.rb

config.serve_static_assets = true

इसके बिना आपकी संपत्ति लोड नहीं होगी।


क्षमा करें ... जब उत्थान करने का मतलब है तो मतदान किया। त्रुटि और सुधार को ठीक करने के लिए थोड़ा-सा संपादन किया गया।
टमाटर

7
RAILS_ENV=production rails s

या

rails s -e production

डिफ़ॉल्ट रूप से पर्यावरण का विकास होता है।


5

जैसा कि अन्य लोगों ने पोस्ट किया है: rails server -e production

या, मेरी निजी दावत: RAILS_ENV=production rails s


2

में रेल 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

2

यह "रैल सर्वर-प्रोडक्शन" द्वारा उत्पादन वातावरण में रेल सर्वर चलाने का एक अच्छा तरीका नहीं है, क्योंकि तब रेल एकल-थ्रेडेड अनुप्रयोग के रूप में चलती है, और एक समय में केवल एक HTTP अनुरोध का जवाब दे सकती है।

रेल के लिए उत्पादन पर्यावरण के बारे में सबसे अच्छा लेख उत्पादन वातावरण है - रेल 3


3
लिंक सड़ांध ... हालांकि
Wayback

1

डिफॉल्ट सर्वर के लिए: s -e उत्पादन को रेल करता है

कॉस्ट्यूम सर्वर पोर्ट के लिए: रेल s -p [पोर्ट] -ई उत्पादन, उदा। रेल एस-पी 3002-ई उत्पादन


1

डिफ़ॉल्ट सर्वर द्वारा विकास वातावरण पर चलता है: $ rails s

यदि आप उत्पादन वातावरण पर चल रहे हैं: $ rails s -e productionया$ RAILS_ENV=production rails s


0

कृपया सुनिश्चित करें कि आपने नीचे अपने environment.rb फ़ाइल में किया है।

ईएनवी ['आरआईएलएसईएनवी'] = = 'प्रोडक्शन'

यदि आप साझा होस्टिंग परिवेश या फ़ुशन यात्री में आवेदन करते हैं, तो आपको उत्पादन के रूप में .httaccess (सार्वजनिक फ़ोल्डर के अंदर) और सेट मोड में बदलाव करने की आवश्यकता हो सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.