6

मेरे पास एडब्ल्यूएस पर एक आरओआर आवेदन है। मेरा ऐप खोज इंजन के लिए सोलर का उपयोग कर रहा है, लेकिन प्रत्येक परिनियोजन के बाद, ऐप फिर से इंडेक्स करने में असमर्थ है।लोचदार बीनस्टॉक परिनियोजन के बाद सोलर का स्वचालित पुनरारंभ

chmod 777 -R /solr /tmp /log 
RAILS_ENV=production rake sunspot:solr:stop # or I kill the processus if it doesn't work :D 
RAILS_ENV=production rake sunspot:solr:start 
RAILS_ENV=production rake sunspot:reindex 

अब मैं एक ईबी विस्तार तैनाती को स्वचालित करने के रूप में यह सेटअप करने के लिए कोशिश कर रहा हूँ: तो मैं अनुमतियों को रीसेट और साथ मैन्युअल Solr पुनः आरंभ करना।

#!/bin/bash 
chmod 777 -R solr/ log/ tmp/ 
RAILS_ENV=production rake sunspot:solr:restart 

परिणाम तैनाती करता नहीं है:

container_commands: 
    1_change_permissions: 
    command: chmod 700 .ebextensions/setup.sh 
    2_restart_solr: 
    command: bash .ebextensions/setup.sh 

और यहाँ setup.sh स्क्रिप्ट है: यहाँ क्या मैं अपने .ebextensions/deploy.config में करने की कोशिश की है असफल हो, लेकिन केवल अनुमतियां सही ढंग से बदल दी गई हैं, और सोलर सेवा चल रही है लेकिन जब मैं कुछ इंडेक्स करने का प्रयास करता हूं, तो यह विफल हो जाता है (पूछताछ ठीक काम करती है)।

मैं भी सर्वर को रोकने के लिए पहले इस ऐप्लिकेशन का मेरी .ebextensions में एक आदेशों ब्लॉक जोड़कर तैनात किया जाता है की कोशिश की/deploy.config (और मैं अपने श स्क्रिप्ट बदल पुनः आरंभ करने के बजाय सेवा शुरू करने के लिए):

commands: 
    1_stop_solr: 
    command: cd /var/app/current & RAILS_ENV=production rake sunspot:solr:stop 

मैं यह त्रुटि (मैं जहां यह क्रियान्वित किया जाता है से पता नहीं है) मिल गया:

[2015-06-25T09: 51: 35.510Z] जानकारी [13207] - [सीएमडी-AppDeploy/AppDeployStage0/EbExtensionPreBuild/इंफ्रा-EmbeddedPreBuild/prebuild_0_My_First_Elastic_Beanstalk_Application/कॉम और 1_stop_solr]: गतिविधि निष्पादन विफल रहा, क्योंकि: रेक निरस्त हो गया! घर के माहौल नहीं पा सके - के विस्तार `~ '

संपादित करें 1 (जय की टिप्पणी के बाद): सूचीकरण प्रक्रिया से किया जाता है जब मैं वस्तुओं को बचाने के।

यहाँ एक इकाई के लिए एक उदाहरण है (और जहां यह विफल रहता है):

class Document < ActiveRecord::Base 

    # ..... 

    # SolR entity 
    searchable do 
    text :title, :description, :tags 
    integer :user_id 
    end 

    # ..... 

end 

** संपादित करें 2: **

जेम्स 'जवाब है, समस्या हल नहीं होती लेकिन मुझे पता है कि मेरे EC2 उदाहरण पर मैन्युअल रूप से, मैं सिर्फ 2 निम्नलिखित लाइनों चला सकते हैं:

chmod 777 -R solr/ tmp/ log/ 
RAILS_ENV=production rake sunspot:reindex" 

मैं एक के बाद तैनाती स्क्रिप्ट बनाने के लिए जेम्स 'लिंक का उपयोग करने की कोशिश की, और chmod अच्छी तरह काम करता है, लेकिन मैं जब जोड़ने फ़ाइल में अनुक्रमणः आदेश, तैनाती इस त्रुटि के साथ विफल: इसके अलावा

[2015-07-07T16:26:25.509Z] INFO [20402] - [CMD-AppDeploy/AppDeployStage1/AppDeployPostHook/99_restart_delayed_job.sh] : Activity execution failed, because: rake aborted! 
Could not find rake-10.4.2 in any of the sources 
/var/app/current/config/boot.rb:3:in `<top (required)>' 
/var/app/current/config/application.rb:1:in `<top (required)>' 
/var/app/current/Rakefile:4:in `<top (required)>' 

