হেরোকুতে মঞ্চস্থকরণের উদাহরণ


85

আমি dev.myapp.comপরীক্ষার জন্য কোড এবং তারপরে www.myapp.comউত্পাদন ব্যবহারের জন্য চাপ দিতে সক্ষম হতে চাই । হেরোকু দিয়ে কি এটা সম্ভব?

উত্তর:


142

হেরোকুর কাছে আপনার ইন্টারফেসটি মূলত একটি গিট শাখা। হেরোকু রত্নটি তাদের এপিআইয়ের মাধ্যমে কিছু কাজ করে তবে আপনার গিট সংগ্রহস্থলের মধ্যে এটি কেবল একটি নতুন দূরবর্তী শাখা।

heroku create yourapp # production
git br -D heroku # delete the default branch

heroku create staging-yourapp # staging
git br -D heroku # delete the default branch

একবার আপনি হেরোকুতে একাধিক অ্যাপ্লিকেশন সেট আপ করলে আপনার গিট সংগ্রহস্থলটি এভাবে কনফিগার করতে সক্ষম হওয়া উচিত:

git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging

git remote add production git@heroku.com:yourapp.git
git push origin production

আমি সাধারণত একটি 'ওয়ার্কিং' শাখায় কাজ করি এবং আমার মাস্টারের জন্য গিথুব ব্যবহার করি।

আপনার ক্ষেত্রে এটি ধরে নিলে, আপনার মোতায়েন করা ওয়ার্কফ্লো সম্ভবত এমন কিছু দেখাচ্ছে:

git co -b working
# do some work

# push to github:
git co master
git merge working
git push

# push to staging:
git co staging
git merge master
git push origin staging

# push to production
git co production
git merge master
git push origin production

ধন্যবাদ - এটি কিছু অর্থবোধ করে (আমি গিটকে স্তন্যপান করি)। প্রশ্ন: ধরুন আমি শাখা "প্রান্ত" এ কিছু কাটিয়া প্রান্ত পরিবর্তন নিয়ে কাজ করছি। আমি কীভাবে সেই শাখাটিকে মাইপ্যাপকে প্রভাবিত না করে স্টেজিং-মায়াপে ঠেকাতে পারি (বর্তমানে এটি মাস্টার শাখায় চলছে)? না git push staging edge work?
টম লেহম্যান

আপনাকে যেতে আগ্রহী করে, আপনি কেবল আপনার স্টেজিং শাখায় প্রান্তকে মার্জ করে এটিকে চাপ দিন। আপনার উত্পাদন শাখা পৃথক এবং পরিষ্কার। আপনি সর্বদা এটি শাখা করতে পারেন এবং এমন পরিবর্তন করতে পারেন যা কেবল সেখানেই মার্জ হয়ে যায়।
লুক বয়েস

4
ডিফল্ট 'হিরকু' রিমোট শাখা সহ অ্যাপ্লিকেশনগুলি তৈরি করার পরিবর্তে এবং এটি মুছে ফেলার পরে, আপনি অনেক ভাল সমাধান ব্যবহার করতে পারেন যেমন:heroku create yourapp --remote your-remote
ডম্বসজেজ

4
একবার আপনি এই সেট আপ, আপনার সমস্ত herokuকমান্ড অন্তর্ভুক্ত করতে হবে --app stagingবা --app production। ডিফল্ট সেট করার কোনও উপায় আছে কি? (একটি মন্তব্য হিসাবে জিজ্ঞাসা / সি জিজ্ঞাসা এটি একটি সম্পূর্ণরূপে SO প্রশ্ন করা খুব লক্ষ্যবস্তু বলে মনে হচ্ছে।)
পল এ জংউথर्थ

4
@ পোল্যাজংথ্রিথ একটি ডিফল্ট হেরোকু অ্যাপ্লিকেশন সেট করতে, "গিট কনফিগার হিরকু.ম্রেটেজ স্টেজিং" এর মতো কিছু ব্যবহার করুন। এ Heroku ডক্স আরো devcenter.heroku.com/articles/multiple-environments
গ্রিফ্যাটন


