Composer یک ابزار مدیریت وابستگی محبوب برای PHP است که عمدتاً برای تسهیل نصب و به روزرسانی برای متعلقات پروژه ایجاد شده است. این ابزار بررسی خواهد کرد که یک پروژه خاص به چه بسته های دیگری متکی است و با استفاده از نسخه های مناسب با توجه به نیاز پروژه ، آنها را برای شما نصب می کند. Composer همچنین معمولاً برای راه اندازی پروژه های جدید بر اساس چارچوب های محبوب PHP مانند Symfony و Laravel استفاده می شود.
در این آموزش ، نصب و شروع Composer را روی یک سیستم Ubuntu 20.04 بررسی می کنید.
پیش نیازها
برای دنبال کردن این راهنما ، به عنوان یک کاربر sudo غیر ریشه به یک سرور مجازی Ubuntu 20.04 و یک فایروال فعال شده روی سرور مجازی خود نیاز دارید. برای انجام این کار، می توانید راهنمای تنظیم اولیه سرور مجازی ما برای اوبونتو 20.04 را دنبال کنید.
مرحله 1 – نصب PHP و متعلقات اضافی
علاوه بر متعلقاتی که قبلاً باید درون سیستم اوبونتو 20.04 شما مانند git و curl وجود داشته باشد ، Composer برای اجرای اسکریپت های PHP در خط فرمان ، به php-cli نیز و برای اکسترکت بایگانی های zip شده به unzip نیاز دارد. اکنون این وابستگی ها را نصب خواهیم کرد.
ابتدا حافظه نهان مدیر بسته را با اجرای این دستور به روز کنید:
⦁ $ sudo apt update

در مرحله بعدی ، برای نصب بسته های مورد نیاز ، دستور زیر را اجرا کنید:
⦁ $ sudo apt install php-cli unzip

از شما خواسته می شود كه نصب را با تایپ Y و سپس ENTER تأیید كنید.
پس از نصب پیش نیازها ، می توانید به سراغ نصب Composer بروید.
مرحله 2 – دانلود و نصب Composer
Composer اسکریپت نصب کننده ای را فراهم می کند که به زبان PHP نوشته شده است. آن را دانلود خواهیم کرد ، و تأیید می کنیم که مشکلی ندارد ، و سپس از آن برای نصب Composer استفاده خواهیم کرد.
مطمئن شوید که در دیرکتوری هوم خود قرار دارید ، سپس نصب را با استفاده از curl بازیابی کنید:
⦁ $ cd ~

⦁ $ curl -sS https://getcomposer.org/installer -o composer-setup.php

در مرحله بعد ، تأیید خواهیم کرد که نصب کننده دانلود شده با هش SHA-384 برای جدیدترین نصب کننده در صفحه کلیدهای عمومی Composer / امضاها مطابقت دارد. برای تسهیل مرحله تأیید ، می توانید از دستور زیر استفاده کنید تا آخرین hash را از صفحه Composer به طور برنامه وار بدست آورید و آن را در متغیر پوسته ذخیره کنید:
⦁ $ HASH=`curl -sS https://composer.github.io/installer.sig`

اگر می خواهید مقدار به دست آمده را تأیید کنید ، می توانید این دستور را اجرا کنید:
⦁ $ echo $HASH

Output
e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a

اکنون کد PHP زیر را ، همانطور که در صفحه دانلود Composer ارائه شده است ، اجرا کنید تا تأیید کنید که اسکریپت نصب برای اجرا امن است:
⦁ $ php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘$HASH’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”

خروجی زیر را مشاهده خواهید کرد:
Output
Installer verified

اگر خروجی می گوید نصب کننده مشکل دارد ، باید اسکریپت نصب را بار دیگر دانلود کنید و بررسی کنید که از هش درست استفاده می کنید. سپس فرایند تأیید را تکرار کنید. وقتی یک نصب تأیید شده داشتید ، می توانید ادامه دهید.
برای نصب Composer در سطح جهانی ، از دستور زیر استفاده کنید که Composer را به عنوان یک فرمان در گستره سیستم به نام Composer تحت ، usr / local / bin دانلود و نصب می کند:
⦁ $ sudo php composer-setup.php –install-dir=/usr/local/bin –filename=composer

خروجی مشابه این را مشاهده خواهید کرد:
Output
All settings correct for using Composer
Downloading…

