ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

Введение

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

Этот урок покажет, как установить и как начать работу с композитором на сервере Debian 8.

Предпосылки

Для этого урока вам понадобятся:

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

Перед тем, как скачать и установить Composer, мы должны убедиться, что наш сервер имеет все необходимые установленные зависимости.

Во-первых, необходимо обновить кэш менеджер пакетов.

sudo apt-get update

 

Теперь, давайте установим зависимости. Нам понадобится curl для того, чтобы загрузить композитор и php5-cli, пакет PHP, для установки и запуска. Композитор использует git, систему управления версиями, чтобы загрузить проект зависимостей. Вы можете установить все три из этих пакетов сразу же с помощью этой команды:

sudo apt-get install curl php5-cli git

 

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

Шаг 2 – Загрузка и установка Композитора

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

Загрузите программу установки в каталог /tmp.

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

 

Посетите страницу pubkeys композитора и скопируйте строку SHA-384 в верхней части. Затем выполните следующую команду, заменив строку  sha_384_string.

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 правильно.

Далее, мы установим Composer. Для того, чтобы установить его на глобальном уровне в рамках /usr/local/bin, мы будем использовать флаг --install-dir; --filename сообщает установщику имя исполняемого файла композитора. Вот как сделать это в одной команде:

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 был правильно установлен, проверив его версию.

composer --version

 

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

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

 

И, наконец, вы можете безопасно удалить скрипт установки, так как вам он больше не нужен.

rm /tmp/composer-setup.php

 

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

Шаг 3 – Генерация файла composer.json

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

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

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

Мы посмотрим, как это работает на практике с помощью простого демонстрационного приложения.

Целью данного приложения является превратить данное предложение в slug, который является URL-дружеской строкой. Это используется для преобразования названий страниц в пути URL (как финальная часть URL для этого урока).

Давайте начнем с создания каталога для проекта. Мы будем называть его slugify :

cd ~

mkdir slugify

cd slugify

 

Далее, давайте искать библиотеки, которые мы должны использовать.

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

Далее, мы будем искать Packagist для пакета, чтобы помочь произвести slug. Если вы ищете “slug“, вы увидите список пакетов. На правой стороне каждого пакета в списке, вы увидите два номера: номер на вершине, сколько раз был установлен пакет и номер внизу показывает, сколько раз пакет был звездой на GitHub.

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

То, что нам нужно, это простой конвертер строки в slug. В качестве примера здесь, мы будем использовать пакет cocur/slugify. Вроде бы хороший пакет, потому что он имеет разумное количество установок и звезд.

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

Теперь, когда мы определили библиотеку мы хотим добавить его в файл composer.json.

Требование пакета

Мы можем запустить 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.json и composer.lock, и каталог /vendor:

ls -l
Вывод
total 12
-rw-r--r-- 1 sammy sammy   59 Feb  1 13:43 composer.json
-rw-r--r-- 1 sammy sammy 2896 Feb  1 13:43 composer.lock
drwxr-xr-x 4 sammy sammy 4096 Feb  1 13:43 vendor

 

Файл composer.lock используется для хранения информации о том, какие установлены версии каждого пакета, и убедится, что одни и те же версии используются, если кто – то клонирует ваш проект и устанавливает его зависимости. Каталог /vendor, где расположены зависимости проекта. Каталог /vendor не должен совершаться в системе контроля версий; вам нужно только включить файлы composer.json и composer.lock.

Вы можете заметить , что файл composer.lock содержит конкретную информацию о зависимости версии PHP библиотек нашего проекта. Композитор использует специальный синтаксис для ограничения библиотек для конкретных версий. Давайте посмотрим , как это работает.

Понимание ограничений версий

Если проверить содержимое вашего файла composer.json, то вы увидите что – то вроде этого:

cat composer.json

 

Вывод
{
    "require": {
        "cocur/slugify": "^2.3"
    }
}

 

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

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

Шаг 4 – Включение автозагрузочного скрипта

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

Давайте вернемся к примеру приложения slugify. Используйте nano или ваш любимый текстовый редактор, чтобы создать сценарий test.php, где мы будем использовать библиотеку cocur/slugify.

nano test.php
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 – Обновление Composer и зависимости проекта (Необязательно)

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

sudo -H composer self-update

 

Вы можете обновить один или несколько специфических библиотек, перечислив их конкретно в composer update.

composer update namespace/package

 

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

composer update

 

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

Вывод

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

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

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

Exit mobile version