خیلی از مدیران سایت‌های اینترنتی این روزها قصد انتقال سایت‌های خود از سی‌پنل ( cPanel ) به دایرکت ادمین ( DirectAdmin ) را باتوجه به تغییر نحوه ارائه لایسنس توسط شرکت Cpanel دارند. پیشنهاد ما این است که صفحه خرید لایسنس سی‌پنل در فراسو را مشاهده کنید، تعرفه خدمات ما برای این کنترل پنل بی‌نظیر است. اما اگر تصمیم خود را برای انتقال به دایرکت ادمین گرفته‌اید، این آموزش را تا انتها بخوانید تا بتوانید به راحتی تمامی فایل‌های خود را بدون بروز مشکل جابه‌جا کنید. 

مسائلی که قبل از اقدام به انتقال بک آپ از سی‌پنل به دایرکت ادمین باید بدانید

فرمت فایل‌های بک آپی که در CPanel ایجاد می‌کنید باید به شکل cpmove-user.tar.gz باشد
نسخه دایرکت ادمین شما باید بالاتر از 1/57/4 باشد
بررسی کنید که Roundcube نسخه آخر بر روی سرور شما نصب باشد
توجه داشته باشید محتوی بخش Mailing list در CPanel قایل انتقال به دایرکت ادمین نیست چرا که CPanel برای مدیریت Mailing list از سیستم Mailman استفاده میکند و دایرکت ادمین از majordomo و تبدیل آن در حال حاضر غیر قابل انجام است.
فرمت مورد استفاده دایرکت ادمین برای نام دیتابیس و نام کاربری دیتابیس همیشه به این صورت است : username_database و username_user همچنین CPanel نیز از همین فرمت استفاده می‌کند اما اغلب به علت محدودیتی که در طول رشته نام دیتابیس و کاربر دیتابیس وجود دارد معمولا CPanel قسمت username را کوتاه‌تر می‌کند این در حالی است که دایرکت ادمین همیشه بخش username را به طور کامل در ابتدای این رشته قرار میدهد، این موضوع در زمان تبدیل و انتقال بک آپ CPanel به دایرکت ادمین نیز صادق است لذا پس از انتقال شما نیاز دارید فایل wp-config.php و فایل‌های مشابه که در اسکریپت‌های دیگر اطلاعات دیتابیس در آن‌ها ذخیره شده است را تغییر دهید.
اگر بک آپ‌های شما در CPanel توسط افزونه Jetbackup تهیه شده است توجه داشته باشید که فایل های خروجی این پلاگین به شکل cpmove-user نیست و نیاز به تبدیل آن‌ها دارید که در ادامه روش آن را خواهیم گفت.
پیشنهاد می‌کنیم فایل های اصلی بک آپ CPanel با نام cpmove-user.tar.gz را پس از انتقال و بازگردانی بک آپ‌ها بر روی دایرکت ادمین همچنان بر روی سرور خود نگهداری کنید تا در صورت وجود مشکل یا خطا در سایت ها فایل اصلی بک آپ همچنان در اختیار شما باشد.
دایرکت‌ادمین امکاناتی دارد که در CPanel وجود ندارد مانند پشتیبانی مستقیم از nginx/openlitespeed ، mysql8 ، rspamd و … همچنین مواردی هم هست که در دایرکت ادمین پشتیبانی نمی‌شود مانند rubby و postgresql بنابراین اگر شما سایتی دارید که از این دو مورد استفاده می‌کند نیاز دارید به صورت دستی انتقال را انجام دهید.
نهایت طول رشته نام‌های کاربری سیستم در دایرکت ادمین ۱۰ کارکتر و نام‌های MySQL 16 کارکتر است که شما می‌توانید این عدد را طبق روشی که در ادامه خواهیم گفت افزایش دهید.
ما به شما پیشنهاد می‌کنیم نسخه MySQL/MariaDB سرور دایرکت ادمین را به MySQL 5.7+ یا MariaDB 10.x ارتقا دهید.
اگر شما تعدادی بک آپ CPanel موجود دارید که فرمت نام آن‌ها به صورت user.tar.gz است می‌توانید به روشی که در ادامه ذکر خواهیم کرد به طور کلی آن‌ها را پیش از اقدام به بازگردانی بک‌آپ به فرمت صحیح cpmove-user تبدیل کنید.
اگر شما تعدادی بک آپ CPanel موجود دارید که فرمت نام آن‌ها به صورت backup-…._user.tar.gz است می‌توانید به روشی که در ادامه ذکر خواهیم کرد به طور کلی آن‌ها را پیش از اقدام به بازگردانی بک‌آپ به فرمت صحیح cpmove-user تبدیل کنید.
پس از انتقال ممکن است لیست برخی کاربر‌های منتقل شده را در قسمت “Move users between resellers” مشاهده نکنید که روش رفع این مشکل نیز در ادامه ذکر خواهد شد.
اگر در هنگام بازگردانی بک‌آپ‌ها در دایرکت ادمین ابتدا نماینده‌ها را بازگردانی نکرده باشید کاربران این نمایندگان زیر مجموعه admin ایجاد می‌شوند که این موضوع هم با روشی که در ادامه به آن می‌پردازیم قابل حل است و می‌توان مجدد کاربران را به نماینده صحیح منتقل کرد.

