بررسی اجمالی #
استقرار به پروسهای گفته میشود که کدهای پروژه شما از مخزن پروژه (معمولا در گیتهاب/ گیتلب/ گیت سفارشی) دریافت میشود و در سرورتان در دایرکتوری پروژه قرار میگیرد.
ما در پچیم خروجی ۱۰ استقرار آخر برنامه شما را ذخیره میکنیم تا از وضعیت استقرارهای خود از طریق پنل پچیم آگاه شوید و همچنین میتوانید خروجی کد اسکریپت استقرار خود را نیز از طریق هر کدام مشاهده کنید، تا در صورت وجود مشکل، آن را بفهمید و حل کنید.
متغییرهای محیط برنامه #
بعضی از برنامهها و پروژهها از قابلیت متغیرهای محیط برنامه استفاده میکنند که با استفاده از فایل .env
در مسیر اصلی پروژه مورد استفاده قرار میگیرد، برای مثال در یک پروژه لاراول این فایل نقش اساسی را در پیکربندی پروژه انجام میدهد. برای همین در پنل سایت پچیم بخشی را بوجود آوردهایم با عنوان متغییرهای محیط برنامه که با استفاده از آن میتوانید محتوای فایل .env
را تغییر دهید و اگر این فایل اصلا وجود ندارد با استفاده از این بخش این فایل را با محتوای جدید ایجاد کنید.
استقرار سریع #
ویژگی استقرار سریع پچیم یکی از آن دسته ویژگیهاییست که زندگی برنامهنویسان را راحتتر میکند، در نظر داشته باشید که شما تغییری را در پروژه انجام دادید و قصد دارید تغییرات را بر روی وبسایت خود نمایش دهید، برای اینکار نیاز است بعد از push کردن تغییرات بر روی مخزن گیت وارد پنل پچیم شوید و بر روی دکمه استقرار کلیک کنید تا تغییرات از مخزن گیت شما به سایت شما منتقل شود.
اما شما میتوانید با فعال سازی گزینهای با عنوان استقرار سریع از بخش اپلیکیشن در پچیم، کاری کنید که هر زمان عمل push بر روی مخزن git پروژتان انجام شد، تغییرات مورد نظر به شکل اتوماتیک بر روی سرور شما قرار بگیرند و با این کار شما نیاز به انجام هیچ کار اضافهای دیگری ندارید.
اسکریپت استقرار #
بخش مهمی از پروسه استقرار، اسکریپت استقرار شماست، بخاطر اینکه مشخص میکند بعد از درخواست استقرار چه اتفاقی بر روی پروژه شما بیافتد، شما میتوانید از طریق پنل پچیم و بخش اپلیکیشن این اسکریپت را به هر روشی که مورد نیازتان بود تغییر دهید.
بر اساس نوع پروژه شما این اسکریپت استقرار متفاوت خواهد بود. برای مقال برای پروژه لاراولی به این شکل است که هر زمان اسکریپت استقرار انجام شد.
- وارد دایرکتوری پروژه شما شود.
- دستور git pull را برای دریافت آخرین تغییرات از مخزن git اجرا کند.
- پکیجهای مورد نیاز را با composer نصب کند.
- در نهایت دستور
php artisan migrate
را اجرا کنید تا اگر فایل migration وجود داشت آن را بر روی سایت اجرا کند.
همچنین اگر متغییرهای را در فایل .env
پروژه خود تعریف کردهاید که نیاز دارید در اسکریپت استقرار به آنها دسترسی پیدا کنید، تنها کافیست، گزینه فایل .env در استکریپت استقرار در دسترس باشد را فعال کنید. زمانی که اینکار را انجام دهید، متغییرهای داخل فایل .env همانند متغییرهای معمول اسکریپت bash در اختیار شما قرار میگیرند.
echo "${APP_NAME} is deploying ..."
ورژن PHP در استقرار #
اگر شما چندین ورژن از 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
استقرار بدون اختلال (Zero Downtime Deployment) #
این ویژگی به شما کمک میکند استقرارهای بدون اختلال داشته باشید (البته با توجه به اینکه اسکریپت استقرار شما درست کار کند). شاید برایتان سؤال شود که این استقرار بدون اختلال به چه معنیست؟
زمانی که شما از استقرار بر روی پچیم استفاده میکنید به هر دلیلی ممکن است با اسکریپت استقرار، برای لحظاتی سایت از دسترس کاربرانتان خارج شود اما با استقرار بدون اختلال ورژن سایت شما در سه ورژن در سرورتان قرار میگیرد و این ویژگی سه ورژن سازی باعث میشود تا زمانی که استقرار سایت شما تکمیل نشد کدهای جدید با کدهای قدیمی جایگزین نشود و این موضوع باعث میشود استقرارهای شما بدون مختل کردن کدهای در حال اجرا، پردازش شده و در پروژه شما قرار بگیرند.
این سه ورژن به شکل زیر دستهبندی میشوند.
- نسخه قدیمی
- نسخه اخیر
- نسخه فعلی
اگر شما در پروژه خود دایرکتوری storage دارید و مایلید که آن را در یک نقطه نگه دارید میتوانید در دایرکتوری '{site_domain}-deploy'
یک دایرکتوری storage برای پروژه خود ایجاد کنید و آن را به شکل symlink داخل پروژه خود مورد استفاده قرار دهید.
ویرایش مخزن برنامه #
گاهی اوقات ممکن است به هر دلیلی مکان قرار گیری مخزن گیت خود را تغییر دهید و بعد بخواهیم که این تغییر را بر روی پچیم هم انجام دهید. پچیم قابلیت انجام این کار را برای شما فراهم کرده که به سادگی و بدون نیاز به حذف و نصب مجدد اپلیکیشن خود و تنها با ورود به پنل پچیم و قسمت اپلیکیشن وبسایت از طریق ویرایش مخزن برنامه اینکار را انجام دهید.
توجه کنید که ویرایش 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 برای شما ارسال نشود.
ایمیل #
در صورت اینکه سایت شما یک استقرار ناموفق داشته باشد این استقرار ناموفق با نوتیفیکیشن به ایمیل شما اطلاع داده خواهد شد، در صورت اینکه مایل هستید برای هر سال به یک ایمیل بهخصوص این اطلاع رسانی انجام شود، تنها کافیست ایمیل مورد نظر را در صفحه مدیریت نوتیفیکیشن سایت در قسمت ایمیل وارد کنید.