WEB Сервер на Nginx

NGINX + PHP + MySQL (Debian 9)

Собираем полноценный веб сервер на связке Nginx — PHP (версии 7.3 и 5.6) — MySQL (MariaDB) — phpMyAdmin на Linux Debian 9.x. Версий PHP может быть и больше. Это на усмотрение и потребности.

1. Ставим MySQL (MariaDB):

apt-get install mariadb-server mariadb-client mariadb-common

и настраиваем безопасность:

mysql_secure_installation 

2. Подключаем репозиторий (в Debain 9 нет PHP 7.3 и PHP 5.6).

Сертификат:

apt-get install apt-transport-https lsb-release ca-certificates

Получаем ключ gpg:

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Добавляем новый репозиторий в свои источники:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list

Обновляем пакеты:

apt-get update

3. Устанавливаем NGINX:

apt-get install nginx
systemctl enable nginx
systemctl start nginx

4. Установка PHP и PHP-FPM:

apt-get install php7.3 php7.3-fpm php7.3-mysql

Подключим PHP к Nginx:

nano /etc/nginx/sites-enabled/default

В секции location:

location / {
    index index.php index.html index.htm;
}

В секции server:

location ~ .php$ {
     set $root_path /var/www/html;
     fastcgi_pass unix:/run/php/php7.3-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
     include fastcgi_params;
     fastcgi_param DOCUMENT_ROOT $root_path;
 }

Проверим конфигурацию и перезапустим:

nginx -t
systemctl restart nginx

5. Установка phpMyAdmin:

apt-get install phpmyadmin

Создаем алиас для phpmyadmin:

ln -s /usr/share/phpmyadmin /var/www/html/webtool

Теперь phpMyAdmin доступен по адресу — https://ваш_хост/webtool/

6. Создаем виртуальный хост:

nano /etc/nginx/sites-available/airmeno.ru

server {
        listen       80;
        server_name  www.airmeno.ru airmeno.ru;
        set $root_path /var/www/airmeno.ru;

root $root_path;
    location / {
        try_files  $uri $uri/ /index.php;
        index index.php;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param DOCUMENT_ROOT $root_path;
    }
}

Создаем ссылку в sites-enabled и перезапускаем Nginx:

ln -s /etc/nginx/sites-available/airmeno.ru /etc/nginx/sites-enabled/airmeno
systemctl reload nginx

7. Ставим версию PHP 5.6 для старых сайтов:

apt-get install php5.6 php5.6-fpm php5.6-cgi php5.6-mysql

Проверим наличие установленных версий и версию по умолчанию.

update-alternatives --config php

Версию PHP выбираем в параметрах строчки:

location ~ .php$ {
            fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        }

Для 7.3 - php7.3-fpm.sock
для 5.6 - php5.6-fpm.sock

Ошибка в phpMyAdmin (PHP 7.3 + Debian 9)

Warning in ./libraries/plugin_interface.lib.php#551 count(): Parameter must be an array or an object that implements Countable

Исправления:

в файле /usr/share/phpmyadmin/libraries/sql.lib.php:

строку
|| (count($analyzed_sql_results['select_expr'] == 1)
на
|| ((count($analyzed_sql_results['select_expr']) == 1)

в файле /usr/share/phpmyadmin/libraries/plugin_interface.lib.php:

строку
if ($options != null && count($options) > 0) {
на
if ($options != null && count((array) $options) > 0) {
Top