Загрузка...
Х

phpMyAdmin: Установка на Debian c nginx.

Так как стандартная установка через apt-get притягивает за собой кучу не нужных нам зависимостей, например apache2, php5 вместо php7.0. Мы установим этот удобный инструмент вручную. Будет он работать у нас на LEMP стеке (связка nginx+php7.0-fpm+mariadb), по установке и настройке которого можно узнать из этой статьи. Предпологаем, что мы работаем из-под root-пользователя.

Установка phpmyadmin

Сменим директорию на  /usr/share:

cd /usr/share

Скачаем свежий архив:

wget https://files.phpmyadmin.net/phpMyAdmin/4.5.4.1/phpMyAdmin-4.5.4.1-all-languages.zip

Распакуем архив: (перед этим необходимо установить пакет unzip):

apt-get install -y unzip
unzip phpMyAdmin-4.5.4.1-all-languages.zip

Переименуем папку и удалим архив:

mv phpMyAdmin-4.5.4.1-all-languages phpmyadmin
rm phpMyAdmin-4.5.4.1-all-languages.zip

Сменим права:

chmod -R 0755 /usr/share/phpmyadmin

Настройка nginx

Я повесил pma на не стандартный порт и поддомен, чтобы ботам сложнее было его искать. Вместо domain.ltd подставляем свой домен.

Создадим файл настроек:

nano /etc/nginx/sites-available/pma.conf

С содержимым:

server {
  listen          85;
  server_name     pma.domain.ltd;
  root        /usr/share/phpmyadmin;
  index       index.php;

  client_max_body_size 32m;

  access_log       off;
  error_log       /var/log/nginx/pma.error.log;

  location ~ .php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
  
  location ~* \.(ico|css|js)(\?[0-9]+)?$ {
    expires max;
    log_not_found off;
  }

  location = /favicon.ico {
    log_not_found off;
    access_log off;
  }

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
  }

}

Активируем конфиг и перезапустим nginx:

ln -s /etc/nginx/sites-available/pma.conf /etc/nginx/sites-enabled/pma.conf
service nginx restart

На этом базовая установка завершена, но мы еще настроим расширенные возможности.

Настройка MariaDB

Создадим базу и дадим нужные привелегии для расширенных возможностей pma, например закладки и история.

Войдем в базу:

mysql -u root -p

Выполним данные команды, «pmapass» желательно заменить на стойкий пароль. Тут мы создаем базу, пользователя и даем ему необходимые права.

CREATE DATABASE phpmyadmin;
GRANT USAGE ON mysql.* TO 'pmauser'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
    Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
    Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
    File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
    Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
    Execute_priv, Repl_slave_priv, Repl_client_priv
    ) ON mysql.user TO 'pmauser'@'localhost';
GRANT SELECT ON mysql.db TO 'pmauser'@'localhost';
GRANT SELECT ON mysql.host TO 'pmauser'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
    ON mysql.tables_priv TO 'pmauser'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pmauser'@'localhost';

Заливаем структуру таблиц:

mysql -u USER -pPASSWORD phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Создаем конфиг phpmyadmin:

nano /usr/share/phpmyadmin/config.inc.php

С содержимым:

<?php
$i = 0;
 
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['controluser'] = 'pmauser';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
 
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['blowfish_secret'] = '325y28f8f3krj383q';
$cfg['ForceSSL'] = false;
?>

Пишем произвольную фразу в blowfish_secret для безопасности и активируем SSL(если установлен сертификат) ForceSSL = true.

Выставим права на всякий случай:

chown www-data:www-data /usr/share/phpmyadmin/config.inc.php

Результать ниже на стриншоте.

9656f1db8e

На этом настройку можно закончить, но я хотел бы еще рассмотреть возможность http-аунтификации.

Добавляем HTTP авторизацию

Для начала нам необходимо сгенерировать хеш пароля. Есть стандартные улититы из Apache, но мы не будем их использовать, так как у нас нет необходимости в установке целого пакета с зависимостями. Для этого дела есть замечательный Online генератор, полученный хеш и логин записываем в файл и назовем его htpasswd(принципиального значения это не имеет).

nano /usr/share/phpmyadmin/htpasswd

Так же данный файл можно положить в любое другое место, только удостоверьтесь, что nginx сможет прочитать его. Запись будет выглядить следующем образом (admin — логин, password — пароль):

admin:ZIXt0E7AewSr2

Теперь добавляем в конфиг секцию для авторизации

auth_basic "Enter password"; 
auth_basic_user_file /usr/share/phpmyadmin/htpasswd;

Проверяем конфиг и перезапускам Nginx:

nginx -t
service nginx restart

Переходим по адресу httр://pma.domain.ltd:85, выскочит окно с предложением ввода логина и пароля, пишем логин admin пароль password и попадаем в phpMyAdmin

На этом установку можно завершить.
Обо всех найденных ошибках, а также, предложения по улучшению и просто возникших вопросах-прошу в комментарии.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.