Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

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

Установка LAMP-сервера и phpMyAdmin в Debian 10

Установка LAMP-сервера и phpMyAdmin в Debian 10

 

 

 

Установка LAMP-сервера

LAMP-сервер состоит из трёх основных частей: apache-сервер, php и MariaDB (MySQL).

Сразу же предупрежу: не боимся устанавливать MariaDB, вместо MySQL. Этот сервер баз данных абсолютно идентичен MySQL. Все проекты которые работали на MySQL, будут работать на MariaDB, без изменений и доработок.

Устанавливаем по порядку все три компоненты LAMP-сервера.

Установка Apache

Выполняем в терминале команду

sudo apt install apache2

Проверяем работу сервера в браузере, перейдя на страницу — http://localhost/

Apache2. Страница приветствия

Если видим эту страницу приветствия, то отлично — сервер работает.

На этом этапе трудностей не должно возникнуть.

Установка пакетов PHP

Теперь переходим к установке модулей PHP.

Установим основные модули

sudo apt install php libapache2-mod-php php-mysql

Установка пакетов MariaDB

Сервер баз данных устанавливаем командой

sudo apt install mariadb-server

Устанавливаем phpMyAdmin для управления базами данных

Добавляем модули PHP для работы панели управления базами данных (phpMyAdmin)

sudo apt install php-mbstring php-zip php-gd php-curl php-json php-gettext php-xml php-phpseclib

Переходим в домашний каталог

cd

phpMyAdmin нет в репозиториях Debian, по этому качаем архив с официального сайта.

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

Если не установлен распаковщик zip, то устанавливаем

sudo apt install unzip

Распаковываем архив

unzip ~/phpMyAdmin-latest-all-languages.zip

Перемещаем распакованный каталог в каталог файлов конфигурации по умолчанию

Внимание! Название каталога может отличаться от приведённого в примере. По этому в команде, каталог phpMyAdmin-5.0.2-all-languages, замените на тот, который был создан при распаковывании архива phpMyAdmin-latest-all-languages.zip.

sudo mv phpMyAdmin-5.0.2-all-languages/ /usr/share/phpmyadmin

Удаляем скачанный архив

rm ~/phpMyAdmin-latest-all-languages.zip

Настройка phpMyAdmin

Настройка phpMyAdmin состоит из трёх этапов: создание каталога временных файлов, установка нужного владельца на каталог phpmyadmin, создание конфигурационного файла.

Последовательно выполняем следующие команды:

Создаём каталог

sudo mkdir -p /var/lib/phpmyadmin/tmp

Устанавливаем владельца

sudo chown -R www-data:www-data /var/lib/phpmyadmin

Создаём конфигурационный файл config.inc.php, копируя конфигурационный файл пример

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Редактируем конфигурационный файл в редакторе nano

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

Код в файле можно заменить кодом под кнопкой "config.inc.php", но заменив значения в директивах $cfg['blowfish_secret'] и $cfg['Servers'][$i]['controlpass'].

Директива $cfg['blowfish_secret'] отвечает за шифрование (вводим парольную фразу не менее 32-х символов). В директиве $cfg['Servers'][$i]['controlpass'] меняем пароль 111111, на свой.

config.inc.php

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in documentation in the doc/ folder
 * or at .
 *
 * @package PhpMyAdmin
 */

/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = 'qds584fr25vgh354xdf65gt78hgnj524';

/**
 * Servers configuration
 */
$i = 0;

/**
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/**
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '111111';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$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';

/**
 * End of servers configuration
 */

/**
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '/var/www/backup';
$cfg['SaveDir'] = '/var/www/backup';

/**
 * Whether to display icons or text or both icons and text in table row
 * action segment. Value can be either of 'icons', 'text' or 'both'.
 * default = 'both'
 */
//$cfg['RowActionType'] = 'icons';

/**
 * Defines whether a user should be displayed a "show all (records)"
 * button in browse mode or not.
 * default = false
 */
//$cfg['ShowAll'] = true;

/**
 * Number of rows displayed when browsing a result set. If the result
 * set contains more rows, "Previous" and "Next".
 * Possible values: 25, 50, 100, 250, 500
 * default = 25
 */
//$cfg['MaxRows'] = 50;

/**
 * Disallow editing of binary fields
 * valid values are:
 *   false    allow editing
 *   'blob'   allow editing except for BLOB fields
 *   'noblob' disallow editing except for BLOB fields
 *   'all'    disallow editing
 * default = 'blob'
 */
//$cfg['ProtectBinary'] = false;

/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';
$cfg['DefaultLang'] = 'ru';

