একাধিক বিকাশকারী / সম্পাদকগণ কোনও সাইটে কাজ চলছে


28

পটভূমি

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

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

আমার প্রশ্নটি হ'ল:

ডেটাবেসগুলিকে একত্রীকরণের জন্য কী স্বয়ংক্রিয় করার কোনও সহজ উপায় আছে যাতে একাধিক লোক একটি ওয়ার্ডপ্রেস ইনস্টলের কাজ করতে পারে? আমি, অবশ্যই, শুধু টেবিল যা আমি রপ্তানি পারে জানি আমার স্থানীয় মেশিনে পরিবর্তিত হয়েছে এবং তাদের উপস্থাপনকারী সার্ভারের সাথে ধাক্কা, কিন্তু এটা এছাড়াও আছে উপস্থাপনকারী সার্ভারের জিনিষ আমি নিচে আনতে চাই যে সম্ভব। আমি উভয় ডিবি-এর এসকিউএল আউটপুট ধরে ফেলতে পারি এবং সেগুলি পৃথক করতে পারি ... তবে এটি ক্লান্তিকর এবং হ্যাকিশ বলে মনে হচ্ছে। আমি ভাবছি অন্যদেরও সমাধান করা সমস্যাটি যদি এটি হয়; এই ধরণের জিনিস পরিচালনা করার জন্য যদি কোনও সম্প্রদায়-অনুমোদিত উপায় থাকে।

ধন্যবাদ!


অন্য সাইটে বন্ধ বা সরানোর জন্য ভোটদান (জানুয়ারী: ভাল সম্পর্কে কোনও চিন্তাভাবনা? সুপারইউসার সম্ভবত)। এটি ওয়ার্ডপ্রেস নির্দিষ্ট নয়, কারণ আপনি ড্রপাল, জুমলা বা কোনও পিএইচপি + মাইএসকিউএল চালিত সাইটে একই সমস্যার সমাধান করতে চান।
জন পি ব্লচ

যা বলা হয়ে গেছে, আমার পরামর্শ হ'ল আপনি কোনও স্থানীয়ের পরিবর্তে রিমোট স্টেজিং সার্ভারটি ব্যবহার করুন।
জন পি ব্লচ

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

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

1
@ গ্যাভিন: দুঃখিত, আমি আপনার প্রশ্নের ভুল ব্যাখ্যা করেছি। হ্যাঁ, আমি বিশ্বাস করি যে প্রোডাকশন সার্ভারে সমস্ত কিছুই ওভাররাইট হয়ে গেছে। : /
জ্যাক

উত্তর:


16

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

গিট সব

প্রশ্নটি জিজ্ঞাসা করার সাথে সাথে এটিই আমি করছিলাম, তবে এই পয়েন্টটি বলা ভাল। গিট ব্যবহার করা কেবল আমাদের আরও উত্পাদনশীল হতে সহায়তা করে নি, তবে এটি আমাদের সমষ্টিগত গাধাগুলিও বেশ কয়েকবার বাঁচিয়েছে।

আপনার কি কখনও কোনও সাইটে প্রধান কাঠামোগত সংস্কার করা, কোনও ক্লায়েন্টের কাছ থেকে এই সংস্কারগুলির অনুমোদনের প্রয়োজন ছিল এবং নন-সংস্কারকৃত সংস্করণে সামান্য আপডেট করার দরকার পড়ে? আমাদের আছে, এবং গিট আমাদের এটি করতে দিন। এই সেটআপটি বর্ণনা করা কিছুটা দীর্ঘ-বায়ুযুক্ত পেতে পারে তবে মূল কথাটি হ'ল আমরা একটি নতুন শাখা তৈরি করেছি, সেই শাখাটি সার্ভারে টানিয়েছি এবং সেই শাখায় একটি সাবডোমেন সংযুক্ত করেছি।

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

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

স্থাপন করতে গিট ব্যবহার করুন

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

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

স্বয়ংক্রিয় ডাটাবেস ডাম্প

সার্ভারটি একবার উত্পাদন মোডে আসার পরে , আমরা কেবলমাত্র সেক্ষেত্রে আমাদের ডাটাবেসটিকে স্বয়ংক্রিয়ভাবে ব্যাকআপ নিশ্চিত করে রেখেছি

প্রত্যেকের নিজস্ব ডাব্লুপি-কনফিগারেশন রয়েছে

যেহেতু আমরা সকলেই আমাদের নিজস্ব স্থানীয় ডাটাবেস ব্যবহারকারীর নাম এবং পাসওয়ার্ড পেয়েছি এবং আমরা বিভিন্ন নাম এবং পরিবেশন পদ্ধতি ব্যবহার করতে পারি তাই আমরা প্রত্যেকে আমাদের নিজস্ব wp-config ফাইল রাখি। এই প্রত্যেকটি মত একটি নাম দিয়ে গীত মধ্যে সংরক্ষিত হয় wp-config-gavin.php, এবং যখন আমরা যে কনফিগ ব্যবহার করতে চান, আমরা সিমবলিক লিঙ্ক এটি wp-config.php(যা ব্যবহার গীত দ্বারা উপেক্ষা করা হয় .gitignore )।

এটি আমাদের ডাটাবেস সারণীতে siteurlবিকল্পটিকে ওভাররাইড করতে দেয় wp_options:

define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');

এটি ওয়ার্ডপ্রেসটিকে সার্ভারের অবস্থানের জন্য ডেটাবেস দেখতে বাধা দেয় এবং এর অর্থ স্থানীয় এবং সার্ভার ইনস্টলের মধ্যে অবস্থানের মধ্যে কোনও অদ্ভুত পার্থক্য নেই।

