Представь, что ты начинаешь новый веб-проект или разворачиваешь сервер для существующего приложения. Первое, с чем сталкиваешься — необходимость установить и настроить PHP. В этом руководстве я, как опытный DevOps ментор, покажу тебе все способы установки PHP на Ubuntu (и Debian), от базового до продвинутых вариантов.
Подготовка системы перед установкой PHP
Давай разберем подготовительные шаги. Это как настройка рабочего места перед серьезной работой.
Обновление пакетов и репозиториев
Всегда начинай с обновления списка пакетов:
sudo apt update
sudo apt upgrade -y
Способ 1: Установка PHP из официальных репозиториев Ubuntu/Debian
Самый простой способ, но версии PHP могут быть не самыми свежими. Идеально для быстрого старта.
Поиск доступных версий PHP
apt search php | grep ^php
Установка конкретной версии PHP
Для установки PHP 8.1 (актуальная LTS версия):
sudo apt install php8.1 -y
Способ 2: Установка PHP из репозитория Ondrej (рекомендуемый)
Ondrej Sury — разработчик, который поддерживает репозитории с актуальными версиями PHP для Debian и Ubuntu. Это самый популярный способ среди профессионалов.
Добавление репозитория Ondrej PHP PPA
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
Установка PHP 8.2 или 8.3
Теперь доступны самые свежие версии:
# Для PHP 8.2
sudo apt install php8.2 -y
# Или для PHP 8.3
sudo apt install php8.3 -y
Установка необходимых расширений PHP
Чистый PHP — это только основа. Для реальных проектов нужны расширения. Вот самые важные:
Базовый набор расширений для веб-разработки:
sudo apt install php8.2-common php8.2-mysql php8.2-xml \
php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip \
php8.2-bcmath php8.2-intl php8.2-fpm -y
- php-mysql — работа с базами данных MySQL/MariaDB
- php-xml — обработка XML документов
- php-curl — HTTP-запросы к внешним сервисам
- php-gd — работа с изображениями
- php-mbstring — многобайтовые строки (важно для UTF-8)
- php-fpm — FastCGI Process Manager (для Nginx)
Проверка установки PHP
После установки убедимся, что все работает правильно:
php --version
Пример вывода:
PHP 8.2.12 (cli) (built: Oct 26 2023 10:57:12) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
Проверка установленных расширений
php -m
Настройка PHP для веб-сервера
В зависимости от выбранного веб-сервера, настройка будет отличаться.
Настройка для Apache
Установите модуль PHP для Apache:
sudo apt install libapache2-mod-php8.2 -y
sudo systemctl restart apache2
Настройка для Nginx с PHP-FPM
Nginx требует отдельной настройки. Сначала проверь статус PHP-FPM:
sudo systemctl status php8.2-fpm
Пример конфигурации Nginx для работы с PHP:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Способ 3: Установка PHP через Docker (для изолированных окружений)
Идеально для разработки, когда нужна изоляция или разные версии PHP для разных проектов.
# Запуск контейнера с PHP 8.2 и Apache
sudo docker run -d -p 8080:80 --name my-php-app \
-v $(pwd):/var/www/html php:8.2-apache
# Или с PHP-FPM и Nginx
sudo docker run -d -p 8080:80 --name php-fpm-app \
-v $(pwd):/var/www/html bitnami/php-fpm:8.2
Сравнение способов установки PHP
| Способ | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Официальные репозитории | Простота, стабильность | Устаревшие версии | Быстрый старт, тестирование |
| Ondrej PPA | Актуальные версии, все расширения | Дополнительный репозиторий | Продакшен, современные проекты |
| Docker | Изоляция, разные версии | Сложнее в настройке | Разработка, микросервисы |
Частые проблемы и их решение
Проблема: PHP не выполняется в браузере
Решение: Проверь, что установлен правильный модуль для веб-сервера и сервис запущен.
# Для Apache
sudo a2enmod php8.2
sudo systemctl restart apache2
# Для Nginx
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
Проблема: Расширение не найдено
Решение: Установи нужное расширение и перезапусти PHP-FPM/Apache.
sudo apt install php8.2-[расширение]
sudo systemctl restart php8.2-fpm
Оптимизация производительности PHP
После установки настрой основные параметры в php.ini:
sudo nano /etc/php/8.2/fpm/php.ini
Рекомендуемые настройки для продакшена:
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M
post_max_size = 64M
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
sudo cp /etc/php/8.2/fpm/php.ini /etc/php/8.2/fpm/php.ini.backup
Управление несколькими версиями PHP
На одном сервере можно иметь несколько версий PHP и переключаться между ними:
# Установи обе версии
sudo apt install php8.1 php8.2 php8.3
# Переключение версии PHP для CLI
sudo update-alternatives --config php
# Выбери нужную версию из списка
Часто задаваемые вопросы (FAQ)
Какую версию PHP выбрать для нового проекта?
Для новых проектов рекомендую PHP 8.2 или 8.3. PHP 8.1 — LTS версия, которая будет поддерживаться до 2025 года. Избегай версий ниже 8.0, так как они уже не получают обновлений безопасности.
Чем отличается установка PHP на Debian от Ubuntu?
Процесс практически идентичен. Основное отличие — названия некоторых пакетов и версии в официальных репозиториях. Репозиторий Ondrej работает одинаково хорошо на обеих системах.
Как полностью удалить PHP и установить заново?
sudo apt purge php* -y
sudo apt autoremove -y
sudo apt autoclean
# Затем установи заново по инструкции выше
Где находятся конфигурационные файлы PHP?
- Основной конфиг:
/etc/php/8.2/cli/php.ini(для CLI) - Для FPM:
/etc/php/8.2/fpm/php.ini - Конфиг FPM пула:
/etc/php/8.2/fpm/pool.d/www.conf - Дополнительные конфиги:
/etc/php/8.2/mods-available/
Заключение
Теперь у тебя есть полное руководство по установке PHP на Ubuntu и Debian. Помни:
- Для продакшена используй репозиторий Ondrej — там самые свежие и стабильные версии
- Не забывай устанавливать необходимые расширения под свой проект
- Настраивай php.ini под свои нужды, особенно параметры производительности
- Для разработки рассмотри Docker — это сэкономит время в долгосрочной перспективе
Попробуй каждый способ на тестовом сервере, чтобы понять, какой подход лучше подходит для твоих задач. Удачи в разработке!