, अगर मैं आदेश मैन्युअल रूप से (के बाद तैनाती स्क्रिप्ट chmod के बाद) चलाने का प्रयास है, यह करने के लिए प्रत्येक आइटम पर 500 त्रुटियों के साथ विफल रहता है पुन: अनुक्रमणिका। तो मुझे सोलर सर्वर को मारने, फिर शुरू करने और फिर रीइंडेक्स की आवश्यकता है।

यह वास्तव में दर्दनाक है :)

+0

आप दस्तावेज़ों को कैसे का अनुक्रमण कर रहे हैं? एक स्क्रिप्ट का उपयोग करना? Solr की post.jar फ़ाइल का उपयोग करना? मेरा अनुमान है कि जिस प्रक्रिया में इंडेक्स में सोलर के इंडेक्स फ़ोल्डर पर लिखने की अनुमति नहीं है। यह समझा सकता है कि आप क्यों पूछ सकते हैं (केवल अनुमति की आवश्यकता है) लेकिन इंडेक्स नहीं कर सकता। – jay

+0

मैंने अपनी पोस्ट इंडेक्सेशन के उदाहरण के साथ अपडेट की। मदद के लिये शुक्रिया! –

उत्तर

1

मैं बीनस्टॉक के बारे में कुछ भी नहीं पता है, लेकिन यह खोल कि अपने आदेशों को क्रियान्वित कर रहा है वातावरण चर आप उम्मीद कर रहे हैं नहीं है जैसा दिखता है।मान लिया जाये कि post-deployment scripts पर इस ब्लॉग पोस्ट सही है, तो आप कुछ इस तरह करने के लिए अपने setup.sh स्क्रिप्ट बदलने के लिए सक्षम होना चाहिए:

#!/usr/bin/env bash 
. /opt/elasticbeanstalk/support/envvars 
cd $EB_CONFIG_APP_CURRENT 
su -c "RAILS_ENV=production /usr/local/bin/rvm 2.2 do rake sunspot:solr:restart" $EB_CONFIG_APP_USER 
+0

आपके उत्तर के लिए जेम्स धन्यवाद, लेकिन यह मेरी समस्या को ठीक नहीं करता है। मैं अपने मुख्य पोस्ट पर एक EDIT2 हिस्सा जोड़ा समझाने के लिए कि मैं क्या करने की कोशिश की –

+0

निश्चित रूप से एक वातावरण मुद्दा। ऐसा लगता है कि ईबी आरवीएम का उपयोग कर रहा है? अद्यतन स्क्रिप्ट का प्रयास करें। सही RVM पथ और रूबी संस्करण प्राप्त करने के लिए आपको इसके साथ खेलना पड़ सकता है। –

+0

मैं सर्वर पर आरवीएम का उपयोग नहीं करता हूं। आम तौर पर कमांड को बंडलर के माध्यम से निष्पादित किया जाता है लेकिन यह या तो काम नहीं करता है। जब मैं एक नज़र गहरी ले, मैं नहीं देख सकता EB_ के किसी भी निर्यात */opt/elasticbeanstalk/support/envvars फ़ाइल में वार्स। इसमें होना चाहिए, है ना? क्या मुझे मैन्युअल रूप से सेट करने की ज़रूरत है? Cuz जब मैं चर को मुद्रित करने का प्रयास करता हूं, तो यह कुछ भी वापस नहीं करता है। –

0

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं के लिए एक ebextensions स्क्रिप्ट काम करने के लिए लगता है कि लिखा है अच्छी तरह से ये मामला। उम्मीद है कि अगर लोग अभी भी इस मुद्दे का सामना कर रहे हैं तो इससे मदद मिलेगी।

commands: 
    000_sudo: 
     command: sudo su 
    001_cd_to_app: 
     command: cd /var/app/current 
    002_rm_solr: 
     command: rm -rf solr/ 
    003_start_solr: 
     command: bundle exec rails sunspot:solr:start RAILS_ENV=production 
    004_reindex_solr: 
     command: bundle exec rails sunspot:solr:reindex RAILS_ENV=production 
संबंधित मुद्दे