Composer (version 1.10.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

برای آزمایش نصب خود ، اجرا کنید:
⦁ $ composer

Output
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.5 2020-04-10 11:44:22

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.
–no-cache Prevent use of the cache
-v|vv|vvv, –verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

تأیید می کند که Composer با موفقیت روی سیستم شما نصب شده است و در سطح سیستم در دسترس است.
توجه: اگر ترجیح می دهید Composer قابل اجرای جداگانه برای هر پروژه ای که در این سرور مجازی میزبانی میکنید ، داشته باشید ، می توانید آن را به صورت محلی در هر پروژه نصب کنید. این روش همچنین زمانی مفید است که کاربر سیستم شما اجازه نصب نرم افزارهای گسترده در سیستم را ندارد.
برای این کار از دستور php Composer -setup.php استفاده کنید. با این کار یک فایل composer.phar در دایرکتوری فعلی شما ایجاد می شود ، که می تواند با php comper.phar اجرا شود.
اکنون بیایید به استفاده از Composer برای مدیریت وابستگی ها بپردازیم.
مرحله 3 – استفاده از Composer در یک پروژه PHP
پروژه های PHP اغلب به کتابخانه های خارجی متکی هستند ، و مدیریت آن وابستگی ها و نسخه های آنها می تواند مشکل باشد. Composer با پیگیری نسخه های پروژه و متعلقات آن ، این مشکل را حل می کند ، ضمن اینکه روند پیدا کردن ، نصب و به روزرسانی بسته های مورد نیاز یک پروژه را نیز تسهیل می کند.
برای استفاده از Composer در پروژه خود ، به یک فایل Composer .json احتیاج دارید. فایل composer.json به Composer می گوید که به کدام متعلقات برای دانلود برای پروژه شما نیاز دارد و نصب کدام نسخه های هر بسته مجاز است. بسیار مهم است که پروژه خود را ثابت نگه دارید و از نصب نسخه های ناپایدار که به طور بالقوه می تواند باعث ایجاد مشکلات سازگاری شود ، خودداری کنید.
لازم نیست این فایل را به صورت دستی ایجاد کنید – معمولا در هنگام انجام این کار با خطاهای نحوی روبرو میشوید. Composer یک روش تعاملی برای ایجاد یک فایل جدید Composer .json بر اساس ورودی کاربر ارائه می دهد ، اگر قصد دارید پروژه خود را بعدا به عنوان یک بسته عمومی در Packagist به اشتراک بگذارید ، گزینه خوبی است. وقتی فرمان composer require را اجرا میکنید، Composer همچنین یک فایل Composer .json ایجاد می کند تا یک وابستگی را در یک پروژه تازه ایجاد شده شامل شود.
مراحل استفاده از Composer برای نصب بسته به عنوان متعلقات در یک پروژه شامل مراحل زیر است:
• شناسایی کنید که برنامه به چه نوع کتابخانه ای نیاز دارد.
• در مورد كتابخانه منبع باز مناسب در Packagist.org ، مخزن رسمی بسته بندی Composer تحقیق کنید.
⦁ بسته ای را که می خواهید به آن متکی باشید انتخاب کنید.
• composer require را اجرا کنید تا وابستگی را در فایل Composer .json شامل شده و بسته را نصب کنید.
بیایید این کار را با یک برنامه آزمایشی امتحان کنیم.
هدف از این برنامه تبدیل یک جمله معین به یک رشته سازگار با URL است- یعنی یک slug.
این معمولاً برای تبدیل عناوین صفحه به مسیرهای URL استفاده می شود (مانند قسمت نهایی URL برای این آموزش)
بیایید با ایجاد دایرکتوری برای پروژه خود شروع کنیم. آن را slugify می نامیم:
⦁ $ cd ~

⦁ $ mkdir slugify

⦁ $ cd slugify

اگرچه لازم نیست ، اکنون می توانید یک دستور composer init را اجرا کنید تا یک فایل composer.jso مفصل را برای پروژه خود ایجاد کنید. از آنجا که تنها هدف پروژه ما نشان دادن چگونگی نصب متعلقات با Composer است ، از یک فایل ساده تر Composer .json استفاده خواهیم کرد که وقتی به اولین بسته خود احتیاج داریم ، به صورت خودکار تولید می شود.
اکنون زمان آن رسیده است که Packagist.org را برای بسته ای جستجو کنیم که می تواند در تولید slugs به ما کمک کند. اگر اصطلاح Slug را در Packagist جستجو کنید ، نتیجه ای مشابه این دریافت خواهید کرد:

در سمت راست هر بسته در لیست ، دو عدد مشاهده خواهید کرد. عدد بالا نشان می دهد که چند بار بسته از طریق Composer نصب شده است ، و عدد پایین نشان می دهد که چند بار بسته بندی در GitHub ستاره دار شده است. به طور کلی ، بسته هایی با نصب بیشتر و تعداد بیشتری ستاره ، پایداری بیشتری دارند ، زیرا بسیاری از افراد از آنها استفاده می کنند. همچنین مهم است که توضیحات بسته را برای میزان ارتباط بررسی کنید تا اطمینان حاصل کنید که به چه چیز نیاز دارید.
ما به مبدل string به slug نیاز داریم. از نتایج جستجو ، بسته Cocur / slugify که به عنوان اولین نتیجه در آن صفحه ظاهر می شود ، با تعداد معینی نصب و ستاره گزینه خوبی به نظر میرسد.
بسته های Packagist دارای نام vendor  و نام package  هستند. هر بسته دارای یک شناسه منحصر به فرد (یک فضای نام) در همان قالب است که GitHub برای مخازن خود استفاده می کند: vendor/package. کتابخانه ای که می خواهیم نصب کنیم از فضای نام cocur / slugify استفاده می کند. برای اینکه در پروژه خود آن را به کار بگیرید ، به فضای نام بسته نیاز دارید.
اکنون که می دانید دقیقاً کدام پکیج را می خواهید نصب کنید ، می توانید composer require را اجرا کنید ، باید آن را به عنوان یک وابستگی در نظر بگیرید و همچنین فایل Composer .json را برای پروژه خود تولید کنید. نکته ای که هنگام به کارگیری بسته ها باید توجه کنیم این است که Composer هم متعلقات سطح برنامه و هم متعلقات سطح سیستم را ردیابی می کند. متعلقات سطح سیستم برای نشان دادن اینکه بسته به کدامیک از ماژول های PHP متکی است مهم هستند. بسته Cocur / slugify ، به یک ماژول PHP نیاز دارد که ما هنوز نصب نکرده ایم.
هنگامی که یک بسته مورد نیاز به یک کتابخانه سیستمی که در حال حاضر روی سرور مجازی شما نصب نشده است متکی است ، با خطایی مبنی بر اینکه چه چیزی مورد نیاز است ، مواجه می شوید:
⦁ $ composer require cocur/slugify

Output
Using version ^4.0 for cocur/slugify
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Installation request for cocur/slugify ^4.0 -> satisfiable by cocur/slugify[v4.0.0].
– cocur/slugify v4.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.

برای حل مشکل وابستگی سیستم ، می توانیم با استفاده از apt search ، بسته گمشده را جستجو کنیم:
⦁ $ apt search mbstring

Output
Sorting… Done
Full Text Search… Done
php-mbstring/focal 2:7.4+75 all
MBSTRING module for PHP [default]

php-patchwork-utf8/focal 1.3.1-1 all
UTF-8 strings handling for PHP

php7.4-mbstring/focal 7.4.3-4ubuntu1 amd64
MBSTRING module for PHP

پس از یافتن نام درست بسته ، می توانید بار دیگر از apt برای نصب وابستگی سیستم استفاده کنید:
⦁ $ sudo apt install php-mbstring

پس از اتمام نصب ، مجدداً می توانید composer require را اجرا کنید:
⦁ $ composer require cocur/slugify

Output
Using version ^4.0 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
– Installing cocur/slugify (v4.0.0): Downloading (100%)
Writing lock file
Generating autoload files

همانطور که از خروجی مشاهده می کنید ، Composer به طور خودکار تصمیم گرفت از کدام نسخه از بسته استفاده کند. اگر اکنون دایرکتوری پروژه خود را بررسی کنید ، شامل دو فایل جدید خواهد بود: composer.json و composer.lock ، و یک دیرکتوری vendor:
⦁ $ ls -l

Output
total 12
-rw-rw-r– 1 sammy sammy 59 May 4 13:56 composer.json
-rw-rw-r– 1 sammy sammy 3229 May 4 13:56 composer.lock
drwxrwxr-x 4 sammy sammy 4096 May 4 13:56 vendor

از فایل composer.lock برای ذخیره اطلاعات در مورد این كه کدام یک از نسخه های هر بسته نصب شده است استفاده می شود و اطمینان حاصل می كند اگر شخص دیگری پروژه شما را كلون كند و متعلقات آن را نصب كند ، از نسخه های مشابه استفاده می شود. دایرکتوری vendor جایی است که وابستگی پروژه در آن واقع شده باشد. پوشه vendor نباید به کنترل نسخه متعهد باشد – فقط باید فایل های Composer .json و composer.lock را شامل شوید.
هنگام نصب پروژه ای که از قبل حاوی یک فایل composer.json است ، به منظور دانلود متعلقات پروژه ، composer install را اجرا کنید.

بیایید نگاهی اجمالی به محدودیت های نسخه بیندازیم. اگر محتویات فایل Composer .json خود را بررسی کنید ، چنین چیزی را مشاهده خواهید کرد:
⦁ $ cat composer.json

Output
{
“require”: {
“cocur/slugify”: “^4.0”
}
}

ممکن است متوجه کاراکتر خاص ^ قبل از شماره نسخه در Composer .json شوید. Composer از چندین محدودیت و فرمت مختلف برای تعریف نسخه بسته مورد نیاز پشتیبانی می کند ، به منظور ارائه انعطاف پذیری و در عین حال ثابت نگه داشتن پروژه شما. اپراتور caret (^) که توسط فایل تولید شده توسط composer.json ایجاد شده است ، طبق  semantic versioning ، اپراتور توصیه شده برای حداکثر قابلیت همکاری است. در این حالت ،  4.0 را به عنوان حداقل نسخه سازگار تعریف می کند و به روزرسانی های هر نسخه بعدی زیر  5.0 را امکان پذیر می کند.
به طور کلی ، لازم نیست که محدودیت های نسخه را در فایل Composer .json خود دستکاری کنید. با این حال ، در برخی از شرایط ممکن است نیاز باشد که شما محدودیت ها را به صورت دستی ویرایش کنید – برای مثال ، هنگامی که نسخه اصلی جدیدی از کتابخانه مورد نیاز شما منتشر میشود و می خواهید آن را ارتقا دهید ، یا وقتی کتابخانه ای که می خواهید از آن استفاده کنید ، نسخه معنایی (semantic versioning) را دنبال نمی کند.
در اینجا چند مثال برای درک بهتر نحوه عملکرد محدودیتهای نسخه Composer آورده شده است:
Constraint Meaning Example Versions Allowed
^1.0 >= 1.0 < 2.0 1.0, 1.2.3, 1.9.9
^1.1.0 >= 1.1.0 < 2.0 1.1.0, 1.5.6, 1.9.9
~1.0 >= 1.0 < 2.0.0 1.0, 1.4.1, 1.9.9
~1.0.0 >= 1.0.0 < 1.1 1.0.0, 1.0.4, 1.0.9
1.2.1 1.2.1 1.2.1
1.* >= 1.0 < 2.0 1.0.0, 1.4.5, 1.9.9
1.2.* >= 1.2 < 1.3 1.2.0, 1.2.3, 1.2.9

برای مشاهده دقیق تر محدودیت های نسخه Composer ، به مقالات رسمی مراجعه کنید.
در مرحله بعدی ، بیایید ببینیم که چگونه متعلقات را به طور خودکار با Composer لود کنیم.
مرحله 4 – مشمولیت اسکریپت Autoload
از آنجایی که خود PHP کلاسها را به طور خودکار لود نمی کند ، Composer یک اسکریپت autoload را فراهم می کند که می توانید در پروژه خود بگنجانید تا بتوانید از عملکرد لود خودکار برای پروژه خود استفاده کنید. این فایل با افزودن اولین وابستگی ، توسط Composer به طور خودکار تولید می شود.
تنها کاری که شما باید انجام دهید اینست که فایل vendor/autoload.php را در اسکریپت های PHP خود قبل معرفی و نمونه سازی کلاس بگنجانید.
بیایید آن را در برنامه نسخه ی نمایشی خود امتحان کنیم. فایل جدیدی به نام test.php را در ویرایشگر متن خود باز کنید:
⦁ $ nano test.php

کد زیر را اضافه کنید که فایل vendor/autoload.php را وارد می کند ، وابستگی Cocur / slugify را لود می کند ، و از آن برای ایجاد یک slug استفاده می کند:
test.php
<?php
require __DIR__ . ‘/vendor/autoload.php’;

use Cocur\Slugify\Slugify;

$slugify = new Slugify();

echo $slugify->slugify(‘Hello World, this is a long sentence and I need to make a slug from it!’);

فایل را ذخیره کنید و از ویرایشگر خود خارج شوید.
اکنون اسکریپت را اجرا کنید:
⦁ $ php test.php

خروجی زیر را ایجاد میکند:
hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
هنگام انتشار نسخه های جدید، متعلقات به آپدیت نیاز دارند ، بنابراین بیایید ببینیم چگونه این کار را انجام دهیم
مرحله 5 – بروزرسانی متعلقات پروژه
هر زمان که می خواهید متعلقات پروژه خود را به نسخه های جدیدتر بروزرسانی کنید ، دستور update  را اجرا کنید:
⦁ $ composer update

با این کار نسخه های جدیدتری از کتابخانه های مورد نیاز پروژه شما جستجو می شوند. اگر نسخه جدیدتری پیدا شود و با محدودیت نسخه تعریف شده در فایل composer.json سازگار باشد ، Composer نسخه جدید را جایگزین قبلی می کند. فایل composer.lock به روز خواهد شد تا این تغییرات را منعکس کند.
همچنین می توانید یک یا چند کتابخانه خاص را با مشخص کردن آنها مانند این به روز کنید:
⦁ $ composer update vendor/package vendor2/package2

بعد از به روزرسانی متعلقات خود ، حتماً فایل های Composer .json و composer.lock را در سیستم کنترل نسخه خود بررسی کنید تا دیگران بتوانند این نسخه های جدیدتر را نیز نصب کنند.
نتیجه
Composer ابزاری قدرتمند است که می تواند کارآیی مدیریت متعلقات را در پروژه های PHP تا حد زیادی تسهیل کند. و یک روش مطمئن برای کشف ، نصب و به روز رسانی بسته های PHP فراهم می کند که یک پروژه به آن بستگی دارد. در این راهنما ، ما چگونگی نصب Composer ، چگونگی گنجاندن متعلقات جدید در یک پروژه و نحوه به روزرسانی این متعلقات را در صورت وجود نسخه های جدید ، بررسی کردیم.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نصب و پیکربندی Ansible در اوبونتو 18.04 – نصب MySQL در اوبونتو 18.04

نظارت بر سلامت سرور با Checkmk در اوبونتو – اجرای چند نسخه PHP بر روی یک سرور

نصب Nginx، MySQL، PHP در CentOS 7 –  نصب و پیکربندی Elasticsearch در اوبونتو 18.04

راه اندازی سرور اولیه با اوبونتو 20.04 – تنظیم کلیدهای SSH در Ubuntu 20.04

نصب و استفاده از PostgreSQL در اوبونتو 20.0 – نحوه نصب MySQL در اوبونتو 20.04

نصب Python 3 روی سرور Ubuntu 18.04 –  نحوه نصب Python 3 روی سرور Ubuntu 20.04

نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04 –  نصب وب سرور Apache در CentOS 8

نحوه نصب Drupal با Docker Compose –  نحوه نصب Nginx در اوبونتو 20.04

7 مورد از اقدامات امنیتی برای محافظت از سرورهای شما –  نحوه نصب و ایمن سازی Redis در اوبونتو 20.04

نحوه نصب و ایمن سازی Redis در اوبونتو 18.04اضافه کردن فضای Swap در اوبونتو 20.04

چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کردنظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04

نصب و ایمن سازی phpMyAdmin در اوبونتو 20.04  –  نصب و استفاده از Composer در اوبونتو 20.04

ریست کردن رمز ورود ریشه MySQL یا MariaDB –  استفاده از نوع داده MySQL BLOB برای ذخیره تصاویر

نصب Nginx در اوبونتو 18.04نصب توزیع Anaconda پایتون در اوبونتو 20.04

نحوه نصب جاوا با Apt در اوبونتو 18.04 –  نحوه نصب Django و تنظیم محیط توسعه در اوبونتو 16.04

نصب جنگو و تنظیم محیط توسعه در اوبونتو 20.04 – نحوه ایجاد سرور Minecraft در اوبونتو 18.04

نحوه راه اندازی یک پروژه Node با Typescript –  نحوه نصب و پیکربندی VNC در اوبونتو 18.04

ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتینصب و پیکربندی VNC در اوبونتو 20.04

نصب MariaDB در اوبونتو 20.04  –  فعال سازی و اتصال رابط کاربری Django

تنظیم پلتفرم Cloud IDE کد سرور را در اوبونتو 18.04پیکربندی Apache HTTP با رویداد MPM و PHP-FPM

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 

 

 

 

برچسب‌ها:, , ,