Установка и настройка mariadb на centos 7

6: Настройка политики SELinux

Политика SELinux позволит всем нодам обмениваться данными и выполнять операции кластера.

SELinux – это модуль ядра Linux, который повышает безопасность операционных систем благодаря поддержке обязательных политик контроля доступа. Он включен в CentOS 7 по умолчанию и запрещает демону MariaDB выполнять множество потенциально опасных действий.

Чтобы создать политику, нужно выполнить в кластере ряд действий с разрешающим режимом SELinux для MySQL. Затем вы создадите политику из зарегистрированных событий и, наконец, установите принудительное выполнение SELinux после установки политики.

Сначала разрешите доступ к соответствующим портам, выполнив на всех трех серверах следующие команды:

Примечание: Вы можете получить ошибку ValueError при разрешении доступа к некоторым из этих портов. Это означает, что состояние SELinux для этого порта уже установлено, что в этом случае не повлияет на работу.

В этих командах используется инструмент управления semanage с флагом –a, он добавит порты и будет игнорировать сервер базы данных.

Затем выполните следующую команду на всех трех серверах. Она временно переводит домен MySQL SELinux в разрешительный режим.

Обработка этой команды может занять минуту и не выведет никаких выходных данных.

Затем остановите сервер БД на всех нодах, чтобы загрузить кластер базы данных с общими политиками SELinux. Для этого выполните на всех трех нодах следующую команду:

Запустите кластер для генерации событий взаимодействия между нодами, которые будут добавлены в политику SELinux. На первой ноде загрузите кластер, выполнив:

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

Теперь запустите сервер на второй ноде:

Затем сделайте то же самое на третьей ноде:

Вы не увидите вывод от предыдущих команд. Чтобы сгенерировать события IST, выполните следующее на всех трех серверах:

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

Первая команда ищет сгенерированные события в файле audit.log и передает их в модуль Galera.pp, созданный инструментом audit2allow. Это приведет к следующему выводу:

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

Теперь, когда политика активна, отключите разрешающий режим для сервера MariaDB:

Вы успешно создали и включили политику SELinux.

Установка PHP на CentOS 7 / RHEL 7

Для установки PHP и модулей, такие как GD / mysql введите следующую комманду

Shell

yum install php php-mysql php-gd php-pear

1 yum install php php-mysql php-gd php-pear

Необходимо перезагрузить HTTPD (Apache) сервер, введите:

Shell

systemctl restart httpd.service

1 systemctl restart httpd.service

Для поиска всех других PHP модулей:

Shell

yum search php-

1 yum search php-

Чтобы получить более подробную информацию о модуле:

Shell

yum info php-pgsql

1 yum info php-pgsql

Проверка PHP на сервере

Создайте файл с именем /var/www/html/test.php следующим образом:

Shell

vi /var/www/html/test.php

1 vi/var/www/html/test.php

Добавьте следующий код:

LAMP сервер установлен, если у вас есть проблемы с настройкой сервера, мы производим разовые работы по установке и настройке web сервера LAMP.

CentOS 8 netinstall

Рассмотрим теперь установку centos 8 по сети с boot образа. Она ничем не отличается от обычной, кроме одного момента — вам нужно сначала настроить сеть с выходом в интернет или с доступом к локальному репозиторию и указать этот репозиторий в качестве источника для установки системы.

В качестве источника для установки я буду использовать упомянутое ранее . CentOS 8 netinstall url — https://mirror.yandex.ru/centos/8/BaseOS/x86_64/os/

Указываем путь, сохраняем настройки и ждем, когда установщик подключиться к репозиторию и заберет у него информацию о пакетах. После этого в разделе Software Selection можно выбрать необходимый для установки набор софта, как и при локальной установке. Все остальное настраиваем точно так же, как мы сделали выше.

Web сервер на CentOS 7

Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:

  1. Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
  2. PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
  3. Mysql — система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Последнее время я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.

Подопытным сервером будет выступать виртуальная машина от ihor, характеристики следующие:

Процессор 2 ядра
Память 8 Gb
Диск 150 Gb SSD

Хочу сразу уточнить, что разбираю базовую дефолтную настройку. Для улучшения быстродействия, повышения надежности и удобства пользования нужно установить еще несколько инструментов, о чем я расскажу отдельно. В общем случае для организации веб сервера будет достаточно того, что есть в этой статье.

Если у вас еще нет сервера, то вам надо выполнить установку CentOS 7. А если сервер уже установлен, то не забудьте его настроить

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

Шаг 3

Тестирование сборки

Для того, чтобы использовать команды администратора, нам необходимо понадобится инструмент mysqladmin. Используем следующую команду для того, чтобы подключиться к MariaDB в качестве суперпользователя с запросом пароля и показом версии:

$ mysqladmin -u root -p version

На экране высветится информация, похожая на эту:

