نصب و استفاده از کامپوزر (Composer) روی دبیان ۹ و اوبونتو ۱۸.۰۴ — راهنمای جامع
کامپوزر یک ابزار رایج برای مدیریت وابستگی در PHP است که به طور عمده برای تسهیل نصب و بهروزرسانیهای وابستگیهای پروژهها استفاده میشود. این ابزار بررسی میکند که یک پروژه خاص به چه پروژههای دیگری وابسته است و آنها را با استفاده از نسخههای مناسب بر اساس نیازمندیهای پروژه نصب میکند. در این راهنما کامپوزر را روی یک سرور دبیان یا اوبونتو نصب کرده و شروع به استفاده از آن میکنیم.
پیشنیازها
برای تکمیل این راهنما به موارد زیر نیاز داریم:
یک سرور دبیان 9 به همراه یک کاربر غیر root با دسترسی sudo و فایروالی که پیکربندی شده است.
گام 1 – نصب وابستگیها
پیش از دانلود و نصب کامپوزر، مطمئن شوید که همه وابستگیهای مورد نیاز بر روی سرور شما نصب شدهاند.
ابتدا کش ابزار مدیریت بسته را با استفاده از دستور زیر بهروزرسانی کنید:
sudo apt update
اینک وابستگیها را نصب میکنیم. برای دانلود، نصب و اجرای کامپوزر و php-cli به curl نیاز داریم. بسته php-mbstring برای ارائه تابعها در کتابخانهای که استفاده خواهیم کرد مورد نیاز است. git از سوی کامپوزر برای دانلود وابستگیهای پروژهها استفاده میشود و unzip برای استخراج بستههای فشرده مورد استفاده قرار میگیرد. همه موارد فوق با دستور زیر قابل نصب هستند:
sudo apt install curl php-cli php-mbstring git unzip
زمانی که این پیشنیازها نصب شدند میتوانیم خود کامپوزر را نصب کنیم.
گام 2 – دانلود و نصب کامپوزر
کامپوزر یک برنامه نصب دارد که در PHP نوشته شده است. آن را دانلود میکنیم، بررسی میکنیم که فایل خراب نباشد و سپس کامپوزر را نصب میکنیم. ابتدا مطمئن شوید که در دایرکتوری home هستید، سپس فایل نصب را با استفاده از curl دانلود کنید:
cd ~ curl -sS https://getcomposer.org/installer -o composer-setup.php
سپس تأیید کنید که هَش SHA-384 با هش آخرین فایل نصبی که در صفحه [Composer Public Keys / Signatures][composer-sigs] قرار دارد، منطبق است. هش را از آن صفحه کپی کرده و به صورت یک متغیر شِل ذخیره میکنیم:
HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061
سپس اطمینان حاصل کنید که آخرین هش را برای مقدار هایلایت شده، جایگزین کردهاید. اینک اسکریپت PHP زیر را اجرا کرده و تأیید کنید که اسکریپت نصب برای نصب امن است:
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
خروجی زیر مشاهده میشود:
Installer verified
اگر پیام را دیدید، در این صوت باید اسکریپت نصب را دوباره دانلود کرده و مجدداً بررسی کنید که هش صحیح است یا نه. سپس دستور تأیید نصب را مجدد اجرا کنید. زمانی که نصب تأیید شد، میتوانید به کار خود ادامه دهید.
برای نصب سراسری کامپوزر باید از دستور زیر استفاده کنید که کامپوزر را به عنوان یک نام دستور در سطح سیستم به صورت composer در دایرکتوری usr/local/bin/ نصب میکند:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
خروجی زیر مشاهده میشود:
All settings correct for using Composer Downloading... Composer (version 1.7.2) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
برای تست نصب دستور زیر را اجرا کنید:
Composer
در این زمان خروجی زیر را میبینید که نسخه کامپوزر و آرگومانهای آن را نشان میدهد:
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.7.2 2018-08-16 16:57:12 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .
بدن ترتیب تأیید میشود که کامپوزر با موفقیت روی سیستم نصب شده و در سطح سیستم در دسترس است.
توجه داشته باشید که اگر فایلهای اجرایی کامپوزر را برای هر پروژهای که روی سرور میزبانی میکنید از هم جدا کنید، میتوانید آن را به صورت محلی بر مبنای هر پروژه نصب کنید. کاربران NPM با این رویکرد آشنا هستند. این روش همچنین هنگامی که کاربر سیستم شما دسترسی نصب در سطح سیستم ندارد، مفید خواهد بود.
برای انجام این کار از دستور php composer-setup.php استفاده میکنیم. بدین ترتیب یک فایل composer.phar در دایرکتوری موجود ایجاد میشود که میتوان با استفاده از دستور composer.phar/. آن را اجرا کرد.
در این زمان از کامپوزر برای مدیریت وابستگیها استفاده میکنیم.
گام 3 – استفاده از کامپوزر در یک پروژه PHP
پروژههای پیاچپی غالباً به کتابخانههای خارجی وابسته هستند و مدیریت این وابستگیها و نسخههای آنها میتواند مسئلهای پیچیده باشد. کامپوزر این وضعیت را با ردگیری وابستگیها و سادهسازی مراحل نصب آنها حل کرده است.
برای استفاده از کامپوزر در پروژهتان باید یک فایل composer.json داشته باشید. فایل composer.json به کامپوزر میگوید که وابستگیها باید برای یک پروژه دانلود شوند و کدام نسخه از هر بسته مجاز به نصب است. این مسئله برای یکپارچه نگهداشتن پروژه شما و احتراز از نصب نسخههای ناپایدار که میتواند موجب مشکلات در انطباق با نسخههای پیشین شود، بسیار مهم است.
نیاز نیست که این فایل را به صوت دستی ایجاد کنیم، چون در این صورت به احتمال زیاد با خطا مواجه میشوید. کامپوزر زمانی که با استفاده از دستور required یک وابستگی به پروژه خود اضافه میکنید، فایل composer.json را به طور خودکار ایجاد میکند. میتوانید وابستگیهای بیشتری را به روش مشابه بدون نیاز به ویرایش دستی این فایل اضافه کنید.
فرایند استفاده از کامپوزر برای نصب یک بسته به عنوان وابستگی در یک پروژه شامل مراحل زیر است:
- شناسایی این که اپلیکیشن به چه نوع کتابخانهای نیاز دارد.
- تحقیق در مورد یک کتابخانه متن-باز مناسب روی Packagist.org که مخزن رسمی بستههای کامپوزر است.
- انتخاب بستهای که میخواهید وابستگیاش را ایجاد کنید.
- اجرای دستور composer required برای گنجاندن وابستگی در فایل composer.json و نصب بسته.
برای وضوح بیشتر در ادامه با یک اپلیکیشن نمونه این وضعیت را بررسی میکنیم. هدف از این اپلیکیشن تبدیل یک جمله مفروض به رشتهای شبیه URL است. این اپلیکیشن در تبدیل عناوین صفحهها به مسیرهای URL یعنی slug متداول است (برای مثال به بخش نهایی URL این صفحه دقت کنید). ابتدا یک دایرکتوری برای پروژه خود ایجاد میکنیم که آن را slugify مینامیم:
cd ~ mkdir slugify cd slugify
اینک زمان آن رسیده است که به وبسایت packagist.org برویم و به دنبال بستهای که برای ایجاد slug کمک میکند بگردیم. اگر به دنبال کلمه slug بگردیم، نتایجی مانند تصویر زیر را مشاهده میکنیم:
در سمت راست هر بسته در فهرست فوق دو عدد را مشاهده میکنید. عدد بالایی نشان دهنده تعداد دفعاتی است که بسته نصب شده و عدد پایین تعداد ستارههایی که در گیتهاب دریافت کرده است را نمایش میدهد. شما میتوانید نتایج جستجو را بر اساس این اعداد مرتبسازی کنید. به طور کلی بستههایی که نصب و ستارههای بیشتری دارند، پایداری بیشتری دارند، چون افراد زیادی از آنها استفاده میکنند. همچنین بررسی توضیحات بسته برای اطمینان از ارتباط با نیازهای ما، حائز اهمیت است.
ما در پروژه خود به یک مبدل ساده برای تبدیل رشته متنی به slug نیاز داریم. در نتایج جستجو، بسته cocur/slugify در ظاهر مطابقت مناسبی دارد و مقدار معقولی از نصب و ستاره دارد. این بسته در تصویر فوق کمی پایینتر از محدوده اسکرینشات قرار دارد.
بستههای روی Packagist یک نام vendor و یک نام package دارند. هر بسته یک آیدی منحصر به فرد (یک فضای نام) در همان فرمتی که گیتهاب برای مخازن خود استفاده میکند، (یعنی به شکل vendor/package) دارد. کتابخانهای که میخواهیم نصب کنیم از فضای نام cocur/slugif استفاده میکند. شما برای الزام (require) کردن بسته در پروژه خودتان به این فضای نام نیاز دارید.