« Назад

Наша статья предлагает полезную информацию, которая пригодится каждому коллеге из ИТ-сектора. Пошаговая инструкция по созданию простого классического веб-сервера на apache2, системы управления базами данных MariaDB, php 7.3, с использованием бесплатного центра сертификации Letsencrypt.

 

Исходные данные

Имеется установленная операционная система Linux Debian 10 (Buster). FQDN – web.example.com. IP-адрес – 192.168.10.10.

1. Установка системы управления базами данных MariaDB

Установка MariaDB проходит в два этапа: сначала устанавливаем нужные пакеты, а затем настраиваем необходимые элементы безопасности.

Устанавливаем пакеты:

#apt -y install mariadb-client mariadb-server

Вводим в действие мастер безопасности MariaDB:

#mysql_secure_installation

На вопросы отвечаем следующим образом:

Set the root password? [Y/n] <-- y
New password: <-- вводим новый пароль пользователя root MariaDB
Re-enter new password: <-- повторяем пароль
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

2. Установка веб-сервера apache2

Здесь все очень просто – установим его из пакета Debian:

#apt -y install apache2

И если мы зайдем в браузер по адресу http://192.168.10.10, то увидим следующую страницу:

Apache

3. Установка php 7.3

Установим php версии 7.3 и некоторые дополнительные к нему пакеты из deb пакетов:

#apt -y install libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod- fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.3 curp php7.3 -xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7. apcu

Создадим файл /var/www/html/info.php:

#nano /var/www/html/info.php

<?php
phpinfo();

Открыв его в браузере http://192.168.10.10/info.php, получим сведения о том, что php работает через Apache 2.0 Handler, а также информацию обо всех установленных модулях:

Info

 

4. Phpmyadmin

Phpmyadmin – это оболочка для управления базами данных MariaDB или Mysql через веб-интерфейс. Приложение сверхудобное и позволяет сохранить немало времени и нервов системного администратора. В десятой версии Linux Debian он, по непонятным причинам, был устранен из deb-пакетов, и устанавливать phpmyadmin придется из источников.

Создадим каталоги для phpmyadmin:

#mkdir /usr/share/phpmyadmin
#mkdir /etc/phpmyadmin
#mkdir -p /var/lib/phpmyadmin/tmp
#chown -R www-data:www-data /var/lib/phpmyadmin
#touch /etc/phpmyadmin/htpasswd.setup

Грузим архив приложения:

#cd /tmp
#wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Распаковав архив, переносим его в папку /usr/share/phpmyadmin:

#tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
#mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
#rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
#rm -rf phpMyAdmin-4.9.0.1-all-languages

Создаем конфигурационный файл phpmyadmin на базе файла-образца:

#cp /usr/share/phpmyadmin/config.sample.inc.php ¦/usr/share/phpmyadmin/config.inc.php

Редактируем его:

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

Прописываем безопасный пароль (blowfish secret), который должен содержать 32 символа:

$cfg['blowfish_secret'] = '5Gty6y67YJH7778r5fggfhydfgfyHAS3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Непременно придумайте собственный пароль, поскольку использование вышеприведенного будет опрометчивым и опасным.

Дополним конфигурационный файл строкой, в которой будет указан путь к хранению временных файлов:

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

Создадим конфигурационный файл для apache со следующим содержимым:

#nano /etc/apache2/conf-available/phpmyadmin.conf
# phpMyAdmin default Apache configuration

Alias ​​/phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php7.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>

Включаем конфигурацию и перезагружаем apache:

#a2enconf phpmyadmin
#systemctl restart apache2

Создаем новую базу данных для phpmyadmin и коннектируемся к системе управления базами данных MariaDB под пользователем root:

#mysql -u root -p

Добавляем новую базу phpmyadmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Добавляем нового пользователя pma для управления базой данных. Измените слово «пароль» на свой пароль:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'пароль' WITH GRANT OPTION;

Применяем изменения и – на выход:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Загружаем таблички в базу данных:

#mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Для загрузки необходимо ввести пароль root MariaDB.

Конфигурационному файлу /usr/share/phpmyadmin/config.inc.php придаем следующий вид:

#nano /usr/share/phpmyadmin/config.inc.php
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'пароль';

/* 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';

‘пароль’ — это пароль созданного Вами пользователя pma.

И, наконец, устанавливаем метод аутентификации по паролю в native, чтобы получить возможность подключаться в PHPMyAdmin под пользователем root:

#echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Phpmyadmin

Веб-сервер настроен!

Напоследок необходимо еще немного поработать: загрузить сайт, базу данных, добавить конфигурационный файл в apache, прописать NS-запись и настроить систему резервирования. Удачи.

Компания ООО «ИНФОТЕК.УА» предоставляет профессиональные услуги по обслуживанию компьютеров организаций

23 августа, 2019

Если у вас возникли вопросы

СВЯЖИТЕСЬ С НАМИ!

Оставьте свои данные и мы свяжемся
с вами ближайшее время