mysqladmin Ver 9.0 Distrib 5.5.50-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Server version 5.5.50-MariaDB
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 5 min 9 sec

Threads: 1 Questions: 42 Slow queries: 0 Opens: 1 Flush tables: 2 Open tables: 27 Queries per second avg: 0.172

Это доказывает, что установка прошла успешно.

Install MariaDB Yum Repository in CentOS 8:

MariaDB Server 10.5.3 is the latest release therefore it is not available in CentOS 8 yum repositories.

MariaDB provides an official yum repository, that we can use to install MariaDB Server 10.5 on CentOS 8.

Create a yum repository file as follows.

# vi /etc/yum.repos.d/MariaDB.repo

Add following directives in this file.

# MariaDB 10.5 CentOS repository list - created 2020-05-29 08:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Build cache for MariaDB yum repository.

# dnf makecache
CentOS-8 - AppStream                            7.8 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                 292  B/s | 3.9 kB     00:13
CentOS-8 - Extras                               3.7 kB/s | 1.5 kB     00:00
MariaDB                                         164 kB/s | 512 kB     00:03
Metadata cache created.

Step 3 – Secure MariaDB Install

You also need to secure your MariaDB installation using passwords and do some other changes. To do this run secure installation script from the command line.

sudo /usr/bin/mysql_secure_installation

The secure installation script will ask for user input as some points, follow the installation as per below output showing, All user inputs are highlighted with red color.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y
 ... Success!

Disallow root login remotely? [Y/n] y
 ... Success!

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...
Thanks for using MariaDB!

Шаг 1 — Установка веб-сервера Apache

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

При получении запроса введите для подтверждения того, что вы хотите установить Apache.

После завершения установки запустите следующую команду, чтобы активировать и запустить сервер:

Если вы активировали брандмауэр в соответствии с руководством по начальной настройке сервера, вам нужно будет разрешить подключение к Apache. Следующая команда будет постоянно активировать подключения по HTTP, запущенные на порту по умолчанию:

Чтобы подтвердить применение изменений, вы можете использовать следующую команду:

Вывод будет выглядеть следующим образом:

Выполните перезапуск конфигурации брандмауэра, чтобы изменения вступили в силу:

После добавления нового правила брандмауэра вы можете проверить, запущен ли сервер, запросив доступ к публичному IP-адресу или доменному имени сервера из вашего веб-браузера.

Примечание. Если вы используете DigitalOcean в качестве провайдера хостинга DNS, вы можете изучить нашу для получения подробных инструкций по настройке нового доменного имени и указать ваш сервер.

Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:

Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.

Также вы можете проверить доступность IP-адреса из других мест в Интернете:

Введите полученный адрес в браузере, после чего вы попадете на страницу Apache по умолчанию:

Если вы увидите эту страницу, это значит, что ваш веб-сервер установлен корректно.

Cкачать CentOS 8

Загрузить CentOS 8 можно как с официального сайта так и со сторонних репозиториев. Я обычно использую зеркало Яндекса для загрузки — https://mirror.yandex.ru/centos/ И его же для сетевой установки. Чтобы вам долго не искать, сразу скажу, что установочные образы лежат тут. Структура репозитория не очевидная. Я первое время после знакомства с центос путался в ее репозиториях, особенно когда искал url для netinstall.

Напоминаю, что 32 bit или i386 редакции CentOS 8 не существует. Все дистрибутивы только x86_64, то есть 64 bit.

В качестве альтернативных зеркал для загрузки centos 8 можно использовать следующие:

  • http://mirror.corbina.net/pub/Linux/centos/
  • http://mirror.docker.ru/centos/
  • http://mirror.logol.ru/centos/

Это актуально для тех, у кого Яндекс по каким-то причинам заблокирован. Жаль, что приходится сталкиваться с повсеместными блокировками в интернете. Плохая тенденция, которая осложняет многие моменты.

Шаг #6: Установка и настройка php-fpm

В отличии, например от Apache, Nginx самостоятельно работает только со статикой, если в запросе к нему попадается php код, то Nginx сам его не обрабатывает, а проксирует (передает) на специальный php-обработчик, в роли которого выступает один из php модулей — php-fpm (fastCGI process manager).

На момент написания статьи php-fpm последней версии 7.1 нельзя установить из стандартных репозиториев, поэтому в наш список репозиториев () нужно добавить два дополнительных репозитория: EPEL-release и remirepo, а затем уже установить пакет , а также несколько других нужных модулей. Так установка EPEL-release описана ранее в шаге по установке Nginx, то сейчас коснемся только установки remirepo.

Установим репозиторий от remirepo.com:

Установим дополнительные инструменты для активации дополнительного репозитория remi-php71:

Теперь, из уже подключенного репозитория установим необходимые php-пакеты:

  • php-fpm           — обработчик php кода для Nginx
  • php-mysqlnd  — содержит функции для работы с БД
  • php-mbstring — содержит функции для работы со строками
  • php-cli             — позволяет запускать php код прямо в консоли

