Nginx + php7.0-fpm + php5.6-fpm + MySQL + phpmyadmin на Debian 9

В данном топике рассмотрим как на Debian 9 одновременно запускать сайты на версиях php7.0 и php5.6

1. Установка Nginx + php7.0-fpm + MySQL + phpmyadmin

По умолчанию в системе Debian 9 устанавливается версия php7.0, установить эту php версию вместе с вебсервером nginx и сервером БД MariaDB можно выполнив команду:

apt-get update && apt-get install nginx php7.0-fpm php7.0-mysql mysql-server phpmyadmin -y


В процессе установки phpmyadmin будет предложено установить вебсервер Apache или Lighttpd, не выбирайте их установку так как мы ставим nginx.

2. Установка php5.6-fpm на Debian 9

Для установки php5.6-fpm необходимо добавить в систему репозиторий со старой версией php5.6
Добавляем репозиторий, ключ а так же поддержку https для менеджера пакетов apt командами:

echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
apt install ca-certificates apt-transport-https


Устанавливаем php5.6-fpm командой:

apt-get update | apt-get install php5.6-fpm php5.6-mysql


Проверяем что в системе запущено две службы php а именно php7.0-fpm и php5.6-fpm

Вывод команды: pstree | grep php
|-php-fpm5.6---2*[php-fpm5.6]
|-php-fpm7.0---2*[php-fpm7.0]

3. Конфигурация вебсервера Nginx для проверки php7.0-fpm и php5.6-fpm на Linux Debian 9

Редактируем конфигурационный файл Nginx по умолчанию /etc/nginx/sites-enabled/default и приводим его к виду:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name 185.220.35.135;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }

  location /php5/ {
        alias /var/www/php5/;

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_param PATH_INFO $fastcgi_script_name;
        }
}

    location ~ /\.ht {
        deny all;
    }

   location /phpmyadmin/ {
        alias /usr/share/phpmyadmin/;

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_param PATH_INFO $fastcgi_script_name;
        }
}
}


Рестарт nginx и последующая проверка версий php:
/etc/init.d/nginx restart


4. Проверка работы разных версий php.

Добавим файл phpinfo.php в директории /var/www/html (по умолчанию у нас будет работать php7.0, сокет /var/run/php/php7.0-fpm.sock), для директории /var/www/php5/ подключим версию php5.6 (сокет /var/run/php/php5.6-fpm.sock) с содержимым:

<?php
phpinfo();
?>


В последующем для разных доменов можно подключать нужную версию php используя разные обработчики php а именно:
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
или
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;


Итог:

Версия php 5.6
Версия php 5.6

Версия php 7.0
Версия php 7.0

В консоли сервера так же можно использовать разные версии php, например вывод файла phpinfo.php в консоли можно сделать командами:
php5.6 /var/www/html/phpinfo.php | more
и
php7.0 /var/www/html/phpinfo.php | more

проверив параметры настроек разных весий php.

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.