/**
 * How many columns should be used for table display of a database?
 * (a value larger than 1 results in some information being hidden)
 * default = 1
 */
//$cfg['PropertiesNumColumns'] = 2;

/**
 * Set to true if you want DB-based query history.If false, this utilizes
 * JS-routines to display query history (lost by window close)
 *
 * This requires configuration storage enabled, see above.
 * default = false
 */
//$cfg['QueryHistoryDB'] = true;

/**
 * When using DB-based query history, how many entries should be kept?
 * default = 25
 */
//$cfg['QueryHistoryMax'] = 100;

/**
 * Whether or not to query the user before sending the error report to
 * the phpMyAdmin team when a JavaScript error occurs
 *
 * Available options
 * ('ask' | 'always' | 'never')
 * default = 'ask'
 */
//$cfg['SendErrorReports'] = 'always';

/**
 * You can find more configuration options in the documentation
 * in the doc/ folder or at .
 */

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

В нашем файле есть ссылки на таблицы базы данных phpmyadmin. Создаём базу phpmyadmin

sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

Далее

Подключаемся к MariaDB

sudo mariadb

Создаём пользователя pma для phpMyAdmin.

Внимание! pass заменяем на пароль, который указывали в директиве $cfg['Servers'][$i]['controlpass'].

GRANT {select}, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'pass';

Создаём пользователя, от имени которого будем входить в панель phpMyAdmin и создавать базы данных.
Т.к. сервер разворачиваем на локальной машине, то хватит одного пользователя.

Внимание! user и pass меняем на логин и пароль, которыми вы будете пользоваться при авторизации в phpMyAdmin и работе с базами данных.

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;

Выходим из режима управления БД

exit

Теперь создаём конфигурационный файл phpmyadmin.conf

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Вставляем в него код по кнопкой.

phpmyadmin.conf

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Выполним активацию конфигурационного файла phpmyadmin.conf

sudo a2enconf phpmyadmin.conf

Конфигурируем Apache2

Создаём каталог для нашего проекта

mkdir /home/user/www/site1

заменить user на название каталога пользователя.

Создаём каталог для архивов БД

mkdir /home/user/www/backupbd

заменить user на название каталога пользователя.

Делаем текущего пользователя и его группу владельцем каталога site1

chown -R $USER:$USER /home/user/www/site1

и владельцем каталога backupbd

chown -R $USER:$USER /home/user/www/backupbd

Создаём конфигурационный файл для нашего проекта site1

sudo nano /etc/apache2/sites-available/site1.conf

Копируем и вставляем в него следующий код

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/user/www/site1
    ServerName site1.loc
    ErrorLog /home/user/www/site1/error.log
    CustomLog /home/user/www/site1/access.log combined
</VirtualHost>

заменить user на название каталога пользователя.

Для того, чтобы адрес сайта site1.loc наш браузер нашёл и обработал, нам нужно внести изменения в файл hosts.

Открываем файл hosts для редактирования

sudo nano /etc/hosts

Этот файл может иметь следующий вид:

127.0.0.1       localhost
127.0.1.1       HomePC

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

где HomePC — это имя вашего компьютера.

Приводим его к следующему виду:

127.0.0.1       localhost site1.loc
127.0.1.1       HomePC

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

то есть дописываем в конце первой строки адрес нашего сайта — site1.loc.

Сохраняем и закрываем файл hosts.

Теперь подключим виртуальный хост site1.loc, выполнив следующую команду

sudo a2ensite site1.conf

После произведённых настроек перезагрузим конфигурацию сервера Apache

sudo systemctl reload apache2

Для перезапуска сервера Apache используем следующую команду

sudo systemctl restart apache2

Включаем обработку .htaccess и вывод ошибок php

Включаем обработку .htaccess

Открываем файл apache2.conf

sudo nano /etc/apache2/apache2.conf

Находим такую часть кода

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

и ниже вставляем свою директиву

<Directory /home/user/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

заменить user на название каталога пользователя.

Сохраняем файл и закрываем.

Включаем mod_rewrite выполнив следующую команду

sudo a2enmod rewrite

Вывод ошибок php

Открываем файл php.ini

sudo nano /etc/php/7.3/apache2/php.ini

В нём последовательно находим строки содержащие следующие инструкции:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

заменяем на

error_reporting = E_ALL

находим

display_errors = Off

заменяем на

display_errors = On

находим

display_startup_errors = Off

заменяем на

display_startup_errors = On

Сохраняем файл и закрываем его.

Можно начинать работать со своим проектом.

 

14 мая 2020, 22:30    Александр Linux 0    1214 0

 

 

 

 



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

    Вы должны авторизоваться, чтобы оставлять комментарии.