Запустим php-fpm.

Настройка файла конфигурации php-fpm

Откроем главный конфиг php — :

На данный момент нас интересует одна директива — , которая «говорит» php, чтобы он выполнил любой ближайший файл, если изначально запрашиваемый файл не был найден.

Существует опасность в том, что пользователь может создавать вредоносные запросы на сервер, которые будут беспрепятственно выполнены, чего допустить никак нельзя. Чтобы этого не случилось, найдем директиву , раскоментируем и отключим, установив ее параметр в значение — 0.

Также откройте для редактирования файл конфигурации php-fpm —  и измените в нем имя пользователя и группы (по умолчанию установлен пользователь apache). Это позволит избежать проблем с правами на запись файлов сайта.

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

После правки всех конфигов, перезапустим php-fpm.

Проверка работы php-скриптов

Создайте тестовый файл для сайта, например , и вставьте в него следующий код:

Далее в браузере перейдите по адресу example.ru/test.php, если на полученной странице отобразится результат выполнения функции , то это значит, что php-код успешно обрабатывается и на этом установка LEMP-стека завершена.

Проверка работы PHP

Теперь файл нужно удалить.

Установка Asterisk

Скачиваем архив последней версии Asterisk с официального сайта.

# cd ~ && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

Распаковываем исходники.

# tar zxvf asterisk-*.tar.gz

Переходим в директорию с исходниками.

# cd asterisk*

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

# contrib/scripts/install_prereq install

Запускаем скрипт для скачивания исходников для работы с mp3.

# contrib/scripts/get_mp3_source.sh

Настраиваем конфигурацию:

# ./configure --with-pjproject-bundled --with-jansson-bundled --with-crypto --with-ssl=ssl --with-srtp

Запускаем меню для выбора параметров:

make menuselect

В целом, можно оставить дефолтную настройку, если вы не очень разбираетесь, что тут выбирать. Более подробно можете посмотреть в моей статье про подробную настройку asterisk.

Можно запускать установку asterisk.

# make && make install && make config && make samples && ldconfig

Настроим запуск астериск от системного пользователя asterisk. Для этого редактируем скрипт запуска /usr/sbin/safe_asterisk, установив параметр.

ASTARGS="-U asterisk"

Можете то же самое сделать автоматически.

# sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g' /usr/sbin/safe_asterisk

Создадим этого пользователя и назначим нужные права на каталоги.

# useradd -m asterisk
# chown asterisk.asterisk /var/run/asterisk
# chown -R asterisk.asterisk /etc/asterisk
# chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
# chown -R asterisk.asterisk /usr/lib/asterisk

Запускаем Asterisk.

# systemctl start asterisk

Проверьте сразу, что он запустился.

# systemctl status asterisk

Если у вас будут ошибки:

radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory

То отредактируйте конфигурационные файлы asterisk, заменив в некоторых строках пути на правильные.

# sed -i 's";\"\"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

После этого перезапустите asterisk, ошибок быть не должно.

5: Настройка брандмауэра

Примечание: Данный раздел нужно выполнить на каждой ноде кластера.

На этом этапе мы настроим брандмауэр и откроем порты, необходимые для связи между нодами.

Проверьте состояние брандмауэра firewall:

Команда вернула:

В данном случае он поддерживает SSH, DHCP, HTTP и HTTPS. Если вы попытаетесь запустить кластер, вы не сможете этого сделать, потому что брандмауэр его заблокирует. Чтобы исправить это, нужно добавить правила, которые откроют трафик между MariaDB и Galera.

Galera может использовать четыре порта:

  • 3306: для соединения с клиентами MySQL и для State Snapshot Transfer (работает через метод mysqldump).
  • 4567: для репликации Galera Cluster и для многоадресной репликации по UDP и TCP.
  • 4568: Incremental State Transfer.
  • 4444: остальные операции State Snapshot Transfer.

Откройте эти порты в брандмауэре. Убедившись, что репликация работает, вы сможете закрыть все ненужные порты и ограничить трафик только серверами кластера.

Чтобы открыть порты, используйте такие команды:

Используя –zone = public и –add-port =, firewall-cmd открывает эти порты для публичного трафика. Флаг –permanent сохраняет эти правила для дальнейших сессий.

Теперь добавьте каждый сервер в зону public, выполнив следующие команды. Замените условные адреса соответствующими внутренними IP-адресами ваших нод.

Перезапустите брандмауэр:

После того, как вы настроили брандмауэр на первой ноде, создайте те же настройки на второй и третьей ноде.

Теперь можно создать политику SELinux.

Установка Mariadb

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo следующего содержания.

# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем MariaDB.

# yum install MariaDB-server MariaDB-client MariaDB-shared

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb
# systemctl enable mariadb
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: