- Home »

Как установить и использовать Composer на Ubuntu 24
Если настраиваешь PHP-окружение на Ubuntu 24, то без Composer никуда. Это стандартный пакетный менеджер для PHP, который решает вопросы с зависимостями и автозагрузкой классов. Покажу, как быстро поставить его на свежую Ubuntu 24 и сразу начать работать. Разберём установку глобально и локально, настройку автозагрузки и несколько практических кейсов.
Что такое Composer и зачем он нужен
Composer — это менеджер зависимостей для PHP, который позволяет управлять библиотеками в проектах. Если работал с npm для Node.js или pip для Python, то принцип тот же. Composer читает файл composer.json, качает нужные пакеты и настраивает автозагрузку.
Основные возможности:
- Управление зависимостями проекта
- Автоматическая загрузка классов (PSR-4)
- Создание и публикация собственных пакетов
- Управление версиями библиотек
- Скрипты для автоматизации задач
Установка PHP на Ubuntu 24
Перед установкой Composer нужен PHP. На Ubuntu 24 по умолчанию доступен PHP 8.3:
sudo apt update
sudo apt install php php-cli php-zip php-curl php-mbstring php-xml php-json unzip curl
Проверяем версию:
php -v
Если планируешь работать с базами данных, доставь расширения:
sudo apt install php-mysql php-pgsql php-sqlite3
Глобальная установка Composer
Самый простой способ — установить Composer глобально. Качаем установщик и запускаем:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
Проверяем установку:
composer --version
Должно показать что-то вроде:
Composer version 2.7.1 2024-02-09 15:26:28
Альтернативный способ через apt
В Ubuntu 24 Composer есть в официальных репозиториях, но версия может быть старой:
sudo apt install composer
Сравнение способов установки:
Способ | Преимущества | Недостатки |
---|---|---|
Официальный установщик | Всегда свежая версия, самообновление | Ручная установка |
Через apt | Простота, интеграция с системой | Устаревшие версии |
Docker | Изоляция, воспроизводимость | Сложность для простых задач |
Первый проект с Composer
Создаём тестовый проект:
mkdir test-composer
cd test-composer
composer init
Composer запросит информацию о проекте. Можно жать Enter для значений по умолчанию. Получится файл composer.json:
{
"name": "user/test-composer",
"description": "Test project",
"type": "project",
"require": {
"php": "^8.3"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Установка зависимостей
Добавляем популярную библиотеку для работы с HTTP:
composer require guzzlehttp/guzzle
Composer скачает пакет и все его зависимости в папку vendor/. Файл composer.json обновится:
{
"require": {
"php": "^8.3",
"guzzlehttp/guzzle": "^7.8"
}
}
Появится файл composer.lock с точными версиями всех зависимостей. Этот файл нужно коммитить в git — он обеспечивает одинаковые версии у всех разработчиков.
Автозагрузка классов
Создаём структуру проекта:
mkdir src
touch src/HttpClient.php
touch index.php
Файл src/HttpClient.php:
client = new Client();
}
public function get(string $url): string
{
$response = $this->client->request('GET', $url);
return $response->getBody()->getContents();
}
}
Файл index.php:
get('https://httpbin.org/json');
Генерируем автозагрузку и запускаем:
composer dump-autoload
php index.php
Полезные команды Composer
Основные команды для ежедневной работы:
# Установка зависимостей
composer install
# Обновление всех пакетов
composer update
# Обновление конкретного пакета
composer update guzzlehttp/guzzle
# Удаление пакета
composer remove guzzlehttp/guzzle
# Поиск пакетов
composer search http client
# Информация о пакете
composer show guzzlehttp/guzzle
# Проверка зависимостей
composer validate
# Аудит безопасности
composer audit
Версии зависимостей
Composer поддерживает гибкую систему версий:
# Точная версия
"guzzlehttp/guzzle": "7.8.1"
# Минимальная версия
"guzzlehttp/guzzle": ">=7.8.0"
# Диапазон версий
"guzzlehttp/guzzle": "^7.8"
# Следующая минорная версия
"guzzlehttp/guzzle": "~7.8.0"
# Ветка разработки
"guzzlehttp/guzzle": "dev-master"
Символ ^ означает совместимые версии. ^7.8 разрешает 7.8.1, 7.9.0, но не 8.0.0.
Скрипты Composer
Composer может выполнять пользовательские скрипты. Добавляем в composer.json:
{
"scripts": {
"test": "phpunit tests/",
"lint": "php-cs-fixer fix",
"serve": "php -S localhost:8000 -t public/",
"post-install-cmd": [
"php artisan key:generate"
]
}
}
Запуск скриптов:
composer test
composer lint
composer serve
Настройка для продакшена
Для продакшена используй оптимизированную установку:
composer install --no-dev --optimize-autoloader
Параметры:
- –no-dev — не устанавливать dev-зависимости
- –optimize-autoloader — создать оптимизированную карту классов
- –classmap-authoritative — использовать только classmap для автозагрузки
Локальная установка в проекте
Иногда нужен Composer только для конкретного проекта:
curl -sS https://getcomposer.org/installer | php
php composer.phar install
Создаём alias для удобства:
echo 'alias composer="php /path/to/composer.phar"' >> ~/.bashrc
source ~/.bashrc
Работа с приватными репозиториями
Для работы с приватными пакетами настрой аутентификацию:
composer config --global github-oauth.github.com YOUR_TOKEN
Или добавь в composer.json:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/company/private-package"
}
]
}
Кэширование и производительность
Composer кэширует пакеты для ускорения установки. Управление кэшем:
# Посмотреть путь к кэшу
composer config cache-dir
# Очистить кэш
composer clear-cache
# Установить без кэша
composer install --no-cache
Для CI/CD настрой кэширование:
# .github/workflows/ci.yml
- name: Cache Composer dependencies
uses: actions/cache@v2
with:
path: vendor
key: composer-${{ hashFiles('composer.lock') }}
Создание собственного пакета
Composer позволяет создавать и публиковать собственные пакеты. Структура пакета:
my-package/
├── composer.json
├── src/
│ └── MyClass.php
├── tests/
│ └── MyClassTest.php
└── README.md
Файл composer.json для пакета:
{
"name": "vendor/my-package",
"description": "My awesome package",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "your@email.com"
}
],
"require": {
"php": "^8.0"
},
"autoload": {
"psr-4": {
"Vendor\\MyPackage\\": "src/"
}
}
}
Альтернативы Composer
Хотя Composer — стандарт для PHP, есть альтернативы:
- PEAR — старый менеджер пакетов PHP, практически не используется
- Pickle — менеджер для PHP-расширений
- Phive — менеджер для PHAR-файлов
- Packagist — не альтернатива, а основной репозиторий для Composer
Интеграция с Docker
Для контейнеризации PHP-приложений используй многоэтапную сборку:
FROM composer:2 as composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
FROM php:8.3-fpm
WORKDIR /app
COPY --from=composer /app/vendor ./vendor
COPY . .
CMD ["php-fpm"]
Обновление Composer
Composer может обновлять сам себя:
composer self-update
Для отката к предыдущей версии:
composer self-update --rollback
Безопасность и аудит
Composer 2.0+ включает встроенный аудит безопасности:
composer audit
Для старых версий используй плагин:
composer global require roave/security-advisories:dev-latest
Troubleshooting
Частые проблемы и решения:
- Ошибка memory_limit — увеличь лимит памяти:
php -d memory_limit=-1 composer.phar install
- Timeout при загрузке — увеличь таймаут:
composer config --global process-timeout 2000
- Проблемы с SSL — отключи проверку:
composer config --global disable-tls true
- Конфликты версий — используй
composer why-not package/name version
Автоматизация и CI/CD
Для автоматизации развёртывания создай скрипт:
#!/bin/bash
# deploy.sh
set -e
echo "Installing dependencies..."
composer install --no-dev --optimize-autoloader
echo "Running migrations..."
php artisan migrate --force
echo "Clearing cache..."
php artisan cache:clear
php artisan config:clear
echo "Deployment completed!"
Интеграция с GitHub Actions:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
- name: Install dependencies
run: composer install --no-dev --optimize-autoloader
- name: Deploy to server
run: ./deploy.sh
Настройка на VPS
Если настраиваешь на VPS или выделенном сервере, учти следующие моменты:
- Настрой правильные права на папку vendor/
- Используй PHP-FPM для лучшей производительности
- Настрой ротацию логов для composer
- Добавь мониторинг процессов установки
Заключение
Composer — незаменимый инструмент для PHP-разработки. На Ubuntu 24 он ставится без проблем и сразу готов к работе. Основные принципы использования:
- Всегда коммить composer.lock в репозиторий
- Использовать семантическое версионирование
- Регулярно обновлять зависимости
- Настроить автозагрузку по PSR-4
- Использовать скрипты для автоматизации
Composer превращает управление зависимостями из головной боли в простую задачу. Он стандартизирует подход к структуре проектов и позволяет сосредоточиться на бизнес-логике вместо рутинных задач.
Полезные ссылки:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.