10

মূল প্রশ্নের মূল অংশটি হ'ল মূল অ্যাপ্লিকেশন (www.myapp.com) এর একটি সাবডোমেন (dev.myapp.com) এর সাথে মঞ্চ অ্যাপটিকে লিঙ্ক করা about এটি উত্তরের কোনও দিকেই সম্বোধন করা হয়নি।

পদক্ষেপ 1: লুক বেয়েসের উত্তরে নির্দেশিত নির্দেশ অনুসারে আপনার অ্যাপ্লিকেশনটির প্রযোজনা ('মাইএপ') এবং স্টেজিং ('মঞ্চ-মাইয়াপ') উভয়ই কনফিগার করুন

পদক্ষেপ 2: আপনার ডোমেন পরিচালনা ব্যবস্থায় (যেমন গোড্যাডি):

Create a CNAME record:  dev.myapp.com 
that points to:   proxy.heroku.com

পদক্ষেপ 3: মঞ্চস্থ-ম্যাপের জন্য dev.myapp.com রুট করতে হেরোকুকে কনফিগার করুন:

heroku domains:add dev.myapp.com --app staging-myapp

সিএনএম রেকর্ডটিতে প্রচারের সময় পাওয়ার পরে, আপনি dev.myapp.com এ আপনার স্টেজিং অ্যাপটি চালাতে সক্ষম হবেন।


4
অ্যাক্সেস নিয়ন্ত্রণ সম্পর্কে কীভাবে এটি গুগল ইত্যাদিতে প্রদর্শিত না হয় এবং লোকেরা তাতে হোঁচট খায় না এবং এটিকে আসল জিনিস মনে করে? কোন সুন্দর সমাধান?
ব্রিটোহলোরান

হ্যাঁ, সবচেয়ে সহজ উপায় হ'ল GoDaddy পদক্ষেপটি এড়িয়ে যাওয়া এবং হেরোকু URL টি ব্যবহার করে সরাসরি আপনার অ্যাপ্লিকেশনটির "দেব" সংস্করণটি হিরোকু ডোমেন থেকে অ্যাক্সেস করা। (উদাহরণস্বরূপ ঝড়ো-লেবেক ৫৪83৮.হেরোকু ডটকম। ) তবে আপনি যদি এখানে বর্ণিত হিসাবে নিজের ডোমেনটি ' ডিভ ' রাখতে চান তবে গুগল, বিং, ইত্যাদি বলতে আপনি সর্বদা একটি রোবটস.টি.এস.টি ফাইল ইনস্টল করতে পারেন। আল। আপনার ডেভ সাইট সূচক না। এটি অনুসন্ধান ইঞ্জিনের বাইরে রাখতে সহায়তা করবে।
ডন লেথাম

আমি মঞ্চে সমস্ত কিছু ধরা এবং ব্যবহারকারীকে অ্যাডমিন হিসাবে লগইন করতে বাধ্য করার before_filterজন্য আমার একটি হুক যোগ করেছি application_controller, তারপরে একটি অ্যাডমিন কুকি সেট করেছি যাতে আমি এখনও কোনও 'প্রশাসনিক' দৃষ্টিকোণ থেকে অ্যাপটি দেখতে পারি। আমার জন্য বেশ ভাল কাজ করা।
ব্রিটোহলোরান

8

আপনার নায়কু_সান পরীক্ষা করা উচিত

এটি হিরকুতে পরিবেশ নিয়ে জাগ্রত করে একটি খুব ভাল কাজ করে।


7

জিনিস এখন সহজ। আপনি এটি কীভাবে করেন তা এখানে ...

প্রতিটি পরিবেশের জন্য একটি অ্যাপ্লিকেশন তৈরি করুন

$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging

এই প্রতিটি অ্যাপের, যা আপনি দেখতে পাবেন জন্য দূরবর্তী Repos নামে তৈরি করে দেব .git/config

