استقرار به پروسهای گفته میشود که کدهای پروژه شما از مخزن پروژه (معمولا در گیتهاب/ گیتلب/ گیت سفارشی) دریافت میشود و در سرورتان در دایرکتوری پروژه قرار میگیرد.
ما در پچیم خروجی ۱۰ استقرار آخر برنامه شما را ذخیره میکنیم تا از وضعیت استقرارهای خود از طریق پنل پچیم آگاه شوید و همچنین میتوانید خروجی کد اسکریپت استقرار خود را نیز از طریق هر کدام مشاهده کنید، تا در صورت وجود مشکل، آن را بفهمید و حل کنید.
بعضی از برنامهها و پروژهها از قابلیت متغیرهای محیط برنامه استفاده میکنند که با استفاده از فایل .env
در مسیر اصلی پروژه مورد استفاده قرار میگیرد، برای مثال در یک پروژه لاراول این فایل نقش اساسی را در پیکربندی پروژه انجام میدهد. برای همین در پنل سایت پچیم بخشی را بوجود آوردهایم با عنوان متغییرهای محیط برنامه که با استفاده از آن میتوانید محتوای فایل .env
را تغییر دهید و اگر این فایل اصلا وجود ندارد با استفاده از این بخش این فایل را با محتوای جدید ایجاد کنید.
.env
فایلهای .env
را به هیچ وجه نباید به مخزن git اضافه کرد، اما میتوانید همان فایل را بدون مقادیر حساس، تنها با اسم متغیرها در فایل .env.example
قرار دهید و به مخزن git اضافه کرد. زمانی که شما پروژه را در پچیم قرار میدهید، پچیم بررسی میکند که اگر فایلی با عنوان .env.example
وجود داشت آن به .env
تغییر میدهد و سپس شما از طریق بخش متغیرهای محیط برنامه میتوانید مقادیر آن را تغییر دهید.
ویژگی استقرار سریع پچیم یکی از آن دسته ویژگیهاییست که زندگی برنامهنویسان را راحتتر میکند، در نظر داشته باشید که شما تغییری را در پروژه انجام دادید و قصد دارید تغییرات را بر روی وبسایت خود نمایش دهید، برای اینکار نیاز است بعد از push کردن تغییرات بر روی مخزن گیت وارد پنل پچیم شوید و بر روی دکمه استقرار کلیک کنید تا تغییرات از مخزن گیت شما به سایت شما منتقل شود.
اما شما میتوانید با فعال سازی گزینهای با عنوان استقرار سریع از بخش اپلیکیشن در پچیم، کاری کنید که هر زمان عمل push بر روی مخزن git پروژتان انجام شد، تغییرات مورد نظر به شکل اتوماتیک بر روی سرور شما قرار بگیرند و با این کار شما نیاز به انجام هیچ کار اضافهای دیگری ندارید.
توجه کنید امکان استفاده از ویژگی استقرار سریع تنها برای مخزنهای گیت هاب و گیت لب وجود دارد
، اما اگر از مخزنهای سفارشی استفاده میکنید، میتوانید از طریق لینک درخواست استقرار
هر زمان که خواستید بهره ببرید و با فراخوانی این لینک درخواست استقرار در پروژه خود انجام دهید.
برای مثال این لینک را میتوانید در گیت سفارشی خود قرار دهید تا با هر بار push کردن درخواستی را به شکل POST یا GET به لینک درخواست استقرار شما ارسال کند.
بخش مهمی از پروسه استقرار، اسکریپت استقرار شماست، بخاطر اینکه مشخص میکند بعد از درخواست استقرار چه اتفاقی بر روی پروژه شما بیافتد، شما میتوانید از طریق پنل پچیم و بخش اپلیکیشن این اسکریپت را به هر روشی که مورد نیازتان بود تغییر دهید.
بر اساس نوع پروژه شما این اسکریپت استقرار متفاوت خواهد بود. برای مقال برای پروژه لاراولی به این شکل است که هر زمان اسکریپت استقرار انجام شد.
php artisan migrate
را اجرا کنید تا اگر فایل migration وجود داشت آن را بر روی سایت اجرا کند.همچنین اگر متغییرهای را در فایل .env
پروژه خود تعریف کردهاید که نیاز دارید در اسکریپت استقرار به آنها دسترسی پیدا کنید، تنها کافیست، گزینه فایل .env در استکریپت استقرار در دسترس باشد را فعال کنید. زمانی که اینکار را انجام دهید، متغییرهای داخل فایل .env همانند متغییرهای معمول اسکریپت bash در اختیار شما قرار میگیرند.
echo "${APP_NAME} is deploying ..."
اگر شما چندین ورژن از php را در سرور خود نصب کردهاید، ممکن است نیاز داشته باشید از طریق اسکریپت استقرار خود به ورژنهای مختلف PHP دسترسی پیدا کنید.
به شکل پیش فرض، اگر ورژنی از PHP را برای CLI انتخاب کنید با عنوان php
میتوانید همیشه از آن بهره ببرید، اما اگر در کنار ورژن پیشفرض قصد دارید به ورژنهای مختلف نیز دسترسی داشته باشید، تنها کافیست نام باینری آن را به شکل phpx.x
فراخوانی کنید، بجای x.x
میتوانید عدد ورژن را قرار دهید. (php8.0
)
در کنار اینکه شما میتوانید به متغییرهای فایل .env خود از طریق اسکریپت استقرار دسترسی داشته باشید ما در پچیم یک سری از متغییرهای مربوط به سایت و استقرار شما را نیز از طریق اسکریپت استقرار در اختیارتان قرار میدهیم تا بتوانید اسکریپت استقرار خود را تا جای که ممکن است شخصی سازی کنید.
کلیدها | توضیحات |
---|---|
PACHIM_COMPOSER |
آدرس مسیری که composer در آن نصب شده است. |
PACHIM_CUSTOM_DEPLOY |
اگر زمانی درخواست استقرار از طریق لینک اختصاصی درخواست استقرار، اجرا شود، مقدار این کد 1 خواهد شد. |
PACHIM_DEPLOY_AUTHOR |
نویسنده کامیت. |
PACHIM_DEPLOY_COMMIT |
هش مربوط به کامیتی که برای استقرار درخواست شده است. |
PACHIM_DEPLOY_MESSAGE |
پیام مربوط به کامیت. |
PACHIM_MANUAL_DEPLOY |
زمانی که درخواست استقرار از طریق دکمه استقرار جدید ، درخواست شود. مقدار این کلید 1 خواهد شد. |
PACHIM_PHP_FPM |
نام فرایند PHP-FPM که پچیم برای شما در حال استفاده است. |
PACHIM_PHP |
نام باینری PHP که بر روی سایت شما استفاده میشود. |
PACHIM_QUICK_DEPLOY |
زمانی که در خواست استقرار شما به روش استقرار سریع اجرا شده باشد، مقدار این کلید 1 خواهد شد. |
PACHIM_REDEPLOY |
اگر به هر دلیلی استقرار مورد نظر شما مجددا اجرا شود. |
PACHIM_SERVER_ID |
آی دی سروری که استقرار بر روی آن در حال انجام است. |
PACHIM_SITE_BRANCH |
نام شاخهای که در حال استقرار است. |
PACHIM_SITE_ID |
آی دی وبسایت شما در پچیم که استقرار بر روی آن در حال انجام است. |
PACHIM_SITE_PATH |
مسیری که استقرار بر روی آن انجام میشود. برای مثال /home/pachim/mysite.com |
PACHIM_SITE_USER |
نام کاربر سایت شما که استقرار بر روی آن انجا میشود. |
شما میتوانید برای مثال از از متغیرهای بالا به شکل زیر استفاده کنید.
if [[ $PACHIM_QUICK_DEPLOY -eq 1 ]]; then
echo "This deploy was triggered quick."
fi
برای مثال زمانی ممکن است شما بخواهید اگر کامیتی با متن wip
(به معنی Work-in-Progress) بر روی مخزن push شد، باعث آپدیت شدن وبسایت شما نشود، برای همین میتوانید از کد زیر در ابتدای اسکریپت استقرار استفاده کنید:
if [[ $PACHIM_DEPLOY_MESSAGE =~ "wip" ]]; then
echo "WORK IN PROGRESS, DO NOT CONTINUE."
exit 1
fi
متغییرهای مربوط به پچیم با _PACHIM
شروع میشوند بنابراین اگر پروژه شما دارای فایل .env
است و میخواهید متغیرهای آن در اسکریپت استقرار در دسترس باشد لطفا متغییرهای را با شروع _PACHIM
تعریف نکنید.
این ویژگی به شما کمک میکند استقرارهای بدون اختلال داشته باشید (البته با توجه به اینکه اسکریپت استقرار شما درست کار کند). شاید برایتان سؤال شود که این استقرار بدون اختلال به چه معنیست؟
زمانی که شما از استقرار بر روی پچیم استفاده میکنید به هر دلیلی ممکن است با اسکریپت استقرار، برای لحظاتی سایت از دسترس کاربرانتان خارج شود اما با استقرار بدون اختلال ورژن سایت شما در سه ورژن در سرورتان قرار میگیرد و این ویژگی سه ورژن سازی باعث میشود تا زمانی که استقرار سایت شما تکمیل نشد کدهای جدید با کدهای قدیمی جایگزین نشود و این موضوع باعث میشود استقرارهای شما بدون مختل کردن کدهای در حال اجرا، پردازش شده و در پروژه شما قرار بگیرند.
این سه ورژن به شکل زیر دستهبندی میشوند.
اگر شما در پروژه خود دایرکتوری storage دارید و مایلید که آن را در یک نقطه نگه دارید میتوانید در دایرکتوری '{site_domain}-deploy'
یک دایرکتوری storage برای پروژه خود ایجاد کنید و آن را به شکل symlink داخل پروژه خود مورد استفاده قرار دهید.
البته دقت کنید بعد از فعال سازی استقرار بدون اختلال ابتدا یکبار باید درخواست استقرار را اجرا کنید تا پروسه Zero Time Deployment بر روی پروژه شما انجام شود.
در حال کار بر روی پچیم برای ارائه قابلیت کار با CI هستیم و به زودی مستندات لازم برای روش انجام این کار را در اختیار شما قرار خواهیم داد.
گاهی اوقات ممکن است به هر دلیلی مکان قرار گیری مخزن گیت خود را تغییر دهید و بعد بخواهیم که این تغییر را بر روی پچیم هم انجام دهید. پچیم قابلیت انجام این کار را برای شما فراهم کرده که به سادگی و بدون نیاز به حذف و نصب مجدد اپلیکیشن خود و تنها با ورود به پنل پچیم و قسمت اپلیکیشن وبسایت از طریق ویرایش مخزن برنامه اینکار را انجام دهید.
توجه کنید که ویرایش Repository باعث نمیشود فایلها و کدهای موجود در وبسایتتان را تغییر کند، با انجام تغییر مخزن، تنها URL مربوط به git پروژه تغییر خواهد کرد، البته توجه داشته باشید برای آنکه این تغییر بدون مشکل انجام شود، مخزن جدیدی که وارد میکنید باید تماما با مخزن قبلی یکی باشد در غیر این صورت دچار مشکل خواهید شد، همچنین پیشنهاد میکنیم که اگر قصد نصب و راه اندازی مخزن تماما جدید را دارید، ابتدا این برنامه را حذف کنید و سپس اقدام به نصب مخزن جدید در وبسایت خود کنید.
شما میتوانید از طریق قسمت مدیریت نوتیفیکیشن سایت، کانالهای که برای ارسال نوتیفیکیشن به شما مشخص میشود را مورد استفاده قرار دهید، دقت کنید که این بخش برای ارسال نوتیفیکیشنهای مختلف از نوتیفیکیشن استقرار تا موارد دیگر مورد استفاده قرار خواهد گرفت.
در حال حاضر با مشخص کردن کانالهای ارسال نوتیفیکیشن
تلگرام یکی از پیام رسانهای محبوب در دنیا است که توسط افراد زیادی مورد استفاده قرار می گیرد. ما نیز در پچیم با دانستن این موضوع قابلیت ارسال نوتیفیکیشن بر بستر تلگرام را برای شما فراهم کردهایم.
برای فعال سازی این موضوع تنها کافیست ربات پچیم با عنوان pachim_bot
را به یک گروه اضافه کنید و بعد از اضافه کردن، دستوری که در صفحه مدیریت نوتیفیکیشن سایت مورد نظرتان برای اتصال ربات تلگرام به سایتتان وجود دارد را در گروه مورد نظر اجرا کنید، بدون نیاز به انجام کار دیگری اتصال ربات با سایت شما برقرار میشود و از این پس نوتیفیکیشنها به گروهی که ربات را به آن اضافه کردید، ارسال خواهد شد.
هر زمانی که قصد دارید گروه مربوط به ربات پچیم را تغییر دهید تنها کافیست از پنل مدیریت نوتیفیکیشنها بر روی دکمه غیرفعال سازی کنید و مجددا ربات را به گروه مورد نظر اضافه کرده و دستور را در آن گروه اجرا کنید.
گاهی شاید نیاز به این داشته باشید که با هر استقرار جدید اطلاعاتی را به یک URL خاص ارسال کنید، پچیم دقیقا این قابلیت را برای شما آماده کرده است، با مراجعه به صفحه مدیریت نوتیفکیشنهای سایت شما میتوانید یک وب هوک تعریف کنید و بعد از ثبت وب هوک، مواردی همچون استقرار موفق یا ناموفق به شکل درخواست POST به وب هوکی که مشخص کردید ارسال میشود.
بدنه درخواست POST که برای استقرار موفق برای شما ارسال میشود به شکل زیر است.
{
"status": "success",
"server": {
"id": "9777e106-001e-49d2-aed9-d29f86bceeda",
"name": "your-server-name"
},
"site": {
"id": "97880d6c-b4a7-43da-bc1e-c8c5d2dd8bfe",
"name": "site.com"
},
"commit_hash": "13ca9f66aed3daf00fff565239ff519be0a460c7",
"commit_url": "https://github.com/johndoe/my-biggest-idea/commit/13ca9f66aed3daf00fff565239ff519be0a460c7",
"commit_author": "Mamadeshon :)",
"commit_message": "Fix a F*** Bug!"
}
در درخواست ناموفق تنها status برابر با failed خواهد بود، همچنین اگر از گیت سفارشی استفاده کرده باشید، ممکن است مقادیر commit_message, commit_author, commit_url ,commit_hash برای شما ارسال نشود.
در صورت اینکه سایت شما یک استقرار ناموفق داشته باشد این استقرار ناموفق با نوتیفیکیشن به ایمیل شما اطلاع داده خواهد شد، در صورت اینکه مایل هستید برای هر سال به یک ایمیل بهخصوص این اطلاع رسانی انجام شود، تنها کافیست ایمیل مورد نظر را در صفحه مدیریت نوتیفیکیشن سایت در قسمت ایمیل وارد کنید.