আপনার সার্ভারে মার্চুরিয়াল ইনস্টল করা এবং এইচ.জি. পুলিকে মোতায়েনের জন্য কি ভাল ধারণা?


13

আমি এই গত মাসে সবেমাত্র একটি নতুন কাজ শুরু করেছি এবং দেখে মনে হচ্ছে তাদের কোডের কোনও উত্স নিয়ন্ত্রণ নেই। তারা তাদের হোস্টিং সরবরাহকারী যে ব্যাকআপগুলি নেয় তাদের উপর নির্ভর করে।

কিছুটা কথা বলার পরে আমি আমার বসকে নিশ্চিত করেছিলাম যে আমাদের অবশ্যই সোর্স কন্ট্রোল ব্যবহার করা উচিত এবং আমি এটির উপর একটি সংক্ষিপ্ত সেমিনার করার পরে, পুরো দলটি বোর্ডে রয়েছে; তারা মার্কুরিয়ালকে পছন্দ করত।

সুতরাং এখনই আমাদের কাজ করার উপায় এটি:

º----------BitBucket
º---------/
º--------/

আমার এবং hg pullবিটবকেট থেকে অন্য তিনটি বিকাশকারী , আমাদের পরিবর্তনগুলি করুন, তারপরে hg pushবিটবকেটে to

এখন স্থাপনার জন্য, কারও কারও কাছে প্রোডাকশন সার্ভারের দিকে সর্বশেষতম ফাইলগুলি এফটিপি করা দরকার।

আমি আমাদের সার্ভারে মার্কুরিয়াল ইনস্টল করার কথা ভাবছিলাম, এবং hg clone(পরবর্তীকালে hg pull) ব্যবহার করে সংস্করণগুলি আপ টু ডেট রাখি।

º---push->-----BitBucket----<-pull-----º (production server)
º---push->----/
º---push->---/

এই একটি ভাল ধারণা? আমি যে কোনও সম্ভাব্য সমস্যা দেখছি না? এখানে কেউ কি এরকম কিছু করেছে? আপনি কীভাবে একটি বৃহত পিএইচপি ফ্রেমওয়ার্ক অ্যাপ্লিকেশন স্থাপন করবেন (আমরা মুডল ব্যবহার করছি)?


এটা দুর্দান্ত ধারণা। আপনার সন্দেহ কেন?
নিকলে ফমিনিহ

এটি এমন একটি প্রক্রিয়া যা অনেকে "সাধারণ" যথেষ্ট হিসাবে বিবেচনা করে এবং মাইক্রোসফ্ট এখন গিট করার জন্য সমর্থনে তৈরি করেছে (ভবিষ্যতে এইচ.জি. সমর্থন সহ) তাদের আজুর পরিষেবাটিতে ভিত্তি করে মো।
অ্যালান নাপিত

উত্তর:


12

এটি অবশ্যই একটি ভাল ধারণা এবং এটি ব্যবহারের জন্য ব্যবহার করার একটি সাধারণ পদ্ধতি। চলমান বিকাশের জন্য ট্রাঙ্ক রাখার সময় আপনি মোতায়েনের উদ্দেশ্যে স্থিতিশীল শাখা ব্যবহার করতে চাইতে পারেন যাতে আপনি স্থিতিশীল শাখাটিকে উত্পাদনে স্থাপনের আগে পরীক্ষা করতে পারেন।

কেবলমাত্র তখনই সমস্যাটি আসতে পারে যখন আপনি আপনার কোড বেসে সংবেদনশীল তথ্য (যেমন এপিআই কী ইত্যাদি) ব্যবহার করেন যা আপনি তৃতীয় পক্ষের সার্ভারগুলিতে আপলোড করতে চান না (আপনার ক্ষেত্রে এটি বিটবকেট হবে)। এই ক্ষেত্রে সংবেদনশীল ডেটা সঠিক জায়গায় পুনরুদ্ধার করার জন্য একবার সংগ্রহস্থল থেকে ডেটা টানলে কোনও সরল স্ক্রিপ্ট চালানো হয় যা সমস্যার সমাধান করবে।


10

মনে রাখবেন যে এই স্থাপনার কৌশলটি পারমাণবিক নয়। এটি ঘটতে পারে যে অ্যাপ্লিকেশনটি আঘাত হানার সময় অন্য ফাইলগুলি পুরানো অবস্থায় থাকতে পারে এমন কিছু ফাইল ইতিমধ্যে আপডেট হয়েছে। এটি অপ্রত্যাশিত পার্শ্ব প্রতিক্রিয়া সৃষ্টি করতে পারে।

