Развертывание PHP-окружения на платформе Альт Линукс

Раздел: Администрирование Linux -> Установка и настройка PHP на Linux

Alt Linux представляет собой российский дистрибутив на базе RPM с использованием пакетного менеджера apt-get (из состава APT-RPM). Установка PHP на эту систему может быть выполнена несколькими способами, каждый из которых имеет свои цели и особенности.

Основной способ: установка PHP через системный менеджер пакетов

Наиболее простой и поддерживаемый метод - использование официальных репозиториев Alt Linux. Это обеспечивает автоматическое обновление безопасности и совместимость с другими пакетами.

Как выполнить установку PHP и его популярных модулей из репозитория?

Для начала требуется обновить список пакетов:

apt-get update

Linux apache php (настройка apache и php в linux)

Затем установить мета-пакет с PHP (например, версию 8.2):

apt-get install php8.2

Php fpm linux (настройка php-fpm в linux)

Данный пакет автоматически подтягивает основные модули: php8.2-cli, php8.2-common, php8.2-readline и другие. Для работы с веб-сервером обычно требуется PHP-FPM:

apt-get install php8.2-fpm

Linux версия php (проверка версии php в linux)

Проверить успешность установки можно командой:

php -v

Linux установить php (установка php в linux)

PHP 8.2.15 (cli) (built: Feb 10 2024 12:00:00) 
 Copyright (c) The PHP Group 
 Zend Engine v4.2.15, Copyright (c) Zend Technologies

Php mysql linux (установка php и mysql в linux)

Возможные проблемы и их решения

  • Ошибка "Package not found" - репозиторий не подключён или устарел. Следует проверить файл /etc/apt/sources.list и выполнить apt-get update.
  • Конфликт версий PHP - если уже установлена другая версия, возможно, потребуется удалить её командой apt-get remove php* и установить нужную.
  • Отсутствие необходимого модуля - например, для MySQL устанавливается php8.2-mysql отдельно.

Вариант 1: Установка PHP-FPM и интеграция с nginx

Цель - обеспечить работу PHP приложений за счёт FastCGI Process Manager. Этот вариант подходит для высоконагруженных серверов и разделения статики и динамики.

Как настроить связку nginx + PHP-FPM на Alt Linux?

Установите nginx и PHP-FPM:

apt-get install nginx php8.2-fpm

Alt linux php (установка php на alt linux)

Запустите службы и добавьте их в автозагрузку:

systemctl enable --now nginx; systemctl enable --now php8.2-fpm

Php oracle linux (установка php на oracle linux)

Настройте конфигурацию nginx (например, /etc/nginx/sites-available/default):

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

После изменений перезагрузите nginx: systemctl reload nginx.

Типичные ошибки

  • Ошибка 502 Bad Gateway - PHP-FPM не запущен или не слушает сокет. Проверьте статус: systemctl status php8.2-fpm.
  • Ошибка 403 Forbidden - неверные права на корневой каталог. Установите права chmod 755 /var/www/html и владельца chown nginx:nginx /var/www/html -R.

Вариант 2: Установка дополнительных модулей PHP (расширения)

Для работы с базами данных, изображениями, шифрованием и другими функциями требуются специфические расширения.

Какие расширения PHP необходимо добавить для типового веб-приложения?

Установка популярных модулей:

apt-get install php8.2-mysql php8.2-pgsql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-opcache

После установки перезапустите PHP-FPM: systemctl restart php8.2-fpm.

Проверить список активных модулей можно с помощью phpinfo() или команды:

php -m
[PHP Modules]
 Core
 ctype
 curl
 date
 ...

Проблема: модуль установлен, но не появляется в списке

Проверьте, что модуль подходит под версию PHP (например, php8.2-mysql для PHP 8.2). Возможно, модуль требуется включить в php.ini: extension=mysqli.

Вариант 3: Сборка PHP из исходного кода

Подходит, когда нужна нестандартная конфигурация (например, специфические опции компиляции или версия PHP, отсутствующая в репозитории).

Как собрать PHP из исходников с дополнительными параметрами на Alt Linux?

Сначала установите необходимые зависимости для компиляции:

apt-get install gcc make autoconf libxml2-devel sqlite-devel openssl-devel bzip2-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel

Скачайте исходный код PHP (например, с официального сайта):

wget https://www.php.net/distributions/php-8.2.15.tar.gz && tar -xzf php-8.2.15.tar.gz && cd php-8.2.15

Настройте конфигурацию с нужными опциями, например, для сборки без некоторых модулей:

