Поиск по сайту:

Как установить и использовать Composer в Debian 11


Введение

Ларавель.

В этом руководстве вы установите и будете использовать Composer на сервере Debian 11.

Предпосылки

Чтобы следовать этому руководству, вам понадобится один настроенный сервер Debian 11, включая пользователя без полномочий root с включенной поддержкой sudo и включенным брандмауэром. Вы можете сделать это, следуя нашему руководству по начальной настройке сервера Debian 11.

Шаг 1 — Установка зависимостей

В дополнение к зависимостям, которые уже могут быть включены в вашу систему Debian 11, Composer требует php-cli для выполнения PHP-скриптов в командной строке и unzip для извлечения заархивированных архивов.

Начните с обновления кеша менеджера пакетов:

  1. sudo apt update

Далее устанавливаем зависимости. Вам понадобится curl для загрузки Composer и php-cli для его установки и запуска. Пакет php-mbstring необходим для предоставления функций для библиотеки, которую вы будете использовать в этом руководстве. git используется Composer для загрузки зависимостей проекта, а unzip — для извлечения заархивированных пакетов. Все можно установить с помощью следующей команды:

  1. sudo apt install curl php-cli php-mbstring git unzip

Теперь, когда все зависимости установлены, вы можете установить Composer.

Шаг 2 — Загрузка и установка Composer

Composer предоставляет установщик, написанный на PHP. Вы загрузите его, убедитесь, что он не поврежден, а затем используйте его для установки Composer.

Во-первых, убедитесь, что вы находитесь в своем домашнем каталоге:

  1. cd ~

Затем получите установщик с помощью curl:

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

Затем убедитесь, что установщик соответствует хэшу SHA-384 для последней версии установщика, найденной на странице «Открытые ключи/подписи Composer». Чтобы облегчить этап проверки, вы можете использовать следующую команду для программного получения последнего хэша со страницы композитора и сохранения его в переменной оболочки:

  1. HASH=`curl -sS https://composer.github.io/installer.sig`

Чтобы вывести полученное значение, выполните:

  1. echo $HASH
Output
55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae

Теперь выполните следующий код PHP, как показано на странице загрузки Composer, чтобы убедиться, что сценарий установки безопасен для запуска:

  1. 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 :

  1. sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Ваш вывод будет следующим:

Output
All settings correct for using Composer Downloading... Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

Проверьте свою установку, выполнив эту команду:

  1. composer

Ваш вывод будет отображать версию и аргументы Composer, как показано ниже:

Output
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.3.10 2022-07-13 15:48:23 Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. --no-scripts Skips the execution of all scripts defined in composer.json file. -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 для каждого проекта, размещенного на этом сервере, вы можете установить его локально для каждого проекта. Пользователи NPM знакомы с этим подходом. Этот метод также полезен, когда у пользователя вашей системы нет разрешения на установку программного обеспечения в масштабе всей системы.

Для этого используйте команду php composer-setup.php. Это создаст файл composer.phar в вашем текущем каталоге, который можно запустить с помощью ./composer.phar команды.

Теперь, когда вы установили Composer, на следующем шаге вы узнаете, как использовать Composer для управления зависимостями PHP.

Шаг 3 — Использование Composer в проекте PHP

PHP-проекты часто зависят от внешних библиотек, и управление этими зависимостями и их версиями может оказаться сложной задачей. Composer решает эту проблему, отслеживая ваши зависимости и делая их более доступными для других.

Чтобы использовать Composer в своем проекте, вам понадобится файл composer.json. Файл composer.json сообщает Composer о зависимостях, которые необходимо загрузить для вашего проекта, и о версиях каждого пакета, которые разрешено устанавливать. Это чрезвычайно важно для обеспечения согласованности вашего проекта и предотвращения установки нестабильных версий, которые потенциально могут вызвать проблемы с обратной совместимостью.

Вам не нужно создавать этот файл вручную, потому что это чревато ошибками и может вызвать синтаксические ошибки. Composer автоматически создает файл composer.json, когда вы добавляете зависимость в свой проект с помощью команды composer require. Вы можете добавить дополнительные зависимости таким же образом, без необходимости вручную редактировать этот файл.

Процесс использования Composer для установки пакета в качестве зависимости в проекте включает следующие шаги:

  • Определите, какая библиотека нужна приложению.
  • Найдите подходящую библиотеку с открытым исходным кодом на Packagist.org, официальном репозитории пакетов для Composer.
  • Выберите пакет, от которого вы хотите зависеть.
  • Запустите composer require, чтобы включить зависимость в файл composer.json и установить пакет.

Вы можете проверить это с помощью демо-приложения.

Цель этого приложения — преобразовать заданное предложение в удобную для URL-адреса строку, называемую slug. Слаг обычно используется для преобразования заголовков страниц в пути URL-адресов, таких как последняя часть URL-адреса для этого руководства.

Начните с перехода в домашний каталог:

  1. cd ~

Затем создайте каталог. Назовите это slugify:

  1. mkdir slugify

После того, как вы закончите его создание, перейдите в каталог:

  1. cd slugify

Теперь пришло время поискать на Packagist.org пакет, который поможет генерировать слаги. Если вы выполните поиск по термину «слаг» на Packagist, вы получите примерно такой результат:

Справа от каждого пакета в списке будет два числа. Число рядом со значком со стрелкой, указывающей вниз, показывает, сколько раз был установлен пакет, а число со значком звездочки показывает, сколько раз пакет был отмечен звездочкой на GitHub. Вы также можете изменить порядок результатов поиска на основе этих номеров. Вообще говоря, пакеты с большим количеством установок и большим количеством звезд имеют тенденцию быть более стабильными, поскольку их использует очень много людей. Также важно проверить актуальность описания пакета, чтобы убедиться, что это то, что вам нужно.

