اتصال هاست به گیت
گیت هاب (github) یک بستر محبوب و مشهور برای توسعه پروژه های فردی و سازمانی می باشد. به علت سادگی کار و امکانات فراوانی که برای کاربران خود فراهم کرده است مورد استقبال و استفاده زیادی قرار گرفته است. یکی از مواردی که سی پنل برای راحتی فرآیند و کار کاربران در نظر گرفته است ، استفاده از git version control و اتصال به گیت هاب برای مدیریت و دیپلوی آسان تر پروژه ها می باشد. در این آموزش قصد داریم تا نحوه استفاده از git version control برای سهولت در مدیریت پروژه ها و همچنین اضافه کردن دریافت خودکار (auto pull) به پروژه می باشد.
ساختن توکن شخصی در گیت هاب (Personal Access Token)
برای اتصال پروژه ها و همچنین ایجاد دسترسی برای دریافت پروژه توسط سی پنل، در قدم اول باید یک توکن دسترسی یا یک personal access token در گیت هاب ایجاد کنیم. برای این منظور ، ابتدا از لینک زیر در حساب گیت هاب خود لاگین کنید. از نوار بالا در بخش سمت راست بر روی آیکون پروفایل خود کلیک کنید.
پس از کلیک بر روی این مورد ، از منوی باز شده وارد بخش setting می شوید. در صفحه جدید ، اسکرول داون کنید و در انتهای منوی سمت چپ ، گزینه Developer settings را انتخاب بفرمایید.
در صفحه جدید، از منوی سمت چپ گزینه personal access token را انتخاب کرده و در ادامه بر روی Tokens (classic) کلیک می کنیم. صفحه جدیدی تحت عنوان personal access token (classic) باز می شود. بر روی generate new token کلیک کرده و گزینه generate new token (classic) را انتخاب می کنیم.
در صفحه باز شده، باید توکن مد نظر خود را به همراه تنظیمات آن ایجاد کنیم. صفحه ای که مشاهده می کنید به این صورت می باشد:
Notes : می توانید نوشته یا نام اختصاری برای این توکن قرار دهید. این مورد به این منظور می باشد که در صورتی که توکن های مختلفی برای موارد مختلف تولید کرده اید، بتوانید راحتتر آنها را تشخیص دهید.
Expiration : در این بخش زمان انقضای توکن را مشخص می کنیم که گزینه های مختلفی برای ما قرار دارد. می توان این زمان را به صورت 7 روزه ، یک ماهه ، دو ماهه ، سه ماهه ، مدت زمان custom و همچنین به صورت بدون انقضا (no expiration) تعیین کرد.
از بین Scope هایی که در بخش پایین تر قرار دارند و می توان آن ها را انخاب کرد، فقط تیک گزینه repo را انتخاب می کنیم. در نهایت ، به انتهای صفحه رفته و گزینه Generate token را کلیک می کنیم تا توکن ما ایجاد شود. پس از این مورد به صفحه قبلی ریدایرکت می شود و توکن شما در این صفحه نمایش داده می شود.
نکته: توجه بفرمایید که توکن نمایش داده شده را حتما کپی کنید، زیرا مجدد این توکن به شما نمایش داده نخواهد شد. اما بنا به هر دلیلی اگر موفق به انجام این مورد نشدید و یا توکن خود را فراموش کردید، می توانید بر روی نام توکن کلیک کرده و آن را regenerate کنید.
پس از انجام این مراحل، personal access token مورد نیاز خود را ایجاد کردیم. حال باید در سی پنل ، ادامه مراحل را جهت اتصال هاست به پروژه انجام دهیم.
ایجاد یک رکورد Git version control
ابتدا وارد به سی پنل می شویم. برای این که بتوانیم یک رکورد git version control ایجاد کنیم، وارد فایل منیجر هاست می شویم و سپس در روت اصلی آن (قبل از public_html) ، یک فایل به نام netrc. ایجاد می کنیم. پس از ایجاد این فایل ، مجوز آن را به 0600 تغییر می دهیم. حال فایل را باز کنید و کد های زیر را در آن قرار دهید.
machine github.com login UserName password PAT
UserName : به جای این مقدار باید username حساب گیت هاب خود را وارد کنید. در نظر داشته باشید که مقدار ایمیل قابل قبول نمی باشد و باید username گیت هاب به صورت درست و کامل وارد شود. برای مشاهده این مورد می توانید در گیت هاب از بخش نوار بالا و در سمت راست، بر روی آیکون حساب خود کلیک بفرمایید، در مقابل پروفایل خود و در خط اول می توانید یوزرنیم خود را مشاهده کنید.
PAT : توکن دسترسی که در مراحل قبل ایجاد کردیم (personal access token) را جایگزین این مقدار می کنیم.
سپس موارد اضافه شده در فایل را سیو می کنیم و سپس اقدام به ایجاد یک رکورد git version control می کنیم.
در سی پنل ، بخش Git version control را پیدا کرده و روی آن کلیک کنید.
در این صفحه می توانید رکورد های ایجاد شده توسط git version control را مشاهده و مدیریت بفرمایید. برای اضافه کردن یک رکورد جدید، گزینه create را انتخاب می کنیم.
در صفحه جدید ، باید تنظیمات مربوط به این اتصال جدید نظیر آدرس repository ، مسیر ایجاد فایل در هاست و نام این رکورد را قرار دهیم.
Clone a Repository: توجه داشته باشید که تیک این گزینه فعال باشد.
Clone URL : در این بخش باید url ریپازیتوری را جهت کلون کردن کپی کرده و در این بخش قرار دهید. برای یافتن url جهت کلون کردن وارد مسیر ریپازیتوری مذکور در گیت هاب شوید. بر روی بخش Code کلیک کرده ، در تب لوکال و از بخش HTTPS می توانید url مد نظر را مشاهده و کپی کنید.
Repository Path : در این بخش مسیر قرار گرفتن پروژه خود را در هاست مشخص می کنیم. می توانید آدرس فولدری را وارد کنید که در حال حاضر وجود دارد و یا اینکه نام فولدر جدیدی را وارد کنید تا ساخته شود و پروژه در آن قرار گیرد.
Repository Name : در این بخش نام رکوردی که در git version control را وارد می کنیم.
سپس گزینه create را انتخاب می کنیم و رکورد مد نظر ما ایجاد شده و پروژه در هاست Clone می شود.
در حال حاضر ، هاست به ریپازیتوری مد نظر ما متصل شده است. برای مدیریت کردن دستی پروژه ، به این صورت که تغییرات را بر روی گیت ها آپلود کنیم و یا تغییرات جدید گیت هاب را در هاست دریافت کنیم می توانیم در بخش git version control در مقابل رکورد مد نظر، بر روی manage کلیک کنیم.
سپس در صفحه جدید در تب basic information می توانیم مواردی نظیر نام repository و یا برنج انتخابی را تغییر داده و آپدیت کنیم. همچنین در این بخش می توانیم مواردی نظیر آخرین کامیت، clone url و اطلاعات دیگر در رابطه با این رکورد مشاهده کنییم.
در تب pull or deploy می توانیم علاوه بر اطلاعات این رکورد، دو گزینه Update from remote و Deploy Head commit را مشاهده می کنیم. برای دریافت دستی آپدیت های جدید پروژه از گیت هاب ، می توانیم از گزینه Update from remote استفاده کنیم.
فعال کردن auto pull برای پروژه
یکی از موارد مورد توجه که می تواند فرآیند آپدیت کردن پروژه را در هاست آسان تر کند ، اضافه کردن دریافت خودکار یا همان auto pull برای پروژه می باشد. با اضافه کردن این مورد، دیگر نیازی به آپدیت و دریافت دستی از هاست نبوده و با هر push کردن در گیت هاب، تغییرات اعمال شده در هاست نیز اعمال می شوند. برای این منظور از وب هوک های تعبیه شده توسط گیت هاب استفاده می کنیم. برای استفاده از این مورد ما در مسیر دامنه یا ساب دامنه یک فایل به نام webhook.php ایجاد می کنیم و مجوز آن را به 0600 تغییر می دهیم.
نکته: در این آموزش مسیر به صورت پیش فرض public_html و نام فایل webhook.php در نظر گرفته شده است. اگر پروژه بر روی Addon domain و یا Subdomain است، در آن مسیر باید موارد را انجام دهید. توصیه می شود این فایل را در مسیر پروژه و با همین نام webhook.php ایجاد کنید. همچنین در صورتی که نام فایل را غیر از webhook.php قرار بدهید، باید دقت کنید در ادامنه در آدرس دهی نایم فایل را تغییر دهید.
فایل webhook.php را باز کرده و کد های زیر را در این فایل قرار می دهیم:
<?php $secret = 'your-secret-key'; $rawPost = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_HUB_SIGNATURE'] ?? ''; if ($signature && hash_equals('sha1=' . hash_hmac('sha1', $rawPost, $secret), $signature)) { $repoPath = '/home/your-username/your-repo-path'; $branch = 'main'; // Run the git pull command $output = []; exec("cd $repoPath && git reset --hard origin/$branch && git pull 2>&1", $output); } else { http_response_code(403); echo "Access denied!"; }
your-secret-key : به جای این مقدار باید یک کلید secret به صورت رندوم تولید کنیم و در این فایل قرار دهیم. برای این منظور می توانید از اسکریپت های دست شخصی و یا از ابزار های آنلاین استفاده بفرمایید.
$repoPath : برای این مقدار باید مسیر دقیق پروژه در هاست را قرار دهید. دقت بفرمایید در ابتدای آدرس باید home/host-username/ را قرار دهید و سپس بقیه مسیر را از فایل منیجر هاست اضافه کنید.
$branch : این مورد هم بیانگر برنچ مد نظر برای دیپلوی در هاست می باشد.
در نظر داشته باشید اگر بخواهیم دستورات خاصی را پس از آپدیت پروژه در سی پنل ران کنیم، می توانیم کد ها را به این صورت قرار دهیم:
<?php $secret = 'your-secret-key'; $rawPost = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_HUB_SIGNATURE'] ?? ''; if ($signature && hash_equals('sha1=' . hash_hmac('sha1', $rawPost, $secret), $signature)) { $repoPath = '/home/your-username/your-repo-path'; $branch = 'main'; // Run the git pull command $output = []; exec("cd $repoPath && git reset --hard origin/$branch && git pull 2>&1", $output); // Run additional command exec("cd $repoPath && sample command 2>&1", $output); exec("cd $repoPath && composer install 2>&1", $output); } else { http_response_code(403); echo "Access denied!"; }
در بخش Run additional command می توانیم به جای عبارت sample command ، دستور مورد نظر را قرار دهید تا در ترمینال ران شود. به عنوان مثال دستور نصب composer در خط بعد آن قرار گرفته است. به همین می توانید دستور های مد نظر خود را پس از دریافت خودکار اجرا کنید و محدودیتی در تعداد این دستور ها جهت ران شدن وجود ندارد.
پس از اینکه موارد گفته شده را تغییر دادیم و فایل را سیو کردیم، باید به اکانت گیت هاب خود مراجعه کنیم تا وب هوک را برای این پروژه ست کنیم. در گیت هاب وارد ریپازیتوری متصل شده به هاست می شویم. سپس از بخش نوار بالای پروژه ، گزینه setting را انتخاب کنید. در صفحه جدید، از منوی باز شده گزینه webhooks را انتخاب می کنیم تا صفحه جدیدی لود شود. سپس گزینه add webhook را انتخاب می کنیم.
در صفحه جدید که باز می شود باید مشخصات وب هوک خود را وارد کرده و رکورد آن را ایجاد کنیم.
Payload URL : در این بخش باید دامنه خود و سپس یک روت خاص از آن را وارد بفرمایید که در صورت تغییر پروژه گیت هاب در اثر push کردن، این تغییرات جدید به این Payload URL ارسال شود. در نظر داشته باشید که webhook/ پس از دامنه یک مورد پیش فرض است که ایجاد کردیم. اگر می خواهید روت خاص و دیگری را برای این مورد اختصاص دهید، می توانید به این صورت عمل کنید اما در نظر داشته باشید که در ادامه باید مسیری که انتخاب کرده اید را به جای webhook/ وارد کنید. هم چنین این مورد را در نظر داشته باشید که حدالامکان مسیری که برای این مورد انتخاب می کنید، روت پروژه شما نباشد.
Content type : مقدار را بر روی application/json قرار می دهیم.
Secret: همان کلید سکرتی که در قدم های قبل ایجاد کردیم و در فایل webhook.php قرار دادیم، باید در این فیلد وارد شود.
SSL verification : باید گزینه Enable SSL verification انتخاب شده باشد.
برای سوال ?Which events would you like to trigger this webhook هم باید گزینه Just the push event. انتخاب شده باشد.
دقت داشته باشید که حتما تیک گزینه Active هم فعال باشد. سپس بر روی Add webhook کیلک می کنیم و وب هوک مد نظر ما ایجاد می شود.
حال فقط نیاز داریم تا قدم آخر را برای این مورد برداشته و auto pull را برای پروژه خود فعال کنیم. وارد فایل منیجیر سی پنل می شویم. سپس وارد مسیر پروژه شده و فایل htaccess. را باز می کنیم.
نکته: دقت بفرمایید که منظور از مسیر پروژه در آموزش ما به طور پیش فرض مسیر دامنه اصلی یا public_html می باشد. در صورتی که از Addon domain و یا Subdomain استفاده می کنید، مسیر مربوطه را باز کنید.فایل htaccess. موجود در این مسیر را باز کنید و در صورتی این فایل ایجاد نشده است، آنرا ایجاد بفرمایید.
کد های زیر را در htaccess. و حتما در ابتدای فایل قرار دهید:
RewriteEngine On RewriteRule ^webhook$ /webhook.php [L]
در این بخش باید به 2 نکته توجه بفرمایید:
1) در صورتی که در بخش اضافه کردن وب هوک در گیت هاب ، مسیر را به صورت https://domain.com/webhook قرار داده اید، بخش $webhook^ را بدون تغییر بگذارید. اما اگر در این بخش هر مسیر دیگری به جای webhook قرار داده اید، باید این بخش از htaccess. را هم تغییر دهید. به عنوان مثال اگر url را به صورت https://domain.com/hookroot وارد کرده اید، در htaccess به جای $webhook^ باید قرار دهید $hookroot^ .
2) اگر فایل webhook.php را در مسیر پروژه ایجاد کرده اید، بخش webhook.php/ بدون تغییر می ماند. اما اگر در مسیر دیگری ایجاد شده است، باید مسیر فایل به صورت کامل جایگزین شود. به عنوان مثال باید به صورت (home/host-user/fileroot/filename.php/) قرار دهید.
سپس فایل را سیو می کنیم و کار ما در این مرحله به اتمام می رسد. اکنون هر گونه تغییری در پروژه ایجاد شود و در repository گیت هاب push شود ، فایل پروژه در هاست نیز آپدیت می شود.
امیدواریم که این آموزش برای شما مفید واقع شده باشد. در صورت بروز با هرگونه مشکل و یا سوالی، می توانید به بخش پشتیبانی تیکت ارسال بفرمایید تا همکاران ما در اسرع وقت شما را راهنمایی کنند.