আপনি এখন কোনও নির্দিষ্ট অ্যাপ্লিকেশনটিকে টার্গেট করতে --app বা --remote স্যুইচগুলি ব্যবহার করতে পারেন :

$ heroku info --app myapp-staging
$ heroku info --remote staging

রেল পরিবেশ নির্ধারণ করুন

রেল অ্যাপসের জন্য, হিরোকু "উত্পাদন" পরিবেশে ডিফল্ট । আপনি যদি চান যে আপনার স্টেজিং অ্যাপটি কোনও মঞ্চ পরিবেশে চলতে পারে তবে আপনার প্রকল্পে পরিবেশ তৈরি করুন এবং অ্যাপ্লিকেশনটিতে সম্পর্কিত RAILS_ENV এবং RAKE_ENV পরিবেশ পরিবর্তনশীল সেট করুন:

$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

পরিবেশ কনফিগার করুন

আপনার যদি অন্য কনফিগারেশন ভেরিয়েবল থাকে তবে আপনার প্রতিটি পরিবেশের জন্য সেগুলিও পাস করতে হবে।

$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc

এটি একটি বিশাল ব্যথা যদিও আমি কেবল আমার স্নাপকনফিগ রত্নটি ব্যবহার করি এবং চালাই

$ rake heroku:config:load[myapp-staging]

আমার প্রকল্পের YAML কনফিগারেশন ফাইলগুলি হিরোকুতে লোড করতে।

মোতায়েন করুন

এখন আপনি কেবল হিরোকুকে এইভাবে চাপ দিন:

$ git push staging master
$ git push production master

এবং এই মত স্থানান্তর:

$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production

( আরও তথ্য এবং শর্টকাটগুলির জন্য একটি অ্যাপের হিরোকু দেব কেন্দ্রের একাধিক পরিবেশের পরিচালনা দেখুন ))


সেট RAILS_ENVএবং RACK_ENVকরতে stagingHeroku দ্বারা নিরুৎসাহিত হয়:। "উপস্থাপনকারী এবং একটি কনফিগ / পরিবেশের / staging.rb এবং একটি ভাল অভ্যাস প্রয়োগের RAILS_ENV = উপস্থাপনকারী সঙ্গে একটি Heroku অ্যাপ্লিকেশানে এই নয় তৈরি" এটা যেমন অন্য কাস্টম পরিবেশ তৈরি করার ব্যাপারে প্রলুব্ধ হতে পারে " পরিবর্তে আমরা সর্বদা উত্পাদন মোডে চলার এবং আপনার কনফিগারেশন ভার সেট করে কোনও আচরণ পরিবর্তন করার পরামর্শ দিই। এখানে আরও বিস্তারিত: devcenter.heroku.com/articles/…
কোয়েন।

@ কোয়েন- পরিবেশের প্রসঙ্গ ব্যতীত জটিল রেল কনফিগারেশনগুলি পরিচালনা করার চেষ্টা করা আমার অভিজ্ঞতাতে পুরোপুরি অবৈজ্ঞানিক, হেরোকুতে হোক বা অন্যথায়। আপনার স্টেজিং অ্যাপ্লিকেশনটির জন্য সংযোগের স্ট্রিং, এপিআই কী ইত্যাদির পুরো সেট এবং অন্যটি আপনার প্রোডাকশন অ্যাপের জন্য রয়েছে, আপনি কি সত্যিই প্রতিটিটির জন্য আলাদাভাবে আলাদাভাবে কনফিগারেশন সেট সেট করতে চলেছেন? এটি কেবল সমস্যার জন্য জিজ্ঞাসা করছে- হেরোকু এখানে খারাপ পরামর্শ দিচ্ছেন।
ইয়ারিন

ধন্যবাদ আমি এমন মঞ্চের সন্ধান করছি যা সম্ভবত সত্যিকারের ইউআরএল পায়, সম্ভবত প্রতিশ্রুতি দিয়ে। আমি মনে করি এটি এমন কিছু যা জাইট নাও বা নেটলিফ এটি সহজ করে তুলেছে।
পোলভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.