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) {