مقدمه
Composer مدیر بستهٔ پیشفرض PHP است که برای مدیریت وابستگیهای پروژه استفاده میشود. در محیطهای عادی، Composer مستقیماً از مخزن اصلی packagist.org بستهها را دانلود میکند. اما در محیطهای ایزوله (Airgap) که دسترسی به اینترنت محدود یا قطع است، باید Composer را بهگونهای تنظیم کنیم که از یک mirror داخلی استفاده کند. این پست صرفاً به تنظیمات سمت کلاینت میپردازد; برای راهاندازی سرویس mirror به پست «راهاندازی Composer Mirror/Cache» مراجعه کنید.
تنظیم composer.json
سادهترین روش اضافه کردن مخزن داخلی، ویرایش مستقیم فایل composer.json پروژه است. کلید repositories را به فایل اضافه کنید:
{
"repositories": [
{
"type": "composer",
"url": "https://YOUR_MIRROR_URL"
}
],
"require": {
"laravel/framework": "^10.0"
}
}پس از این تنظیم، Composer ابتدا بستهها را از mirror شما جستجو میکند. اگر بستهای در mirror نباشد، به صورت پیشفرض به packagist.org مراجعه میکند (میتوانید این رفتار را در بخشهای بعدی تغییر دهید).
تنظیم با دستور composer
اگر ترجیح میدهید فایل composer.json را دستی ویرایش نکنید، از دستور زیر استفاده کنید:
composer config repos.local composer https://YOUR_MIRROR_URLاین دستور یک مخزن با نام local از نوع composer به پروژه اضافه میکند. میتوانید به جای local از هر نام دلخواه دیگری استفاده کنید.
استفاده از فایل auth.json
اگر mirror شما نیاز به احراز هویت دارد (مثلاً با توکن یا نام کاربری/رمز عبور)، اطلاعات را در فایل auth.json قرار دهید. این فایل را در کنار composer.json ایجاد کنید:
{
"http-basic": {
"YOUR_MIRROR_URL": {
"username": "your-username",
"password": "your-password"
}
}
}نکته: فایلauth.jsonرا به.gitignoreاضافه کنید تا اطلاعات حساس در مخزن git ثبت نشود.
غیرفعال کردن external URLs
برای اطمینان از اینکه Composer هیچ درخواستی به اینترنت ارسال نمیکند، دو تنظیم مهم وجود دارد:
- secure-http: با فعال کردن این گزینه، Composer فقط از پروتکل HTTPS استفاده میکند. اگر mirror شما روی HTTPS در دسترس است (توصیه میشود)، این گزینه را فعال بگذارید:
composer config secure-http true - غیرفعال کردن Packagist: برای جلوگیری از مراجعه به مخزن اصلی، میتوانید Packagist را به طور کامل غیرفعال کنید. این کار در فایل
composer.jsonانجام میشود:"packagist": false
یا با دستور:composer config repositories.packagist false
تست تنظیمات
پس از اعمال تنظیمات، با دستور زیر صحت عملکرد mirror را بررسی کنید:
composer install --verboseدر خروجی باید آدرس mirror شما به جای packagist.org نمایش داده شود. اگر خطایی رخ داد، موارد زیر را بررسی کنید:
- دسترسی شبکه به mirror از سرور یا سیستم خود دارید؟
- گواهی SSL mirror معتبر است؟ (در غیر این صورت
secure-httpرا موقتاً غیرفعال کنید) - آدرس mirror را درست وارد کردهاید؟
با این تنظیمات ساده، پروژه شما در محیط Airgap بدون مشکل وابستگیهای خود را از mirror داخلی دریافت میکند.