اگر دنبال چیزی میگردی

استقرارها

جدول محتوا

بررسی اجمالی

استقرار به پروسه‌ای گفته می‌شود که کدهای پروژه شما از مخزن پروژه (معمولا در گیت‌هاب/ گیت‌لب/ گیت سفارشی) دریافت می‌شود و در سرورتان در دایرکتوری پروژه قرار می‌گیرد.

ما در پچیم خروجی ۱۰ استقرار آخر برنامه شما را ذخیره می‌کنیم تا از وضعیت استقرارهای خود از طریق پنل پچیم آگاه شوید و همچنین می‌توانید خروجی کد اسکریپت استقرار خود را نیز از طریق هر کدام مشاهده کنید، تا در صورت وجود مشکل، آن را بفهمید و حل کنید.

متغییرهای محیط‌ برنامه

بعضی از برنامه‌ها و پروژه‌ها از قابلیت متغیرهای محیط برنامه استفاده می‌کنند که با استفاده از فایل .env در مسیر اصلی پروژه مورد استفاده قرار می‌گیرد، برای مثال در یک پروژه لاراول این فایل نقش اساسی را در پیکربندی پروژه انجام می‌دهد. برای همین در پنل سایت پچیم بخشی را بوجود آورده‌ایم با عنوان متغییرهای محیط برنامه که با استفاده از آن می‌توانید محتوای فایل .env را تغییر دهید و اگر این فایل اصلا وجود ندارد با استفاده از این بخش این فایل را با محتوای جدید ایجاد کنید.

ساخت اتوماتیک .env

فایل‌های .env را به هیچ وجه نباید به مخزن git اضافه کرد، اما می‌توانید همان فایل را بدون مقادیر حساس، تنها با اسم متغیرها در فایل .env.example قرار دهید و به مخزن git اضافه کرد. زمانی که شما پروژه را در پچیم قرار می‌دهید، پچیم بررسی می‌کند که اگر فایلی با عنوان .env.example وجود داشت آن به .env تغییر می‌دهد و سپس شما از طریق بخش متغیرهای محیط برنامه می‌توانید مقادیر آن را تغییر دهید.

استقرار سریع

ویژگی استقرار سریع پچیم یکی از آن دسته ویژگی‌هایی‌ست که زندگی برنامه‌نویسان را راحت‌تر می‌کند، در نظر داشته باشید که شما تغییری را در پروژه انجام دادید و قصد دارید تغییرات را بر روی وبسایت خود نمایش دهید، برای اینکار نیاز است بعد از push کردن تغییرات بر روی مخزن گیت وارد پنل پچیم شوید و بر روی دکمه استقرار کلیک کنید تا تغییرات از مخزن گیت شما به سایت شما منتقل شود.

اما شما می‌توانید با فعال سازی گزینه‌ای با عنوان استقرار سریع از بخش اپلیکیشن در پچیم، کاری کنید که هر زمان عمل push بر روی مخزن git پروژتان انجام شد، تغییرات مورد نظر به شکل اتوماتیک بر روی سرور شما قرار بگیرند و با این کار شما نیاز به انجام هیچ کار اضافه‌ای دیگری ندارید.

استفاده از مخزن‌های سفارشی

توجه کنید امکان استفاده از ویژگی استقرار سریع تنها برای مخزن‌های گیت هاب و گیت لب وجود دارد، اما اگر از مخزن‌های سفارشی استفاده می‌کنید، می‌توانید از طریق لینک درخواست استقرار هر زمان که خواستید بهره ببرید و با فراخوانی این لینک درخواست استقرار در پروژه خود انجام دهید.

برای مثال این لینک را می‌توانید در گیت سفارشی خود قرار دهید تا با هر بار push کردن درخواستی را به شکل POST یا GET به لینک درخواست استقرار شما ارسال کند.

اسکریپت استقرار

بخش مهمی از پروسه استقرار، اسکریپت استقرار شماست، بخاطر اینکه مشخص می‌کند بعد از درخواست استقرار چه اتفاقی بر روی پروژه شما بی‌افتد، شما می‌توانید از طریق پنل پچیم و بخش اپلیکیشن این اسکریپت را به هر روشی که مورد نیازتان بود تغییر دهید.

بر اساس نوع پروژه شما این اسکریپت استقرار متفاوت خواهد بود. برای مقال برای پروژه لاراولی به این شکل است که هر زمان اسکریپت استقرار انجام شد.

  1. وارد دایرکتوری پروژه شما شود.
  2. دستور git pull را برای دریافت آخرین تغییرات از مخزن git اجرا کند.
  3. پکیج‌های مورد نیاز را با composer نصب کند.
  4. در نهایت دستور 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
از متغییرهای رزرو استفاده نکنید

متغییرهای مربوط به پچیم با _PACHIM شروع می‌شوند بنابراین اگر پروژه شما دارای فایل .env است و می‌خواهید متغیرهای آن در اسکریپت استقرار در دسترس باشد لطفا متغییرهای را با شروع _PACHIM تعریف نکنید.

استقرار بدون اختلال (Zero Downtime Deployment)

این ویژگی به شما کمک می‌کند استقرارهای بدون اختلال داشته باشید (البته با توجه به اینکه اسکریپت استقرار شما درست کار کند). شاید برایتان سؤال شود که این استقرار بدون اختلال به چه معنی‌ست؟

زمانی که شما از استقرار بر روی پچیم استفاده می‌کنید به هر دلیلی ممکن است با اسکریپت استقرار، برای لحظاتی سایت از دسترس کاربرانتان خارج شود اما با استقرار بدون اختلال ورژن سایت شما در سه ورژن در سرورتان قرار می‌گیرد و این ویژگی سه ورژن سازی باعث می‌شود تا زمانی که استقرار سایت شما تکمیل نشد کدهای جدید با کدهای قدیمی جایگزین نشود و این موضوع باعث می‌شود استقرارهای شما بدون مختل کردن کدهای در حال اجرا، پردازش شده و در پروژه شما قرار بگیرند.

این سه ورژن به شکل زیر دسته‌بندی می‌شوند.

  • نسخه قدیمی
  • نسخه اخیر
  • نسخه فعلی

اگر شما در پروژه خود دایرکتوری storage دارید و مایلید که آن را در یک نقطه نگه دارید می‌توانید در دایرکتوری '{site_domain}-deploy' یک دایرکتوری storage برای پروژه خود ایجاد کنید و آن را به شکل symlink داخل پروژه خود مورد استفاده قرار دهید.

البته دقت کنید بعد از فعال سازی استقرار بدون اختلال ابتدا یکبار باید درخواست استقرار را اجرا کنید تا پروسه Zero Time Deployment بر روی پروژه شما انجام شود.

توسعه با CI

در حال کار بر روی پچیم برای ارائه قابلیت کار با 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 برای شما ارسال نشود.

ایمیل

در صورت اینکه سایت شما یک استقرار ناموفق داشته باشد این استقرار ناموفق با نوتیفیکیشن به ایمیل شما اطلاع داده خواهد شد، در صورت اینکه مایل هستید برای هر سال به یک ایمیل به‌خصوص این اطلاع رسانی انجام شود، تنها کافیست ایمیل مورد نظر را در صفحه مدیریت نوتیفیکیشن سایت در قسمت ایمیل‌ وارد کنید.

تغییر این صفحه در گیت‌هاب