পারমাণবিক মোতায়েন করার একটি উপায় হ'ল সিমলিংক ব্যবহার করে। নতুন ফাইলযুক্ত একটি ডিরেক্টরি তৈরি করুন। যখন কখনই প্রস্তুত হয় ব্যবহার করা ডিরেক্টরিটির জন্য একটি সিমিলিংক পরিবর্তন করুন। আপনি যদি পুরানো সংস্করণটি চারপাশে রাখেন তবে সহজেই রোলব্যাকও করতে পারেন।


3
আপনি যে কোনও উপায়ে সহজেই রোলব্যাক করতে পারেন, এটি ভিসিএসের মূল বিষয়।
রব

1
অগত্যা নয় - তারপরে আপনার কনফিগারেশন বা কিছু উত্পন্ন ফাইল রাখা দরকার যা ভিসিএসের সংস্করণ এবং সিস্টেম নির্ভর হতে পারে। অতিরিক্ত জ্ঞাত সংস্করণে ফিরে আসার জন্য আপনাকে ট্যাগগুলি (যা প্রশ্নের বর্ণনায় প্রক্রিয়ায় উল্লেখ করা হয়নি) ব্যবহার করতে হবে।
জোহানেস

2

আর একটি (আমার মতে আরও ভাল) সম্ভাবনা: একটি বিল্ড সার্ভার / অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভার ব্যবহার করুন।

সংক্ষিপ্ত সংক্ষিপ্ত ব্যাখ্যা: এই একটি সার্ভার আছে (হতে পারে আভ্যন্তরীণ, ইন্টারনেট থাকতে হবে না) আপনি আপনার ভান্ডার নিরীক্ষণ করতে সেট আপ এবং যখনই সেখানে Repos নতুন changesets হয়, সার্ভার আপনার কোড তৈরী করে যে ( পিএইচপি তে আফাইক এটি প্রয়োজনীয় নয়) , ইউনিট পরীক্ষা চালায় এবং ওয়েব কোডটিতে আপনার কোড স্থাপন করে lo

আরও তথ্যের জন্য, এই লিঙ্কগুলি চেক করুন:

সেখানে সিআই এর জন্য প্রচুর বিভিন্ন পণ্য রয়েছে তবে আমি এখন পর্যন্ত কেবলমাত্র টিমসিটি ব্যবহার করেছি । সেটআপ করা খুব সহজ ... বাস্তবে, এটি আমি প্রথম চেষ্টা করেছি এবং আমি এটি এত পছন্দ করেছি যে আমি এটির সাথে লেগেছি।


বিকল্প সস্তা সমাধান:

যদি বিল্ড সার্ভার স্থাপন করা খুব বেশি প্রচেষ্টা হয় বা আপনার সাইটটি ঠিক কখন স্থাপন করা হয় সে সম্পর্কে আপনি যদি আরও নিয়ন্ত্রণ চান তবে কেবল একটি স্ক্রিপ্ট ফাইল (উইন্ডোজে ব্যাচ / পাওয়ারশেল বা লিনাক্স / ম্যাকের অনুরূপ কিছু) সেট আপ করুন যা টান দেয় আপনার সংগ্রহশালা থেকে নতুন সংস্করণ এবং এটি উত্পাদন সার্ভারে এফটিপি করে TP

মূলত, এটি বিল্ড সার্ভারের সমান, কেবল সহজ।


আপনি শেষ পর্যন্ত ঠিক কীভাবে সমাধান করেছেন তা বিবেচনাধীন ... এটি কোনওরকম স্বয়ংক্রিয়ভাবে নিশ্চিত হয়ে নিন!

আপনি কোনও একক ক্লিক / একক কমান্ড টাইপ করে মোতায়েন করতে সক্ষম হতে চান, যাতে প্রত্যেকে বিশেষ কিছু না জেনে এবং ভুল না করেও করতে পারে - এমনকি কোনও বিপর্যয় বা চাপের মধ্যে থাকলেও।


1

আমরা এটি করি বা এর মতো জিনিস অজ্ঞাত অলৌকিক @ জোহানস কোণটি একটি বিষয় বলে উল্লেখ করেছে, যদিও বাস্তববাদী ভাষায় এটি এত দ্রুত ঘটে এটি ঠিক হওয়া উচিত এবং তিনি উল্লেখ করার সাথে সাথে এর চারপাশে উপায় রয়েছে।