تبدیل بک آپ Jetpack

با توجه به اینکه افزونه Jetpack بک آپ‌ها را با فرمت cpmove-user ایجاد نمی‌کند جهت بازگردانی بک آپ‌های این افزونه در دایرکت ادمین نیاز به تبدیل فایل‌های بک آپ این افزونه دارید برای این منظور فرمان زیر را پس از انتقال فایل‌ها به سرور دایرکت ادمین خود در ssh آن اجرا نمایید.

jetbackup=yes /usr/local/directadmin/scripts/cpanel_to_da/cpanel_to_da.sh /home/admin/user_backups/cpmove-USERNAME.tar.gz /home/admin/converted_user_backup
chown -R admin. /home/admin/converted_user_backup

افزایش طول رشته نام‌های کاربری سیستمی و MySQL در دایرکت ادمین

همانطور که در بالا اشاره کردیم دایرکت ادمین در نامگذاری کاربران سیستمی حداکثر از ۱۰ کاراکتر و برای نامگذاری بر دیتابیس و کاربر دیتابیس از ۱۶ کاراکتر پشتیبانی می‌کند با اجرای فرمان زیر در ssh سرور دایرکت ادمین خود می‌توانید این تعداد را به حداکثر خود افزایش دهید.

/usr/local/directadmin/directadmin set max_username_length 16 restart

تبدیل بک آپ سی پنل به فرمت صحیح جهت انتقال به دایرکت ادمین

اگر بک آپ‌هایی در CPanel خود داشته باشید که فرمت آنها به شکل user.tar.gz و یا backup-…-user.tar.gz باشد قبل از اقدام به بازگردانی آن‌ها در دایرکت ادمین باید آن‌ها را به فرمت cpmove.tar.gz تبدیل نمایید که به این منظور میتوانید با اجرای دستورات زیر به سادگی این تبدیل را انجام دهید.

اگر فرمت بک آپ شما به شکل user.tar.gz است دستور زیر را اجرا نمایید

for i in `ls *.tar.gz | grep '^[A-Za-z0-9]*.tar.gz'`; do { mv -vf ${i} cpmove-${i}; }; done

اگر فرمت بک آپ شما به شکل backup-…-user.tar.gz است دستور زیر را اجرا نمایید

for i in `ls backup-[0-9]*.*.tar.gz`; do { USERNAME=`echo $i | cut -d_ -f3 | cut -d'.' -f1`; mv -v $i cpmove-${USERNAME}.tar.gz; }; done

توجه داشته باشید دستورات فوق را در همان دایرکتوری که بک آپ های مورد نظر قرار دارند اجرا کنید

رفع مشکل عدم نمایش کاربر در بخش “Move users between resellers” در دایرکت ادمین

اگر پس از بازگردانی بک آپ‌ها در دایرکت ادمین و مراجعه به قسمت Move users between resellers در دایرکت ادمین تمام کاربران یا برخی از کاربران را مشاهده نکردید، دستور زیر را در ssh سرور دایرکت ادمین خود اجرا نمایید.