Wp-config.php ফাইল সম্পর্কে একটি চূড়ান্ত নোট: সেগুলি সর্বজনীন এইচটিএমএল ডিরেক্টরিতে উপরে সংরক্ষণ করার বিষয়টি নিশ্চিত করুন এবং কেবল ওয়েব ব্যবহারকারীর জন্যই অনুমতিগুলি পড়তে নিশ্চিত করুন । এটি ওয়ার্ডপ্রেস সুরক্ষিত করতে একটি বিশাল পার্থক্য করে।

ডাটাবেস ইস্যু

অবশেষে বিষয়টি মাংসের।

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

উন্নয়নের সময়, এমন একক ব্যক্তি আছেন যিনি সাইটের "মালিকানাধীন" আছেন। সেই ব্যক্তিটি সাধারণত সেটআপ করেন (হোস্টিং প্যাকেজ একসাথে পেয়ে, বেসক্যাম্প প্রকল্প শুরু করে, নকশাকে কাটা, সেই ধরণের জিনিস) does এই ব্যক্তি একবার যুক্তিসঙ্গত বিন্দুতে পৌঁছে গেলে ওয়ার্ডপ্রেস ইনস্টল করার জন্য ডাটাবেসটি ফেলে দিন এবং এটি গিটে রাখুন। সেদিক থেকে এগিয়ে, বিকাশকারী প্রত্যেকে সেই ডাটাবেস ডাম্পটি ব্যবহার করে, এবং কেবলমাত্র মালিকই সেই ডেটাবেজে পরিবর্তন করে।

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

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


1

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


  • পদক্ষেপ 1. আপনার বিকাশ ডেটাবেস মাইস্ক্লডম্প
  • পদক্ষেপ 2. development
  • পদক্ষেপ 3. মাইএসকিউএল এ লগইন করুন, ডেটা যেমন আমদানি করতে একটি উত্স কমান্ড চালান source /path/to/file

Old কীভাবে পুরানো ডোমেনের সমস্ত দৃষ্টান্ত নতুন দিয়ে প্রতিস্থাপন করবেন: (1) নীচের স্ক্রিপ্টটি অনুলিপি করুন। (2) chmod +xএটি। (3) এটি চালান।

ব্যবহার: ./script.sh development-dump.sql > production-dump.sql

#!/bin/sed -f
s/'\([^\\']*\)development.domain.com\([^\\']*\)'/'\1production.domain.com\2'/g

2
কিছু যত্ন নিন: সেড মাইএসকিএল ডাম্পগুলির মধ্যে এনকোডড ডেটাগুলি যা আগে সিরিয়াল করা হয়েছিল তা মোকাবেলা করতে সক্ষম নয়।
hakre

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

1

আমি এখনই এই একই সমস্যার বিভিন্ন সমাধান নিয়ে পরীক্ষা নিরীক্ষা করছি। এটি অবশ্যই একটি ছদ্মবেশী।

আমার বর্তমান সমাধানটি --স্কিপ-প্রসারিত-সন্নিবেশিত পতাকা ব্যবহার করে স্থানীয় মাইএসকিএল ডাম্প করা। আমি বিশ্বাস করি যে এই পতাকাটি ডাটাবেসের প্রতিটি সারিটির জন্য একটি সন্নিবেশ রেকর্ড বিবৃতি তৈরি করে এবং ডাম্পটিকে আরও কিছুটা মার্জ বান্ধব করে তোলে। আমি এই নিবন্ধটি এই নিবন্ধটি থেকে তুলেছি: http://www.viget.com/extend/backup-your-database-in-git/

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

একত্রীকরণের সমস্যা হয়েছে তাই আমরা ডাটাবেসের পরিবর্তনের কারণ হিসাবে যে কোনও কিছুতে "" টার্ন নিন "পদ্ধতির অবলম্বন করার চেষ্টা করছি। ওয়ার্ডপ্রেসে আমি এমন কিছু করার আগে যা ডাটাবেস বদলে দেবে আমি নিশ্চিত হয়েছি যে সে তার সর্বশেষ ডাম্পটি পরীক্ষা করেছে, এটি টানবে এবং আমদানি করবে এবং আমার তৈরি না করে এবং চেক না করা পর্যন্ত তাকে কোনও ডিবি পরিবর্তন না করার জন্য বলি। এটি অবশ্যই আদর্শ নয় এবং আমি আরও ভাল সমাধানের সন্ধান করছি তবে এটি একটি শুরু। এটি আমাদেরকে ডিবি-র সংস্করণ নিয়ন্ত্রণও দেয় যা দুর্দান্ত।

আমি আমাদের সার্ভারে একটি ভাগ করা ডেটাবেস সেট আপ করতে পারি এবং ওয়েবসাইটের আমাদের স্থানীয় কপি দুটিই এসএসএইচ টানেলিংয়ের মাধ্যমে একই ডিবিতে সংযুক্ত করার চেষ্টা করতে পারি। এই পন্থাটি অবশ্য সমস্যাগুলির মধ্যে চলে যাবে যখনই আমাদের মধ্যে কেউ একটি প্লাগইন ইনস্টল করে। মূলত পিএইচপি ফাইল এবং মাইএসকিউএল ডিবি সিঙ্কের বাইরে চলে যাবে।

আমি অন্যরা কীভাবে এই সমস্যার সাথে মোকাবিলা করছে তা শুনতে আগ্রহী।

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