সম্ভবত এই অ-পারমাণবিকতার চেয়ে গুরুত্বপূর্ণ হবে "আপনি কীভাবে ডেটাবেস স্কিমা আপডেটগুলি পরিচালনা করেন" - এইভাবে খারাপ কোড মোতায়েন করা ঠিক করাটিকে সহজ করে তোলে। বড় সমস্যাটি হ'ল আপনি যখন এমন কোনও আপডেট স্থাপন করেন যা আপনি যে ডাটাবেসে ফিরে যেতে চান তা পরিবর্তন করে। অথবা আপনি যদি খারাপ আপডেট করছেন এবং ডেটা দূষিত করছেন।

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


1

এটি দুর্দান্ত ধারণা, তবে নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  • সার্ভারে প্রতিশ্রুতিবদ্ধ না করার চেষ্টা করুন (যদিও কিছু বিরল সময় এটি করার জন্য বোধগম্য হয়, যেমন একটি প্লাগইন ইনস্টল করা বা সামগ্রী সম্পদ যুক্ত করা)
  • পরীক্ষার জন্য একটি স্টেজিং সার্ভার বা একটি গৌণ সংগ্রহস্থল স্থাপন ব্যবহার করুন
  • hg update -Cউত্পাদনের উপর প্রভাব ফেলবে না এমন ক্ষেত্রে সর্বদা সতর্ক থাকুন (যেমন গুরুত্বপূর্ণ ফাইলগুলি মুছুন)
  • একটি উত্পাদন এবং একটি উন্নয়ন শাখা আছে, কেবল উত্পাদন শাখা মোতায়েন করুন
  • সম্পদগুলি ব্যাকআপ হিসাবে বিবেচনা করুন (যেমন সামগ্রী হিসাবে চিত্রসমূহ) এবং ব্যবহারকারীর ডেটা উপেক্ষা করুন (যেমন সংযুক্তি / আপলোডস, ক্যাশে ইত্যাদি)
  • hg statusসার্ভারে সর্বদা একটি পরিষ্কার আউটপুট থাকুন (এটি আপনাকে ক্যাশে হিসাবে জিনিস উপেক্ষা করছে তা নিশ্চিত করতে সহায়তা করবে)
  • ওয়েব ফোল্ডারে ভান্ডার স্থাপন করবেন না। পাবলিক স্পেসের বাইরের সিমনলিঙ্কগুলি ব্যবহার করুন (যেমন ln -s / myrepo / src / ওয়েব / পাবলিক_এইচটিএমএল / মায়াপ)
  • কনফিগারেশন ফাইলগুলিতে সংস্করণ না করার বিষয়ে সতর্ক হন (বিশেষত ডাটাবেস পাসওয়ার্ড বা অন্যান্য সহ)
  • প্রোডাকশন ব্যাকআপের পরিবর্তে ব্যবহার করবেন না, এটি প্রোডাকশন কোডের জন্য ডেভলপমেন্ট ব্যাকআপ , প্রোডাকশন ডেটা নয়

অবশেষে, আমি মনে করি আপনার মোতায়েনের প্রক্রিয়াতে ডিভিসিএস যুক্ত করার জন্য সবচেয়ে মূল্যবান জিনিসটি এটি হ'ল এটি আপনার স্থাপনায় সুরক্ষা যুক্ত করবে, কখনও কখনও হ্যাকাররা আপনার স্টাফগুলিতে দূষিত কোডটি ইনজেক্ট করে এবং সংস্করণ নিয়ন্ত্রণের মতো কিছু না করে আপনার সহজেই এটি সনাক্ত করার কোনও উপায় নেই ( বিশেষভাবে বিতরণ করা হয়েছে, যেহেতু ভিসিএসে বিতরণ করা দিকটি আপনার ফাইলগুলির অখণ্ডতা পরীক্ষা করা সহজ করে তোলে)।

আমি কিছু সাইট কয়েকবার হ্যাক পেয়েছি, মার্চুরিয়াল থাকার ফলে আমাকে কেবল hg update -Cসার্ভারে একটি ইস্যু করে এই হ্যাকগুলি সাহিত্যের সাথে পূর্বাবস্থায় ফেরাতে সহায়তা করে (অবশ্যই আপনি এটি করতে চান hg statusএবং পরবর্তী বিশ্লেষণের জন্য প্রভাবিত ফাইলগুলি পেতে পারেন)।

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