#!/bin/sh
cd /usr/local/directadmin/data/users
for r in `ls */reseller.conf | cut -d/ -f1`; do
{
echo "fixing Reseller $r ...";
echo -n '' > $r/users.list
for u in `grep "^creator=$r$" */user.conf | cut -d/ -f1`; do
{
ISUSER=`grep -c usertype=user $u/user.conf`
if [ "$ISUSER" = "1" ]; then
echo $u >> $r/users.list
fi
};
done;
};
done;

رفع مشکل قرار نداشتن کاربران زیر مجموعه نماینده صحیح

اگر در هنگام بازگردانی بک‌آپ‌ها در دایرکت ادمین ابتدا نماینده‌ها را بازگردانی نکرده باشید کاربران این نمایندگان زیر مجموعه admin ایجاد می‌شوند برای رفع این مشکل و قرار دادن کاربران زیر مجموعه نماینده دستور زیر را در همان دایرکتوری که بک آپ در آن قرار دارند اجرا نمایید.

for i in `ls user*.tar.gz`; do { RESELLER=`echo $i | cut -d. -f2`; USER=`echo $i | cut -d'.' -f3`; /usr/local/directadmin/scripts/move_user_to_reseller.sh $USER admin $RESELLER; }; done
echo "action=cache&value=showallusers" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d

آغاز مراحل انتقال بک آپ از CPanel به Directadmin

برای شروع انتقال ابتدا وارد ssh سرور CPanel خود شوید و دو مرحله زیر را با دقت و به ترتیب انجام دهید.

۱- ابتدا با اجرای دستور زیر اقدام به ایجاد بک آپ از کلیه اکانت‌های موجود در CPanel خود نمایید.

mkdir -p /home/all_backups
for user in `ls /var/cpanel/users/`; do { /scripts/pkgacct ${user} /home/all_backups; }; done

۲- پس از اتمام پروسه بک‌آپ‌گیری در سرور با دستور زیر فایل‌های بک آپ ایجاد شده را به سرور دایرکت ادمین منتقل کنید

rsync -avt --delete /home/all_backups/ root@your_directadmin_server.com:/home/admin/all_backups/

پس از اتمام انتقال فایل‌های بک آپ به سرور جدید به ssh سرور دایرکت ادمین سرور خود متصل شده و دستورات زیر را اجرا کنید.

cd /usr/local/directadmin/custombuild
./build update
./build cpanel_to_da
chown -R admin. /home/admin/all_backups

پس از انجام مراحل فوق با ورود به پنل دایرکت ادمین و مراجعه به بخش backup & restore میتوانید بک آپ های موجود در دایرکتوری /home/admin/all_backupsرا به سادگی بازگردانی (ری استور) نمایید.

اگر بر روی سرور CPanel خود فضای کافی جهت بک‌آپ‌گیری ندارید می‌توانید به صورت تک به تک اقدام از اکانت‌ها بک آپ گرفته و به سرور دایرکت ادمین منتقل کنید و بک آپ را از روی سرور CPanel خود حذف کنید، به این منظور ابتدای یک ssh-keys در سرور CPanel خود ایجاد نموده و دستور زیر را بجای دو دستوری که بالاتر برای اجرا در CPanel ذکر کردیم در سرور CPanel اجرا کنید.

for user in `ls /var/cpanel/users/`; do { /scripts/pkgacct ${user} /home/all_backups; rsync -avt /home/all_backups/cpmove-${user}.tar.gz root@your_directadmin_server.com:/home/admin/all_backups/cpmove-${user}.tar.gz; rm -f /home/all_backups/cpmove-${user}.tar.gz ; }; done

برای ایجاد ssh-keys در سرور کافی است دستور آنرا را در ssh-keygen اجرا نمایید، پس از اجرا محتویات فایل /root/.ssh/id_rsa.pub را در سرور دایرکت ادمین خود در فایل /root/.ssh/authorized_keys منتقل کنید

به این ترتیب با اجرای دستور بالا ابتدا از هر اکانت یک فایل بک آپ تهیه و سپس به سرور دایرکت ادمین منتقل و فایل بک آپ از روی سرور CPanel حذف خواهد شد.

انتخاب آسان هاست و سرور مجازی