یکی از قابلیت های دروپال اتصال حساب کاربری بین چند دیتابیس (بانک اطلاعاتی) است. در این مقاله سعی داریم در این خصوص صحبت کنیم و ببینیم چه روش هایی برای اینکار در دروپال وجود دارد. بنابراین تا پایان این مقاله ما را همراهی کنید.
قبل از اینکه به موضوع اصلی بحث بپردازیم جا دارد یک تجربه ای تلخ و شیرین از گذشته را بیان کنم.
چند سال پیش که اولین وب سایت اینترنتی خود را با وردپرس راه اندازی کرده بودیم هیچ گاه ذهنمان به این موضوع نمی رسید که روزی نیاز به این امکان داشته باشیم که از چند بانک اطلاعاتی برای راه اندازی یک وب سایت جامع استفاده کنیم.
در اوایل کار با یک دیتابیس شروع کردیم و تمام افزونه های مورد نیاز را روی همان سیستم نصب کردیم بعد از مدتی متاسفانه مشاهده کردیم که حجم دیتابیس بسیار بالا رفته است و هزینه میزبانی (هاست) برای این چنین سایتی که مجموعه بازدید در روز 2000 بازدید هم نداشته است از یک حد معینی بالاتر رفته است و سرعت سیستم پایین تر آمده است.
بعد از مشاهده این مشکل به این نتیجه رسیدیم که از چند وردپرس یا وردپرس شبکه استفاده کنیم ولی مشکل این بود که باز حجم دیتابیس بالا بود اما وب سایت سرعت مناسبی پیدا کرده بود زیرا سایت را بخش بندی (دپارتمان بندی) کرده بودیم و تمام افزونه ها در بک سیستم وب سایت فعال نمی شد و همین امر باعث بالا رفتن سرعت وب سایت شده بود.
متاسفانه کارهای انجام شده در سیستم وب سایت و بخش بندی کردن طولی نکشید که دیتابیس سنیگین دوباره هزینه هاست را به شدت افزایش داده و کارائی را پایین آورده بود بعد تحقیق کردیم که از چند دیتابیس جدگانه در وردپرس استفاده کنیم برای یک وردپرس نصب شده این کار امکان پذیر بود ولی با افزونه ای در وردپرس با هزینه سنگین که این هزینه به صرفه نبوده است.
متاسفانه بعد از مدتی استفاده از وردپرس با بیش از 8000 مطلب و بیش از 1000 وبلاگ مجبور شدیم از وردپرس به دروپال سیستم را منتقل کنیم. که ضررهای زیادی را متحمل شدیم.
یکی از وجه برتری دروپال به وردپرس توانایی استفاده از یک هسته برای چند هزار سایت و چند هزار دیتابیس است.
که این هزینه هاست را به شدت کاهش می دهد و سرعت را نیز افزایش می دهد ما در دروپال نصب بیش از 2000 سایت با یک هسته و 80 دیتابیس را امتحان کردیم که همه این ها دارای حساب کاربری مشترک بین اعضاء بود.
برای راه اندازی مولتی سایت (چند سایتی) دروپال به چند روش می توان اقدام کرد.
-
نصب چندین دروپال و چندین دیتابیس
در این روش از یک هسته و سیستم دروپال استفاده می شود و هر تعداد سایت را می توان نصب کرد روش راه اندازی مولتی سایت با این روش بسیار آسان است کافی است در پوشه
Sites
یک زیر پوشه به آدرس کامل سایت می سازیم مثل:
Ali.site.com
و مشخصات دیتابیس را در فایل
settings.php
تنظیم می کنیم دقت کنید که تمام پوشه ها با حرف کوچک نوشته شود.
مشکلی که در این روش وجود دارد اگر شما نیاز داشته باشید نصب چند هزار سایت باید یک سرور بسیار قوی تهیه کنید مثلا اگر 2200 سایت را با این روش در چند دیتابیس نصب کنید حدود 168 هزار جدول می شود که باید حداقل یک سرور مجازی خوب تهیه شود ولی برای سایت های تعداد پایین مناسب است.
که در این روش طبق آموزش زیر می توانید حساب های کاربری و مواردی را که نیاز دارید بین سایت ها مشترک کنید.
یکی ا ز وجه برتری دروپال بر وردپرس این است که رایگان این امکان وجود دارد. اما راه اندازی این سیستم با وردپرس نیاز به هزینه بالا و توان فنی بالایی هم دارد و این امکان هم وجود دارد که بعد اگر آن افزونه که در وردپرس برای این کار استفاده می شود بروز رسانی نشود که چنین روزی احتمال اش هم است کل سایت بهم می ریزد در حالی که در دروپال همچین مشکلی نیست.
چون دروپال هیچ موقع قابلیت مولتی سایت که وجه برتری محسوب می شود را حذف نمی کند و در دروپال 8 هم تازه منتشر شده خیلی قوی تر پشتیبانی کرده است.
برای اتصال چند دیتابیس در دروپال فقط کافی است در دیتابیس سایت دومی که می خواهید به وب سایت اولی متصل کنید این کد را درون فایل
settings.php
وب سایت دوم قرار دهید.
$databases = array (
'default' =>
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'نام دیتابیس',
'username' => 'نام کاربری دیتابیس',
'password' => 'رمز عبور دیتابیس',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => array(
'default' => 'پیشوند دیتابیس',
'users' => 'db_1.',
'sessions' => 'db_1.',
'role' => 'db_1.',
'authmap' => 'db_1.',
),
),
),
);
جا دارد در اینجا به چند روش استفاده از مولتی سایت دروپال بپردازیم.
-
نصب یک دروپال چندین پایگاه داده
در این روش تمامی سایت ها در یک دیتابیس ذخیره می شود.
مشکلی که در این روش وجود دارد دیتابیس سنگین می شود برای چند سایت که هر کدام دیتابیس تقریبا سنگینی دارند بهتر است از روش شماره یک استفاده شود ولی اگر دیتابیس سنگینی ندارید این بهترین روش است.
یک حسنی که در این روش است قالب ها و افزونه ها در تمام سایت ها مشترک است یعنی یکبار نصب می شود و در تمام سایت ها استفاده می شود.
حتی با قابلیت دراش در دروپال می توان یکباره یک افزونه را برای 2000 سایت فعال کرد.
البته در وردپرس شبکه نیز این قابلیت قرارداده شده است که به راحتی می توان چند افزونه را برای سایت ها فعال کرد.
برای اتصال حساب کاربری در این روش می توانید از کد پایین استفاده کنید.
دقت کنید در صورتی که تمامی جدول های بانک اطلاعاتی در یک دیتابیس باشد بجای اسم دیتابیس شما نیاز دارید پیشوند را نیز ذکر کنید.
مثل این
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'DATABASENAME',
'username' => 'USERNAME',
'password' => 'PASSWORD',
'host' => 'localhost',
'prefix' => array(
'default' => 'DATABASENAME.',
'users' => '(DATABASENAME-ASLI-ke-userha-farakhani-mishe).',
'sessions' => '(DATABASENAME-ASLI-ke-userha-farakhani-mishe).',
'role' => '(DATABASENAME-ASLI-ke-userha-farakhani-mishe).',
'authmap' => '(DATABASENAME-ASLI-ke-userha-farakhani-mishe).',
),
);
اما در صورتی که چند بانک اطلاعاتی باشد از نمونه کد اولی استفاده کنید و نباید هیچ گونه پیشوندی داشته باشد و فقط نام دیتابیس سایت اول را می نویسیم.
-
قابلیت مولتی سایت با افزونه Access Domain
در این افزونه به راحتی می توان 2000 سایت را با یک هسته دروپال یک دیتابیس حساب کاربری مشترک افزونه و قالب های فعال بین تمام سایت ها و دیتابیس حجم پایین استفاده کرد.
اما مشکلی که در این روش ممکن است پیش اید اگر روزی این افزونه بروزرسانی نشود چه می شود؟؟؟؟؟
این افزونه جزء افزونه های پر طرفداری دروپال است و امکان اینکه بروزرسانی نشود کم است و برنامه نویس این افزونه در حال حاظر در حال بروزرسانی به نسخه 8 هستند.
چون دروپال یک سیستم جامعه محور است اگر روزی این افزونه جذف شود حتما توسعه دهنده گان دروپال یک ماژول جایگزین این افزونه را طراحی می کنند.
در نهایت برای سایت های که مطالب زیادی دارد و کاربر محور است بهتر است از روش یک استفاده شود.
جا دارد اینجا تشکر کنم از جناب آقای مهندس ایمان کیانی وعرفان بناکار که ما در تمام مراحل یادگیری و بکار گیری تمام قسمت های دروپال و بخصوص در این مقاله یاری کردند.