Вот и добрались до подготовки LAMP сервера. Надо перенести несколько внутренних порталов на RedOS, но раз уж добрался до любимых теплых LAMP-овых серверов, то давайте будем вспоминать как их вообще настраивают.
Принцип там один и не будем ограничиваеться любимым RED OS 8, а рассмотрим в общих чертах для большинства популярных ОС на базе Linux-ядра.

Установка необходимых пакетов
Установка MySQL/MariaDB в REDOS 8
При помощи стороннего репозитария MySQL Community.
# dnf install yum-utils -y
# wget https://repo.mysql.com/mysql80-community-release.el8.noarch.rpm
# rpm -Uvh mysql80-community-release.el8.noarch.rpm
# dnf repolist enabled | grep mysql
# dnf module reset mysql && dnf module enable mysql:8.0
# dnf install mysql-server -y
# systemctl start mysqld
# systemctl enable mysqld
Из стандартного репозитария.
# dnf install mariadb-server
# systemctl enable mariadb —now
Установка необходимых пакетов Apache и PHP в RedOS 8
Выбираем для работы версию PHP 8.3.
# dnf install php83-release
# dnf clean all
# dnf makecache
Устанавливаем пакеты.
# dnf install httpd php php-dom php-mbstring php-gd php-pdo php-json php-xml php-zip php-curl php-mcrypt php-pear setroubleshoot-server bzip2 php-ldap php-mysqlnd mod_auth_kerb php-fpm
# systemctl enable httpd
# systemctl start httpd
# setsebool -P httpd_can_network_connect 1
# setsebool -P httpd_graceful_shutdown 1
# setsebool -P httpd_can_network_connect_db 1
# setsebool -P daemons_dump_core 1
# dnf install mod_ssl
Обратите внимание, что PHP нам требуется версии 8.2 или выше.

Именно для этого выполнялись операции.
# dnf install php83-release
# dnf clean all
# dnf makecache
Настройка окружения
Настройка MySQL/MariaDB
Параметры сервера для MariaDB находятся в файле /etc/my.cnf.d/mariadb-server.cnf, а для MySQL в файле /etc/mysql/mysql.conf.d/mysqld.cnf.
Изменим ряд параметров.
bind-address=0.0.0.0
Перезапускаем сервер баз данных.
# systemctl restart mariadb --now
Авторизуемся на сервере и задаем пароль, для пользователя root, создаём пользователя для базы данных mediawiki_db и назначаем права (совершенно типовые операции).
Выполняем скрипт настройки mysql_secure_installation.
# mysql_secure_installation
Базовая настройка выглядит следующим образом.
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n]
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] N
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Создаем пользователя и базу данных. Первым делом авторизуемся на сервере баз данных из консоли.
# mysql -u root -p
Выполняем команды по созданию объектов в базе данных.
CREATE DATABASE wiki_db;
CREATE USER 'wiki_user'@'localhost' IDENTIFIED BY 'qwerqwer';
GRANT ALL PRIVILEGES ON wiki_db.* TO 'wiki_user'@'localhost';
FLUSH PRIVILEGES;
quit
Настроим дополнительно доступ к базе данных при помощи DBeawer.

Настройка Apache2 в RedOS 8
Создаем каталог для хранения файлов нашего LAMP-проекта.
# mkdir -p /var/www/vhosts/wiki.ipa.sngp.su
Фактически нам потребуется создать конфигурацию виртуального хоста для нашей медиа-вики, для чего создаем файл конфигурации /etc/httpd/conf.d/wiki.ipa.sngp.su.conf.
<VirtualHost *:80>
ServerName wiki.ipa.sngp.su
ServerAdmin admin@wiki.ipa.sngp.su
DocumentRoot /var/www/vhosts/wiki.ipa.sngp.su
<directory /var/www/vhosts/wiki.ipa.sngp.su>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</directory>
</VirtualHost>
Перезапускаем WEB-сервер Apache.
# systemctl restart httpd
Для теста внесем себе на рабочей станции в /etc/hosts запись wiki.ipa.sngp.su.
10.54.54.17 wiki.ipa.sngp.su
Создадим тестовый индексный файл.
# echo "Hello World SNGP" > /var/www/vhosts/wiki.ipa.sngp.su/index.html
Проверяем, что наша тестовая страница открывается в браузере.

Разворачиваем приложение Media Wiki
Официальный сайт Media Wiki находится по адресу https://www.mediawiki.org/wiki/Download.

Загружаем файл себе на сервер, распаковываем и назначаем права на загруженный проект.
# unzip ./mediawiki-1.45.3.zip
# cp -R ./mediawiki-1.45.3/* /var/www/vhosts/wiki.ipa.sngp.su/
# chown -R apache:apache /var/www/vhosts/wiki.ipa.sngp.su/
Создаем DNS-запись и SSL-сертификат для сайта
Порядок настройки DNS-записей и получения SSL-сертификата подробно описан в моей статье.
Конфигурация Apache для работы по https протоколу.
<VirtualHost *:443>
ServerName wiki.ipa.sngp.su
ServerAdmin admin@wiki.ipa.sngp.su
DocumentRoot /var/www/vhosts/wiki.ipa.sngp.su
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/wiki.ipa.sngp.su.crt
SSLCertificateKeyFile /etc/httpd/ssl/wiki.ipa.sngp.su.key
<directory /var/www/vhosts/wiki.ipa.sngp.su>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</directory>
</VirtualHost>
<VirtualHost *:80>
ServerName wiki.ipa.sngp.su
ServerAdmin admin@wiki.ipa.sngp.su
DocumentRoot /var/www/vhosts/wiki.ipa.sngp.su
Redirect permanent / https://wiki.ipa.sngp.su
</VirtualHost>
Настройка Media Wiki с помощью WEB-интерфейса
Задаем язык для Media Wiki.

Этап проверки настроек.

Установим APCu.
# install php-pecl-apcu
Проверим, что модуль установлен и загружен.
# php -m | grep apcu
apcu
Запретим выполнение скриптов в каталоге /var/www/vhosts/wiki.ipa.sngp.su/images/.
<VirtualHost *:443>
ServerName wiki.ipa.sngp.su
ServerAdmin admin@wiki.ipa.sngp.su
DocumentRoot /var/www/vhosts/wiki.ipa.sngp.su
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/wiki.ipa.sngp.su.crt
SSLCertificateKeyFile /etc/httpd/ssl/wiki.ipa.sngp.su.key
<directory /var/www/vhosts/wiki.ipa.sngp.su>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</directory>
<Directory "/var/www/vhosts/wiki.ipa.sngp.su/images/">
AllowOverride None
AddType text/plain .html .htm .shtml .phtml
RemoveHandler .php
<FilesMatch "\.ph(p[3457]?s?|tml)$">
SetHandler None
</FilesMatch>
Header set X-Content-Type-Options nosniff
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName wiki.ipa.sngp.su
ServerAdmin admin@wiki.ipa.sngp.su
DocumentRoot /var/www/vhosts/wiki.ipa.sngp.su
Redirect permanent / https://wiki.ipa.sngp.su
</VirtualHost>
Теперь можем продолжать установку, так-как предупреждений больше нет.

Настраиваем подключение к базе данных.

Настройка WEB-интерфейса для работы с базой данных.

Задаем учетную запись администратора.

Подтверждаем установку.

Установка завершена. Можно пользоваться.





