September 11, 2020

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

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

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

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

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

Установка Apache

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

sudo apt install apache2

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

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

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

Установка пакетов 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

В нашем файле есть ссылки на таблицы базы данных 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.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

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

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