./configure --prefix=/usr/local/php8.2 --with-openssl --with-pdo-mysql --enable-mbstring --enable-fpm

Соберите и установите:

make -j$(nproc) && make install

Создайте конфигурационный файл php.ini из шаблона:

cp php.ini-production /usr/local/php8.2/lib/php.ini

Настройте PHP-FPM, скопировав пример:

cp /usr/local/php8.2/etc/php-fpm.conf.default /usr/local/php8.2/etc/php-fpm.conf

Запустите PHP-FPM: /usr/local/php8.2/sbin/php-fpm.

Частые ошибки при компиляции

  • Ошибка "configure: error: libxml2 not found" - необходимо установить пакет libxml2-devel.
  • Ошибка "make: *** no targets" - пропущен configure или нарушены зависимости.
  • Конфликт с системным PHP - не рекомендуется удалять системный PHP, лучше установить собранную версию отдельно и использовать её через полный путь.
Вариант 4: Использование Docker-контейнера с PHP

Позволяет запустить PHP в изолированном окружении без влияния на основную систему. Удобно для разработки и тестирования.

Как быстро запустить PHP в контейнере Docker на Alt Linux?

Установите Docker Engine:

apt-get install docker-engine

Запустите Docker:

systemctl enable --now docker

Создайте файл Dockerfile в проекте:

FROM php:8.2-fpm
COPY . /var/www/html
WORKDIR /var/www/html

Соберите образ и запустите контейнер:

docker build -t my-php-app . && docker run -d -p 8080:80 my-php-app

Для тестирования перейдите на http://localhost:8080.

Проблемы с Docker

  • Permission denied при запуске Docker - пользователь не в группе docker. Добавьте: usermod -aG docker $USER и перелогиньтесь.
  • Не хватает памяти для сборки - увеличьте ограничение в настройках Docker Desktop или используйте опцию --memory.

Расширенные примеры конфигурации PHP на Alt Linux

Как настроить php.ini для оптимальной производительности?

Для типового веб-приложения рекомендуется изменить следующие параметры в файле /etc/php/8.2/fpm/php.ini или /usr/local/php8.2/lib/php.ini:

Пример
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
date.timezone = Europe/Moscow
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000

После изменений перезапустите PHP-FPM.

Пример интеграции PHP с Apache (mod_php)

Установите пакет php8.2-apache2handler:

Пример
apt-get install php8.2-apache2handler

Включите модуль и перезапустите Apache:

Пример
a2enmod php8.2 && systemctl restart apache2

Создайте файл info.php в DocumentRoot:

Пример
<?php phpinfo(); ?>

Откройте в браузере http://localhost/info.php - отобразится полная информация о PHP.

Установка Composer для управления зависимостями

Composer - менеджер пакетов для PHP. Установка через официальный скрипт:

Пример
php -r 'copy("https://getcomposer.org/installer", "composer-setup.php");' && php composer-setup.php --install-dir=/usr/local/bin --filename=composer && php -r 'unlink("composer-setup.php");'

Проверьте версию:

Пример
composer --version
Composer version 2.7.1 2024-02-20 10:44:13

Подключение PHP к MySQL (PDO)

Пример скрипта, выполняющего запрос к базе данных:

Пример
<?php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$user = 'dbuser';
$pass = 'dbpass';
try {
    $pdo = new PDO($dsn, $user, $pass);
    $stmt = $pdo->query('SELECT VERSION()');
    $row = $stmt->fetch(PDO::FETCH_NUM);
    echo 'MySQL version: ' . $row[0];
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

Вывод при успешном подключении:

MySQL version: 8.0.36

Настройка PHP-FPM пула для разных приложений

Можно создать несколько пулов, каждый со своим пользователем и конфигурацией. Например, файл /etc/php/8.2/fpm/pool.d/site1.conf:

Пример
[site1]
user = site1
listen = /run/php/php8.2-fpm-site1.sock
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15

Перезапустите PHP-FPM и используйте сокет в nginx.

Работа с сессиями в PHP: пример сохранения в Redis

Установите расширение phpredis и настройте php.ini:

Пример
apt-get install php8.2-redis

В php.ini добавьте:

Пример
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

Проверьте, что Redis запущен. Создайте скрипт для проверки сессии:

Пример
<?php
session_start();
$_SESSION['test'] = 'Hello Redis';
echo session_id() . "\n";
echo $_SESSION['test'];

После обновления страницы сессия сохраняется.

Установка PHP на Alt Linux - comments

En
Alt linux php (php)