مقدمه و پیشنیازها
هدف از ایجاد یک ISO نصب سفارشی سی پنل
فرآیند نصب دستی سیستم عامل و سپس پنل مدیریت هاستینگی مانند cPanel میتواند زمانبر و مستعد خطا باشد، به ویژه زمانی که قصد دارید چندین سرور را به صورت یکسان پیادهسازی کنید. هدف از این راهنما، آموزش ایجاد یک تصویر ISO نصب سفارشی برای CentOS است که به طور خودکار cPanel را نصب و پیکربندی اولیهای را انجام میدهد. این رویکرد نه تنها برای استقرار سرورهای هاستینگ کارآمد است، بلکه دانش ارزشمندی برای شخصیسازی هر نوع تصویر نصب CentOS برای اهداف دیگر در اختیار شما قرار میدهد. در این روش، دیسک نصب استاندارد CentOS را با افزودن یک فایل کیکاستارت، حذف بستههای غیرضروری و بهروزرسانی بستههای موجود، اصلاح میکنیم.
لیست پیشنیازهای فنی
قبل از شروع، مطمئن شوید که تمامی پیشنیازهای زیر را فراهم کردهاید. این موارد برای اجرای بدون مشکل فرآیند ساخت تصویر سفارشی ضروری هستند:
- یک سرور آزمایشی: شما به یک سرور مجزا با سیستم عامل CentOS که معادل سیستم عامل هدف و معماری مورد نظر شماست، نیاز دارید.强烈推荐 از یک نصب تازه و تمیز استفاده کنید تا از عدم وجود تداخل با بستههای دیگر اطمینان حاصل شود. این سرور نقش پایه برای استخراج لیست بستهها را ایفا میکند.
- بستههای لازم: دو بسته ضروری
yum-utilsوcreaterepoباید روی سرور شما نصب باشند. این بستهها به ترتیب برای دانلود بستهها و ایجاد مخزن نرمافزاری استفاده میشوند. میتوانید آنها را با دستور سادهyum install -y yum-utils createrepoنصب کنید. - تصویر دیسک نصب CentOS: یک کپی از فایل ISO مربوط به دیسک نصب CentOS را دانلود کنید.
- فضای دیسک آزاد: اطمینان حاصل کنید که حداقل ۱۰ گیگابایت فضای خالی روی سیستم شما موجود است تا فضای کافی برای استخراج ISO و دانلود بستههای بهروز شده فراهم باشد.
استخراج و فیلتر کردن لیست بستههای ضروری
یکی از مهمترین مراحل اولیه، تهیه یک لیست دقیق از بستههای نرمافزاری است که باید در تصویر نهایی گنجانده شوند. این لیست هم به نصاب CentOS میگوید چه چیزهایی را نصب کند و هم به ابزار yumdownloader برای دانلود نسخههای بهروز آنها کمک میکند. با این حال، تهیه این لیست نیاز به دقت دارد. cPanel برخی از بستهها (مانند سرویسدهندههای ایمیل یا FTP خاص) را به طور مستقیم ارائه میدهد که از طریق مخازن استاندارد yum در دسترس نیستند و نباید به صورت دستی نصب شوند. بنابراین، باید این بستهها را از لیست فیلتر کرد. برای این کار میتوان از یک دستور پوسته پیشرفته استفاده کرد:
rpm -qa | egrep -v "(nsd|bandmin|proftpd|pure-ftpd|frontpage|gpg-pubkey|MySQL|exim|courier|dovecot)" | perl -lane '$F[0] =~ s/-[0-9].+$//; print $F[0];' | sort | uniq > ~/rpmlist
این دستور، لیست تمام بستههای نصبشده (rpm -qa) را میگیرد، بستههای مربوط به cPanel و برخی موارد دیگر را با استفاده از egrep -v حذف میکند، سپس شماره نسخه آنها را با Perl جدا کرده و در نهایت یک لیست منحصربهفرد و تمیز ایجاد میکند که در فایلی به نام rpmlist در پوشه خانگی کاربر ذخیره میشود. این فایل نقشه راه برای مراحل بعدی خواهد بود.
آمادهسازی اولیه محیط کاری و کپی ISO اصلی
پس از آمادهسازی لیست بستهها، نوبت به آمادهسازی فایل ISO اصلی CentOS میرسد. این فرآیند نسبتاً سرراست است. ابتدا فایل ISO را دانلود کنید (یا از مکانی که ذخیره کردهید کپی کنید). سپس، آن را در یک نقطه از سیستم، مثلاً /mnt/iso، مونت کنید. در مرحله بعد، محتویات آن را به همراه دو فایل مخفی مهم به نامهای .discinfo و .treeinfo درون پوشهای در دایرکتوری خانگی کاربر کپی نمایید. این فایلهای مخفی حاوی اطلاعات مهمی برای شناسایی دیسک توسط نصبکننده هستند.
دستورات نمونه برای این مرحله به این شکل است:
wget http://url/to/some/iso
mkdir /mnt/iso
mount -o loop some_iso /mnt/iso
cp -pr /mnt/iso ~
cp -pr /mnt/iso/.discinfo ~/iso/
cp -pr /mnt/iso/.treeinfo ~/iso/
اکنون شما یک کپی کامل از دیسک نصب در پوشه ~/iso دارید که آماده اعمال تغییرات سفارشی است.
تهیه لیست پکیجهای مورد نیاز
اهمیت تهیه لیست دقیق پکیجها
یکی از مراحل حیاتی در ساخت یک تصویر ISO سفارشی برای نصب سی پنل بر پایه CentOS، تهیه یک لیست دقیق و بهروز از پکیجهای مورد نیاز است. این لیست نقشه راه نصبکننده است و به آن میگوید دقیقاً چه نرمافزارهایی باید روی سرور هاستینگ نصب شوند. همچنین، این لیست به ابزار `yumdownloader` اجازه میدهد تا آخرین نسخههای این بستهها را از مخازن دانلود کند. بدون یک لیست دقیق، فرآیند ساخت ISO با شکست مواجه شده یا منجر به ناقص ماندن نصب کنترل پنل میشود.
استخراج و فیلتر کردن لیست پکیجها
برای شروع، شما به یک سرور سی پنل تازهنصبشده با سیستمعامل و معماری هدف نیاز دارید. از این سرور، با استفاده از دستور `rpm -qa` میتوانید لیست کامل تمام پکیجهای نصبشده را استخراج کنید. با این حال، همه این پکیجها برای رسیدن به هدف ما مناسب نیستند. برخی از پکیجها مانند `exim` یا `dovecot` مستقیماً توسط خود سی پنل مدیریت و ارائه میشوند و نصب دستی آنها از طریق مخزن سیستمعامل میتواند باعث بروز مشکل در عملکرد هاستینگ شود. بنابراین، ضروری است که این پکیجها را از لیست نهایی فیلتر کنیم.
دستور زیر یک نمونه کاربردی برای ایجاد لیست فیلترشده است:
rpm -qa | egrep -v "(nsd|bandmin|proftpd|pure-ftpd|frontpage|gpg-pubkey|MySQL|exim|courier|dovecot)" | perl -lane '$F[0] =~ s/-[0-9].+$//; print $F[0];' | sort | uniq > ~/rpmlist
این دستور پیچیده به زبان ساده چند کار انجام میدهد: ابتدا پکیجهای مربوط به سرویسهای خاص سی پنل و سایر پکیجهای نامرتبط را حذف میکند (با `egrep -v`). سپس با استفاده از یک دستور پرل، شماره نسخه پکیجها را جدا کرده و فقط نام اصلی آنها را نگه میدارد. در نهایت، لیست را مرتب کرده و موارد تکراری را حذف میکند و نتیجه نهایی را در فایلی به نام `rpmlist` در دایرکتوری خانگی کاربر ذخیره مینماید.
کاربرد لیست پکیج در فایل کیکاستارت
فایل `rpmlist` که ایجاد کردید، تنها برای دانلود پکیجها نیست، بلکه نقش کلیدی در خودکارسازی عملیات نصب نیز ایفا میکند. محتوای این فایل باید در بخش `%packages` فایل کیکاستارت (`cpanel-ks.cfg`) کپی شود. فایل کیکاستارت مسئولیت پیکربندی خودکار نصب CentOS و پیشتنظیمات اولیه سی پنل را بر عهده دارد. با قرار دادن لیست پکیجها در این فایل، به نصبکننده دستور میدهید که دقیقاً همان بستههای موجود در لیست را نصب کند که این امر تضمین میکند سرور نهایی شما از نظر نرمافزاری با سرور مرجع یکسان خواهد بود. این هماهنگی برای ایجاد محیطی پایدار در خدمات هاستینگ بسیار حیاتی است.
کپی و آمادهسازی ISO اصلی
مقدمهای بر فرآیند کپی و آمادهسازی
اولین قدم عملی در ساخت یک تصویر سفارشی نصب سندباکس، کپی و آمادهسازی ISO اصلی است. این مرحله سنگ بنای تمام مراحل بعدی است و دقت در انجام آن تضمین میکند که یک پایه سالم و قابل اعتماد برای افزودن بستهها و فایلهای پیکربندی مانند فایل کیاستارت دارید. هدف در اینجا ایجاد یک کپی کامل از دیسک نصب در محیطی ایزوله است که بتوانید بدون نگرانی از آسیبدیدگی فایل اصلی، تغییرات لازم را اعمال کنید. برای مدیران هاستینگ که قصد دارند فرآیند استقرار سرورهای سی پنل را بهینه کنند، درک این مرحله ضروری است زیرا امکان تکرارپذیری و خودکارسازی را فراهم میآورد.
مراحل دریافت و استخراج ISO
برای شروع، نیاز به یک کپی از فایل ISO دیویدی نصب سنتاواس دارید. این فایل را میتوان از طریق مراجع رسمی دانلود کرد. پس از دریافت فایل، باید آن را در سیستم عامل میزبان که ترجیحاً یک نصب تازه و تمیز است، کپی و سپس محتوای آن را استخراج کنید. فرآیند Mount کردن ISO به سیستم فایل، امکان دسترسی به تمامی محتویات آن را همانند یک دیسک فیزیکی فراهم میسازد. دستورات مربوطه به صورت زیر است:
wget http://url/to/some/iso
mkdir /mnt/iso
mount -o loop some_iso /mnt/iso
cp -pr /mnt/iso ~
یک نکته حیاتی که اغلب نادیده گرفته میشود، کپی کردن فایلهای مخفی (dot files) است. این فایلها حاوی متادیتاهای مهمی برای نصبکننده هستند و عدم انتقال آنها میتواند منجر به شکست فرآیند ساخت ISO نهایی شود. بنابراین پس از کپی محتوای اصلی، باید فایلهای `.discinfo` و `.treeinfo` را نیز به دایرکتوری مقصد منتقل کنید:
cp -pr /mnt/iso/.discinfo ~/iso/
cp -pr /mnt/iso/.treeinfo ~/iso/
اهمیت فضای دیسک و محیط کاری مناسب
تأمین فضای کافی دیسک یک پیشنیاز مهم است. توصیه میشود حداقل ۱۰ گیگابایت فضای آزاد در اختیار داشته باشید. این فضای اضافه نه تنها برای ذخیره ISO اصلی و کپی آن، بلکه برای دانلود بستههای بهروز شده و انجام عملیاتهای بعدی ضروری است. فعالیت در محیط home directory کاربر، یک تمرین خوب برای امنیت و نظم است، زیرا از تداخلات احتمالی با فایلهای سیستمی جلوگیری میکند. این رویکرد برای شرکتهای هاستینگ که ممکن است چندین ویرایش مختلف از تصاویر را به صورت موازی توسعه دهند، بسیار مفید خواهد بود.
جمعبندی و آمادگی برای مرحله بعد
پس از اتمام موفقیتآمیز این مرحله، شما یک کپی کامل و قابل ویرایش از دیسک نصب سنتاواس در اختیار دارید. این کپی اکنون آماده است تا در مراحل بعدی، شامل ایجاد لیست بستههای لازم مدیریت هاست سی پنل، ایجاد ریپوزیتوری بهروز و تزریق فایل پیکربندی خودکار کیاستارت، تغییر کند. دقت در این مرحله پایهای، زمان زیادی را در ادامه فرآیند و هنگام عیبیابی صرفهجویی خواهد کرد و تضمین میکند که تصویر نهایی شما یک محیط پایدار برای نصب سی پنل ایجاد کند.
ایجاد و بهروزرسانی ریپازیتوری
اهمیت ایجاد یک ریپازیتوری بهروز در فرآیند نصب
ایجاد و نگهداری یک ریپازیتوری بهروز، یکی از مراحل حیاتی در ساخت یک تصویر ISO سفارشی برای نصب سی پنل بر پایه CentOS است. استفاده از بستههای قدیمی که در دیسک نصب اولیه CentOS وجود دارند، نه تنها میتواند منجر به یک نصب منسوخ شود، بلکه فرآیند نصب را به دلیل نیاز به بهروزرسانیهای گسترده پس از نصب، بسیار طولانی میکند. یک ریپازیتوری بهروز حاوی آخرین نسخههای بستههای نرمافزاری، این اطمینان را ایجاد میکند که سرور هاستینگ شما از همان ابتدا با آخرین بهروزرسانیهای امنیتی و عملکردی راهاندازی میشود. این کار برای مدیران سیستم که به دنبال خودکارسازی استقرار سرورهای سی پنل هستند، یک مزیت بزرگ محسوب میشود.
مراحل آمادهسازی و پاکسازی ریپازیتوری اولیه
پس از کپی کردن محتویات دیسک نصب CentOS به یک دایرکتوری کاری، اولین قدم برای بهروزرسانی ریپازیتوری، پاکسازی محتوای قدیمی آن است. این کار معمولاً با ورود به دایرکتوری مربوط به بستهها (مثلاً `~/iso/CentOS/`) و حذف همه فایلهای موجود در آن با دستور `rm -f *` انجام میشود. این مرحله، فضا را برای جایگزینی بستههای قدیمی با جدیدترین نسخههای موجود در مخازن یام (Yum) فراهم میکند. این رویکرد پایهای برای ساخت یک محیط نصب کارآمد و مدرن برای هاستینگ است.
دانلود بستههای بهروز با استفاده از yumdownloader
ابزار کلیدی در این فرآیند، `yumdownloader` است که بخشی از بسته `yum-utils` محسوب میشود. این ابزار امکان دانلود آخرین نسخه بستههای مورد نیاز را از مخازن رسمی فراهم میکند. برای استفاده موثر از آن، به یک لیست دقیق از نام بستههای ضروری نیاز دارید. این لیست معمولاً از یک سرور مرجع سی پنل که قبلاً نصب شده، استخراج میشود. یک دستور پیچیده اما کارآمد برای فیلتر کردن و ایجاد این لیست به صورت زیر است:
rpm -qa | egrep -v "(nsd|bandmin|proftpd|pure-ftpd|frontpage|gpg-pubkey|MySQL|exim|courier|dovecot)" | perl -lane '$F[0] =~ s/-[0-9].+$//; print $F[0];' | sort | uniq > ~/rpmlist
این دستور بستههایی که مستقیماً توسط سی پنل ارائه میشوند (مانند اکسیم، داوکات) و برخی دیگر را حذف کرده و یک لیست خالص از نام بستههای سیستمی ایجاد میکند. سپس با استفاده از دستور `yumdownloader --resolve` و ارجاع به این لیست، تمامی بستهها به همراه وابستگیهایشان دانلود میشوند. توجه داشته باشید که این فرآیند ممکن است با توجه به سرعت اینترنت و میزبان مورد نظر، مدت زمان قابل توجهی طول بکشد.
بازسازی متادیتای ریپازیتوری با دستور createrepo
پس از دانلود تمام بستههای بهروز در دایرکتوری ریپازیتوری، سیستم نصب CentOS هنوز نمیداند که این بستهها چه هستند و چگونه باید نصب شوند. اینجاست که ابزار `createrepo` وارد عمل میشود. این ابزار با اسکن کردن بستههای موجود، یک ایندکس از متادیتا (مانند وابستگیها، نسخهها و توضیحات) در دایرکتوری `repodata` ایجاد میکند. برای اجرای صحیح آن، باید از دایرکتوری اصلی ریپازیتوری (مثلاً `~/iso/`) دستور زیر را اجرا کنید:
cd ~/iso/
createrepo -g repodata/comps.xml .
گزینه `-g repodata/comps.xml` به createrepo دستور میدهد که گروهبندیهای بستهها (Package Groups) را نیز از فایل اصلی دیسک نصب حفظ کند. این مرحله نهایی، ریپازیتوری شما را برای استفاده توسط نصبکننده Anaconda در CentOS آماده میسازد و یک گام اساسی در راهاندازی سرور هاستینگ با سی پنل به شمار میرود. با تکمیل این مرحله، شما یک ریپازیتوری کاملاً بهروز دارید که فرآیند نصب را سریعتر و مطمئنتر میکند.
پیکربندی فایل Kickstart و ساخت ISO نهایی
مقدمهای بر نصب خودکار cPanel
در چند هفته گذشته، روی ایجاد یک نسخه سفارشی از تصویر نصب CentOS کار کردهام که به طور خودکار cPanel را نصب میکند. این ISO همچنین پیکربندی پیش از نصب را انجام داده و بستههای بهروزرسانی شده را نصب میکند. این اطلاعات برای هرکسی که میخواهد یک تصویر نصب CentOS ایجاد کند، چه برای cPanel و چه برای اهداف دیگر، مفید است. برای ایجاد تصویر نصب، دیسک نصب CentOS را تغییر میدهیم؛ با اضافه کردن فایل kickstart، حذف بستههای غیرضروری و بهروزرسانی بستههای باقیمانده.
ملزومات اولیه برای شروع پروژه
برای ایجاد این تصویر به چند چیز نیاز دارید: یک سرور cPanel که سیستم عامل هدف را روی معماری هدف اجرا میکند. توصیه میکنم از یک نصب تازه استفاده کنید. بستههای yum-utils و createrepo باید از طریق yum نصب شوند. یک کپی از ISO دیسک نصب CentOS و حداقل 10 گیگابایت فضای دیسک آزاد نیز ضروری است.
ایجاد لیست بستههای مورد نیاز
شما نیاز دارید که یک لیست از بستهها از سرور cPanel بگیرید. این لیست در چندین نقطه از فرآیند استفاده میشود تا به نصبکننده بگوید چه چیزهایی باید نصب شود و به yumdownloader بگوید چه چیزهایی باید دانلود شود. متأسفانه، راه آسانی برای گرفتن لیستی از بستهها که مستقیماً قابل استفاده باشد، وجود ندارد. همچنین، cPanel بستههایی ارائه میدهد که در yum در دسترس نیستند. شما هرگز نباید این بستهها را به صورت دستی نصب کنید. ما نیاز داریم که این بستهها را فیلتر کنیم. این کار را میتوانید با استفاده از دستور زیر انجام دهید.
کپی و آمادهسازی ISO اصلی
کپی کردن ISO نصبکننده یک کار نسبتاً ساده است. شما فقط نیاز دارید آن را به سیستم مورد نظر کپی کنید، mount کنید، سپس آن را به دایرکتوری home خود کپی کنید. چند فایل dot نیز وجود دارد که باید کپی شوند. پس از دانلود ISO، یک دایرکتوری برای mount کردن ایجاد کرده و سپس محتویات آن را کپی میکنید.
ایجاد و پر کردن مخزن بستههای بهروز
ایجاد مخزن شما یک گام بسیار مهم در این فرآیند است. استفاده از بستههای ارائه شده با DVD منجر به یک نصب منسوخ میشود. اگرچه این برای برخی مصارف قابل قبول است، اما احتمالاً ترجیح میدهید که فرآیند نصب، بستههای بهروزرسانی شده را نصب کند. این امر باعث سریعتر شدن زمان نصب میشود. اولین قدم پاک کردن مخزن فعلی است. پس از پاک کردن مخزن، باید آن را با بستههای بهروز پر کنید.
دانلود بستههای آخرین نسخه
برای این کار از ابزار yumdownloader موجود در rpm yum-utils استفاده میکنیم. این دستور آخرین نسخه بستههای مورد نظر را از yum دانلود کرده و در دایرکتوری جاری قرار میدهد. توجه: این فرآیند بسته به سرعت اتصال اینترنت شما و سرعت میزبان مورد نظر ممکن است مدتی طول بکشد. پس از اتمام این کار، باید فایلهای repodata را با اطلاعات صحیح پر کنیم. این کار توسط ابزار createrepo انجام میشود.
مکانیابی و تنظیم فایل Kickstart
شما همچنین نیاز دارید که یک فایل kickstart ایجاد کرده و در مکان مناسب قرار دهید. نمونهای از این فایل را میتوانید در آدرس مشخص شده پیدا کنید. از این فایل میتوان برای تنظیم پیشفرضها، خودکارسازی کامل فرآیند نصب و پیکربندی پیشازموعد cPanel استفاده کرد. در این مرحله، تنها چیزی که باید بدانید این است که باید محتوای فایل rpmlist را کپی کرده و بین بخشهای %packages و %post در فایل cpanel-ks.cfg قرار دهید.
پیکربندی بوتلودر برای استفاده از فایل Kickstart
بوتلودر باید طوری تنظیم شود که از فایل kickstart استفاده کند. این کار را میتوان با ویرایش فایل isolinux.cfg انجام داد. این فایل در حال حاضر حاوی چیزی شبیه به برچسبهای linux و text است. به هر دوی این خطوط، عبارت ks=cpanel-ks.cfg باید به انتهای خط append اضافه شود. این کار به نصبکننده میگوید که به طور خودکار فایل kickstart را بارگیری کند.
ساخت نهایی فایل ISO سفارشی
پس از اتمام این مراحل، از ابزار mkisofs برای ایجاد ISO نهایی استفاده میشود. این دستور با پارامترهای مشخص شده، فایل ISO قابل بوت را تولید میکند. در این مرحله شما میتوانید ISO را روی دیسک رایت کرده و شروع به provisioning سرور خود کنید.
جمعبندی و توصیههای نهایی
ایجاد یک ISO نصب خودکار برای cPanel بر پایه CentOS، فرآیندی قدرتمند برای خودکارسازی استقرار سرور است. این روش نهتنها در زمان صرفهجویی میکند، بلکه دقت و یکنواختی نصب را نیز تضمین مینماید. با دنبال کردن دقیق این راهنما و توجه به جزئیات هر مرحله، بهویژه در بخش فیلتر کردن بستهها و تنظیم صحیح فایل kickstart، میتوانید یک محیط نصب کاملاً سفارشی و بهینه شده ایجاد کنید. همیشه قبل از استفاده از ISO نهایی در محیط تولید، آن را در یک محیط آزمایشی به طور کامل تست کنید.