Установка и использование Composer в Debian 8

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

Данное руководство поможет установить и начать работу с Composer на сервере Debian 8.

Требования

  • Предварительно настроенный сервер Debian 8.
  • Пользователь с доступом к sudo (больше о таком пользователе можно узнать здесь).

1: Установка зависимостей Composer

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

Сначала обновите индекс пакетов:

sudo apt-get update

Теперь установите зависимости Composer. Вам понадобятся следующие пакеты:

  • curl – для загрузки Composer;
  • php5-cli – для установки и запуска Composer;
  • git – позволяет Composer загружать зависимости проектов.

Все эти пакеты можно установить при помощи команды:

sudo apt-get install curl php5-cli git

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

Мы будем следовать официальной документации Composer с небольшими поправками. Выполните глобальную установку Composer в /usr/local/bin (так доступ к Composer сможет получить любой пользователь сервера).

Загрузите инсталлятор в /tmp:

php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

Теперь откройте эту страницу сайта Composer и скопируйте строку SHA-384. Запустите следующую команду:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === 'sha_384_string') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

Примечание: Вместо sha_384_string укажите скопированную строку SHA-384.

Эта команда сравнивает хэш загруженного файла с хэшем на сайте Composer.

Если значения совпали, команда вернёт:

Installer verified

Это значит, что файл прошёл проверку на целостность данных, и теперь его можно установить. Если значения не совпали, команда вернёт:

Installer corrupt

В таком случае убедитесь, что правильно скопировали строку SHA-384, и повторите проверку.

Теперь можно установить Composer. Чтобы выполнить глобальную установку пакета в /usr/local/bin, используйте флаг –install-dir; флаг –filename позволяет передать инсталлятору имя исполняемого файла Composer.

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

Команда вернёт:

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

Убедитесь, что установка прошла успешно, с помощью команды:

composer --version

Команда должна выдать версию Composer:

Composer version 1.3.2 2017-01-27 18:23:41

Теперь можно удалить установочный сценарий:

rm /tmp/composer-setup.php

Теперь инструмент Composer установлен и готов к работе.

3: Файл composer.json

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

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

Процесс установки зависимостей проекта при помощи Composer состоит из следующих этапов:

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

Рассмотрим этот процесс на примере простого приложения.

Цель этого приложения – превратить заданное предложение в «понятный» URL (или slug); как правило, это приложение используется для преобразования названий страниц в URL-адреса (к примеру, обратите внимание на последний сегмент URL-адреса этого урока).

Итак, создайте каталог проекта; для примера назовём его slugify:

cd ~
mkdir slugify
cd slugify

Поиск пакетов на Packagist.org

Теперь попробуйте найти пакет, генерирующий slug-адреса, в репозитории Packagist.org. Просто  введите в поле поиска запрос slug.

Справа возле каждого результата поиска можно увидеть два счётчика. Первый показывает, сколько раз пакет был установлен; второй счётчик показывает, сколько раз пакет был отмечен на GitHub. Результат поиска можно переупорядочить согласно показателю одного из счётчиков. Конечно, пакеты с высокими показателями, как правило, более стабильны, так как они многими используются. Также важно проверить описание пакета – действительно ли это нужный пакет?

Итак, нужно найти простой конвертёр адресов. В руководстве используется пакет cocur/slugify.

Обратите внимание: Packagist указывает имя вендора и имя пакета (vendor name и package name). Каждому пакету присваивается уникальный идентификатор, или пространство имён (в том же формате, что и для репозиториев Github: vendor/package). Необходимый пакет называется cocur/slugify. Чтобы загрузить пакет автоматически, нужно указать менеджеру зависимостей пространство имён пакета.

Запрос пакета

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

composer require cocur/slugify
Using version ^2.3 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 (v2.3) Downloading: 100%
Writing lock file
Generating autoload files

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

ls -l
total 12
-rw-r--r-- 1 8host 8host   59 Feb  1 13:43 composer.json
-rw-r--r-- 1 8host 8host 2896 Feb  1 13:43 composer.lock
drwxr-xr-x 4 8host 8host 4096 Feb  1 13:43 vendor

Файл composer.lock используется для хранения данных о версиях установленных пакетов и обеспечивает использование одинаковых версий пакетов в случае клонирования проекта. Каталог vendor содержит зависимости проекта.

Внимание! В случае использования контроля версий не отправляйте сообщения о коммитах каталога vendor; это касается только файлов composer.json и composer.lock.

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

composer install

Ограничения версий

Файл composer.json содержит примерно такой код:

cat composer.json
{
"require": {
"cocur/slugify": "^2.3"
}
}

Обратите внимание на знак вставки (^) перед номером версии. Для определения версии пакета Composer может использовать несколько типов ограничений и форматов; эта функция позволяет следить за стабильностью проекта. Оператор ^ используется в файле composer.json для максимальной совместимости версий. В данном случае он определяет версию 1.3 как минимальную и разрешает обновления до версии 2.0.

Читайте также: Документация Composer по управлению версиями

4: Сценарий autoload

Также Composer использует сценарий autoload, который можно добавить в проект для поддержки автозагрузки. Он упрощает работу с зависимостями и определяет собственные пространства имен.

Нужно просто добавить файл vendor/autoload.php в скрипты PHP перед установкой класса.

Вернёмся к тестовому приложению slugify. Создайте скрипт test.php и задайте в нём библиотеку cocur/slugify:

nano 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: Обновление зависимостей проекта

Чтобы обновить зависимости проекта, используйте встроенную команду self-update. Поскольку Composer установлен глобально, для запуска команды нужны права root.

sudo -H composer self-update

Чтобы обновить конкретную библиотеку (или несколько библиотек), укажите в команде её имя:

composer update namespace/package

Чтобы обновить все зависимости проекта, запустите:

composer update

Эта команда проверит наличие новых версий пакетов. В случае обнаружении более новой версии, которая разрешена ограничениями версий, менеджер зависимостей установит её вместо устаревшей версии данного пакета. Все изменения будут внесены в composer.lock.

Заключение

Composer – очень мощный инструмент, необходимый каждому разработчику PHP.

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

Читайте также: Официальная документация Composer

Tags: , ,

Добавить комментарий