Www-data के रूप में php के माध्यम से रूबी स्क्रिप्ट चल रहा है


2

मैं अपाचे सर्वर पर एक php एप्लिकेशन चला रहा हूं। Php एप्लिकेशन से मुझे कमांड लाइन पर एक रूबी स्क्रिप्ट चलाने की आवश्यकता है। मैंने सत्यापित किया है कि स्क्रिप्ट को टर्मिनल से सीधे चलाना user, ठीक से काम करता है। इसके लिए स्थानीय माणिक वातावरण userसेटअप है एक पथ चर और सोर्सिंग /home/user/.rvm/scripts/rvmजो स्क्रिप्ट को requireबयानों के साथ आवश्यकताओं को लोड करने की अनुमति देता है ।

अब php एप्लीकेशन के माध्यम से स्क्रिप्ट इन स्टेटमेंट्स में विफल हो जाती है और मुझे लगता है कि यह इसलिए है क्योंकि www-dataउपयोगकर्ता के लिए कोई रूबी पर्यावरण सेटअप नहीं है । मैंने पहले कभी माणिक का उपयोग नहीं किया है और मुझे यकीन नहीं है कि उस वातावरण को स्थापित करने का सही तरीका क्या होगा

जवाबों:


0

मैं यह पता लगाने में सक्षम था। मैंने अपने प्रश्न का उत्तर एसओ पर पोस्ट किया। आशा करता हूँ की ये काम करेगा!

https://stackoverflow.com/a/40224414/1672458

मैं यह पता लगाने में सक्षम था। सबसे पहले, मैंने आरवीएम को एक बहु-उपयोगकर्ता अधिष्ठापन के रूप में स्थापित किया , यह सुनिश्चित करने के लिए कि www-dataखाता इसे एक्सेस कर सकता है।

$ curl -sSL https://get.rvm.io | sudo bash -s stable

वांछित रूबी संस्करण को स्थापित करें, मेरे मामले में 2.3.1, फिर इसका उपयोग करने के लिए आरवीएम सेट करें:

$ rvm install 2.3.1
$ rvm use 2.3.1

gemजरूरत है कि किसी भी जवाहरात स्थापित करने के लिए चलाएँ । क्योंकि आरवीएम एक बहु-उपयोगकर्ता स्थापना है, ये रत्न सिस्टम में संग्रहीत होते हैं न कि आपके विशिष्ट उपयोगकर्ता के लिए।

$ gem install packagename

मुझे नहीं पता कि यह आवश्यक है, लेकिन मैं SSH सत्र को बंद कर दूंगा और इसे फिर से खोलूंगा। आरवीएम पर्यावरण चर के साथ गड़बड़ करता है, इसलिए क्षमा से बेहतर सुरक्षित है।

envसभी पर्यावरण चर मुद्रित करने के लिए चलाएँ । printenvयह भी काम करता है अगर envकिसी कारण से नहीं होता है। आपको हर चीज की एक बड़ी सूची मिल जाएगी, आपको केवल माणिक से संबंधित लोगों की आवश्यकता है। इन मूल्यों को कॉपी / पेस्ट न करें, वे उदाहरण हैं जिन्हें मैंने अपने सिस्टम से खींचा है। तुम्हारा अलग होगा!

PATH=/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/home/steven/bin:/home/steven/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
rvm_bin_path=/usr/local/rvm/bin
GEM_HOME=/usr/local/rvm/gems/ruby-2.3.1
IRBRC=/usr/local/rvm/rubies/ruby-2.3.1/.irbrc
MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.3.1
rvm_path=/usr/local/rvm
rvm_prefix=/usr/local
rvm_ruby_string=ruby-2.3.1
GEM_PATH=/usr/local/rvm/gems/ruby-2.3.1:/usr/local/rvm/gems/ruby-2.3.1@global
RUBY_VERSION=ruby-2.3.1

अब हमें इन चरों को पहचानने के लिए PHP की आवश्यकता है। आपको अपने सिस्टम पर सही फ़ाइल ढूंढनी होगी, जो मुश्किल हो सकती है। मेरे पास यह जानने का कोई तरीका नहीं है कि कौन सा सही है, मैंने परीक्षण और त्रुटि का उपयोग किया।

अपने सिस्टम पर फ़ाइल है /etc/php/5.6/fpm/pool.d/www.conf। नीचे दिए गए प्रारूप के साथ इस फ़ाइल में पहले पकड़े गए सभी पर्यावरण चर जोड़ें । ध्यान दें कि आपको PATHयहां भी आवश्यकता है!

env[rvm_path] = /usr/local/rvm
env[rvm_prefix] = /usr/local

अब पुनः आरंभ करें php-fpm। आपका सेवा नाम खान से अलग हो सकता है; मैं ondrej / php से 5.6 बिल्ड का उपयोग कर रहा हूं ।

Ubuntu 15.04 और नया (सिस्टमड):

$ sudo systemctl restart php5.6-fpm

Ubuntu 14.10 और नया:

$ sudo service php5.6-fpm restart

अंत में, स्क्रिप्ट में ही आपको cdउस डायरेक्टरी की आवश्यकता होगी जिसे आप bundleकमांड से चला रहे हैं । मेरी लघु लिपि यह है:

cd /opt/slate
/usr/bin/git reset --hard
/usr/bin/git pull
bundle exec middleman build --clean
cp -R /opt/slate/build/* /var/www/docs

मेरे लिये कार्य करता है!

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