Для этого руководства вам понадобится конвертер строк в slug. Судя по результатам поиска, пакет cocur/slugify хорошо подходит, с разумным количеством установок и звездочек.

Пакеты на Packagist имеют имя поставщика и имя пакета. Каждый пакет имеет уникальный идентификатор (пространство имен) в том же формате, который GitHub использует для своих репозиториев, в форме vendor/package. Библиотека, которую вы хотите установить, использует пространство имен cocur/slugify. Вам нужно пространство имен, чтобы потребовать пакет в вашем проекте.

Теперь, когда вы знаете, какой пакет хотите установить, запустите composer require, чтобы включить его в качестве зависимости, а также сгенерируйте файл composer.json для проекта:

  1. composer require cocur/slugify

Ваш вывод вернет следующее, когда Composer загрузит зависимость:

Output
Using version ^4.1 for cocur/slugify ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking cocur/slugify (v4.1.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading cocur/slugify (v4.1.0) - Installing cocur/slugify (v4.1.0): Extracting archive Generating autoload files

Как показывает этот вывод, Composer автоматически выбирает версию пакета для использования. Если вы сейчас проверите каталог вашего проекта, он будет содержать два новых файла: composer.json и composer.lock, а также каталог vendor:

  1. ls -l
Output
total 12 -rw-r--r-- 1 sammy sammy 59 Aug 2 22:19 composer.json -rw-r--r-- 1 sammy sammy 3462 Aug 2 22:19 composer.lock drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor

Файл composer.lock используется для хранения информации о версиях каждого установленного пакета. Это также гарантирует использование одних и тех же версий, если кто-то другой клонирует ваш проект и устанавливает его зависимости. В каталоге vendor находятся зависимости проекта. Папку vendor не нужно фиксировать в системе управления версиями, вам нужно только включить файлы composer.json и composer.lock.

При установке проекта, который уже содержит файл composer.json, запустите composer install, чтобы загрузить зависимости проекта.

Затем просмотрите ограничения версии. Если вы проверите содержимое файла composer.json, вы увидите что-то вроде следующего:

  1. cat composer.json
Output
{ "require": { "cocur/slugify": "^4.1" } }

Вы могли заметить специальный символ ^ перед номером версии в composer.json. Composer поддерживает несколько различных ограничений и форматов для определения требуемой версии пакета, чтобы обеспечить гибкость, а также сохранить стабильность вашего проекта. Оператор вставки (^), используемый автоматически сгенерированным файлом composer.json, является рекомендуемым оператором для максимальной совместимости после семантического управления версиями. В этом случае он определяет 4.1 как минимальную совместимую версию и разрешает обновления до любой будущей версии ниже 5.0.

Вообще говоря, вам не нужно вмешиваться в ограничения версий в вашем файле composer.json. Однако в некоторых ситуациях может потребоваться ручное редактирование ограничения. Например, когда выпущена основная новая версия вашей необходимой библиотеки, и вы хотите обновить ее, или когда библиотека, которую вы хотите использовать, не соответствует семантическому управлению версиями.

Вот несколько примеров, которые помогут вам лучше понять, как работают ограничения версии 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 — Включение скрипта автозагрузки

Поскольку PHP сам по себе не загружает классы автоматически, Composer предоставляет скрипт автозагрузки, который вы можете включить в свой проект, чтобы заставить автозагрузку работать. Это помогает при работе с вашими зависимостями.

Единственное, что вам нужно сделать, это включить файл vendor/autoload.php в ваши PHP-скрипты перед созданием экземпляра любого класса. Этот файл автоматически создается Composer при добавлении первой зависимости.

Вы можете проверить это в своем приложении. Создайте файл test.php и откройте его в предпочитаемом вами текстовом редакторе. Здесь используется nano:

  1. nano test.php

Добавьте следующий код, чтобы загрузить файл vendor/autoload.php, загрузить зависимость cocur/slugify и создать ярлык:

<?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!');

Сохраните файл и выйдите из редактора. Если вы используете nano, вы можете сделать это, нажав CTRL + X, затем Y и ENTER.

Теперь запустите скрипт:

  1. php test.php

Это дает следующий результат:

Output
hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

Зависимости нуждаются в обновлениях, когда выходят новые версии, поэтому вы узнаете, как с этим справиться, на последнем шаге.

Шаг 5 — Обновление зависимостей проекта

Всякий раз, когда вы хотите обновить зависимости вашего проекта до более поздних версий, выполните команду update:

  1. composer update

Это проверит наличие более новых версий библиотек, которые вы добавили в качестве требований в свой проект. Если найдена более новая версия и она совместима с ограничением версии, определенным в файле composer.json, Composer заменит установленную предыдущую версию. Файл composer.lock будет обновлен, чтобы отразить эти изменения.

Вы также можете обновить одну или несколько конкретных библиотек, указав их следующим образом:

  1. composer update vendor/package vendor2/package2

Не забудьте зафиксировать изменения в файлах composer.json и composer.lock после обновления зависимостей, чтобы все, кто работает над проектом, имели доступ к тем же версиям пакетов. .

Заключение

Composer — мощный инструмент, который должен быть у каждого PHP-разработчика. В этом руководстве вы установили Composer в Debian 11 и использовали его в проекте. Теперь вы знаете, как устанавливать и обновлять зависимости.

Помимо предоставления надежного способа управления зависимостями проекта, Composer также устанавливает новый стандарт для обмена и обнаружения пакетов PHP, созданных сообществом.