इस पोस्ट में, मैंने अमेज़ॅन पर एक रेल सर्वर को तैनात करने के अनुभव को साझा करने का निर्णय लिया। मैंने सभी पिछली रेल परियोजनाओं को तैयार सर्वर पर रखा। ये निजी सर्वर थे, या प्रसिद्ध हर्को सेवा। और सर्वर पर मुझे भेजा गया एकमात्र कमांड कैप परिनियोजित और कैप परिनियोजित था: ठंडा। लेकिन अंतिम परियोजना में, ग्राहक अपनी अमेजोनियन छवि पर साइट रखना चाहता था, इसलिए उसे विषय पर अधिक गहराई से गोता लगाना पड़ा।
मुख्य कार्य
साइट को nginx http सर्वर पर काम करना चाहिए, समूह विकास के लिए git का उपयोग किया गया था, साथ ही साथ लचीली रूबी कॉन्फ़िगरेशन के लिए rvm और साइट की जरूरतों के लिए मणि का एक सेट, जबकि किसी अन्य परियोजना की मेजबानी करने की क्षमता को बनाए रखते थे। और यह सब कैपिस्ट्रानो के माध्यम से प्रकाशित होना था।
पहला चरण
पहले चरण में, लिनक्स संस्करण पर निर्णय लेना आवश्यक था। निम्नलिखित वितरण उपलब्ध थे: Oneiric Ocelot और bitnami amazon machine image। पहला पर्याप्त पनीर था, चलो दूसरे के बारे में अधिक विस्तार से बात करते हैं। Bitnami एक ऑपरेटिंग सिस्टम है, जो ubuntu 10.04, >> in / etc / init.d / nginx पर आधारित है
chmod + x /etc/init.d/nginx
अद्यतन- rc.d nginx चूक
मैंने कुछ अतिरिक्त पैकेज जोड़े, जिनसे जीवन आसान हो जाए। लेकिन, हमेशा की तरह, यह हमारा मामला नहीं था। स्थापित "सुधार" में से एक अपाचे था। पहली चीज जो हमें चाहिए वह है इस सर्वर को बंद करना और इनिशियलाइज़र को हटाना। ऐसा करने के लिए, रूट के रूप में लॉग इन करें और निम्न कमांड निष्पादित करें:
/etc/init.d/bitnami stopउदाहरण के लिए, डेमन को भी ले जाएँ, उदाहरण के लिए, बैक_अप केवल मामले में।
अगला, आवश्यक लाइब्रेरी स्थापित करें
apt-get install build-essential bison openssl libreadline5 libreadline-dev
curl git-core zlib1g zlib1g-dev libssl-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconfहम वैश्विक आरवीएम स्थापित करने के बाद। ऐसा करने के लिए, टर्मिनल में लिखें:
bash < <(curl -L raw.github.com/wayneeseguin/rvm/1.3.0/contrib/install-system-wide)फ़ाइलें /root/.bashrc और /etc/skel/.bashrc ठीक करें। लाइन [-z "$ PS1"] && वापसी को प्रतिस्थापित किया जाता है:
if [[ -n "$PS1" ]]; then
##
fi
हम फ़ाइल को सहेजते हैं और रिबूट करते हैं। आरवीएम बूट सेटिंग्स के अलावा, माणिक और रत्न के किसी भी संस्करण के लिए आवश्यक कई रत्न निर्दिष्ट करना अच्छा है। ये मुख्य रूप से बंडल, कैपिस्ट्रानो, यात्री और रेक हैं। तो निम्नलिखित को /usr/local/rvm/gemsets/global.gems में जोड़ें
bundler -v~>1.0.18
rake –v~>0.9.2
capistrano –v ~>2.9.0
passenger –v ~>3.0.9इसके बाद, जल्दी से काम करने के लिए रेल के लिए रूबी ईई स्थापित करें:
rvm install reeइसे डिफ़ॉल्ट रूबी दुभाषिया के रूप में सेट करें:
rvm use ree --defaultसाइट के लिए एक अतिरिक्त रत्न बनाने के बाद:
rvm gemset create foo_siteचूँकि ssh के माध्यम से उपयोग करने वाला उपयोगकर्ता बनाना संभव नहीं था, इसलिए मुझे साइट, लॉग और अन्य चीजों के संस्करणों को संग्रहीत करने के लिए बिटनामी के लिए एक $ HOME निर्देशिका बनानी पड़ी।
mkdir foo_siteअब nginx और यात्री स्थापित करना अच्छा होगा
gem install passenger
rvmsudo passenger-install-nginx-moduleयदि आपको यह कहते हुए एक त्रुटि मिलती है कि rvmsudo नहीं मिला था, तो आप / usr / स्थानीय / rvm / bin फ़ोल्डर में देख सकते हैं या इसे निरंतर उपयोग के लिए $ PATH चर में जोड़ सकते हैं।
इंस्टॉलर से सरल सवालों के जवाब देने के बाद, आपको एक काम करने वाला नेग्नेक्स मिलेगा जिसे आपको कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए, कॉन्फ़िगरेशन फ़ाइल को /opt/nginx/conf/nginx.conf पर खोलें, जहाँ हम पैसेंजर_रुबी के मूल्य को / usr / स्थानीय / बिन / यात्री_ब्रुबी में बदलते हैं।
अगला, आपको यह निर्दिष्ट करने की आवश्यकता है कि साइट फ़ोल्डर कहाँ स्थित है। फ़ाइल में, लाइन 'रूट', लाइन 'सर्वर' के नीचे, और / home / bitnami / foo_site / application / current / public निर्दिष्ट करें। हमारी भावी साइट के साथ 'foo_site' फ़ोल्डर कहां है। हम स्थान अनुभाग को टिप्पणी करने के बाद, फिर नगीन के लिए डेमन को लोड करते हैं और इसे रूट के रूप में चलाते हैं:
curl -L raw.github.com/jnstq/rails-nginx-passenger-ubuntu/master/nginx/nginx > /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
/etc/init.d/nginx startअब आप अमेज़न से प्राप्त डोमेन पर ब्राउज़र में जा सकते हैं और nginx से त्रुटि देख सकते हैं। सब कुछ वैसा ही काम करना चाहिए जैसा कि होना चाहिए।
इसके बाद git के बारे में बातचीत होगी। यदि आप नहीं चाहते हैं कि भंडार कहीं और हो (जैसे जीथब पर), तो अगला भाग आपके लिए है।
कॉन्फ़िगर करें
कई गिट रिपॉजिटरी प्रबंधक हैं, लेकिन मैं लोकप्रिय गिटोसिस पर बस गया। इसे सर्वर पर स्थापित करें:
sudo apt-get install gitosisइसके बाद, git यूजर बनाएं
sudo adduser gitचलो एक उपयोगकर्ता के रूप में लॉग इन करें:
sudo su gitSudoers फ़ाइल में git जोड़ें:
%git ALL=(ALL) ALLइसके लिए एक ssh कुंजी बनाएँ:
ssh-keygen -t dsaअगला, VPS सर्वर बनाएं:
sudo -H -u git gitosis-init < ~/.ssh/id_dsa.pub
git clone git@your_amazon_dns:gitosis-admin
इसके बाद, साइट रिपॉजिटरी बनाएं, इसके लिए फाइल /home/git/gitosis-admin/gitosis.conf खोलें और इसे डालें:
[
group foo_site]
writable = foo_site
members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.com group foo_site]
writable = foo_site
members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.comप्रत्येक तत्व पर अधिक विस्तार से विचार करें:
group foo_site –
writable = foo_site –
members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.com –इसके अलावा कीडिर फ़ोल्डर में आपको अपनी कुंजी के साथ एक डेवलपर 1@mail.com.pub फ़ाइल बनानी होगी
चूंकि गिटोसिस स्वयं एक गिट रिपॉजिटरी है, इसलिए सेटिंग्स में किसी भी बदलाव के बाद, कमिट और पुश करना होगा:
git commit –am 'new changes' && git pushइसके बाद, फ़ोल्डर बनाएं /home/git/repositories/foo_site.it, जिसमें हम भंडार को प्रारंभिक करते हैं
git init -- bare /home/git/repositories/foo_site.gitअब आप git @ amazon-domain: goo repositories का उपयोग कर सकते हैं: foo_site
कैपिस्ट्रानो को कॉन्फ़िगर करें
अपने स्थानीय प्रोजेक्ट में, कैपिफाई कमांड को निष्पादित करें।
वह एक Capfile और config / तैनात.rb बनाएगा
तैनाती में। आरबी फ़ाइल जोड़ें:
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
require 'bundler/capistrano'
#require 'capistrano/ext/multistage'#
require 'capistrano_colors'#
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
set :using_rvm, true
set :rvm_ruby_string, 'ree@foo_site'# ruby gemset
set :rvm_type, :system
set :scm, 'git'#
set :scm_verbose, true
set :git_enable_submodules, 1
set :deploy_via, :remote_cache
set :repository, ' '
set :user, 'bitnami'
set :use_sudo, false
set :stack, :passenger
after "deploy:update", "deploy:cleanup"
set :branch, "master"
server « », :web, :app, :db, :primary => true
set :keep_releases, 4
set :deploy_to, '/home/bitnami/foo_site /application'
set :bundle_without, [:test, :development]फिर कैप तैनाती: सेटअप कमांड चलाएं।
बधाई हो, आपने git के साथ सफलतापूर्वक एक सर्वर बनाया है, जिसमें पर्याप्त कार्यक्षमता है।
विषय पर उपयोगी जानकारी
Nginx + rvm के बारे में पोस्ट करेंGit server बनाएं