В прошлой статье мы установили PHP 7.4 на Astra Linux Orel 2.12.
Сегодня мы проверим корректность установки и наличие всех необходимых расширений PHP для нормальной работы Joomla.
Установка Mysql
Для работы Joomla необходима база данных - СУБД. Самой популярной и простой в настройке СУБД является Mysql. В силу ряда изменений в лицензионной политики Mysql сообществом был создан, полностью совместимый с Mysql, форк - MariaDB.
Установим MariaDB:
sudo apt install mariadb-server
Запустим сервер:
sudo service mysql start
Произведем первоначальную настройку сервера:
echo -e '\n\nPa$$w0rd\nPa$$w0rd\ny\nn\ny\ny' | sudo mysql_secure_installation 2>/dev/null
Скрипт настройки задает множество вопросов, строка выше позволяет автоматизировать процесс настройки. Пароль для root задается между двумя символами \n
\nPa$$w0rd\n
В нашем случае это будет:
Pa$$w0rd
Добавим пользователя для удаленного доступа к БД
Создадим файл setauth.sql с содержимым:
use mysql;
CREATE USER 'root'@'192.168.1.30' IDENTIFIED BY 'Pa$$w0rd';
GRANT ALL on *.* TO 'root'@'192.168.1.30' WITH GRANT OPTION;
update user set plugin='mysql_native_password' where user='root';
FLUSH PRIVILEGES;
Здесь мы создаем пользователя root для доступа с удаленного ПК с адресом 192.168.1.30 и предоставляем ему максимальные права доступа к серверу.
Так же обратите внимание на строку:
update user set plugin='mysql_native_password' where user='root';
Она необходима, чтобы вы могли авторизоваться на сервере с помощью пароля.
Внесем изменения в БД:
sudo mysql -u root --password='Pa$$w0rd' < setauth.sql
Внесем изменения в файл /etc/mysql/mariadb.conf.d/50-server.cnf
sudo mcedit /etc/mysql/mariadb.conf.d/50-server.cnf
Закомментируем строки:
#skip-external-locking
#bind-address = 127.0.0.1
Добавив # перед каждой из них.
Перезапустим сервер:
sudo service mysql restart
Теперь вы можете попробовать зайти на сервер с удаленного ПК, для управления Mysql серверами я использую HeidiSQL
https://www.heidisql.com
Создадим базу и пользователя для Joomla
use mysql;
CREATE DATABASE `joomla` COLLATE 'utf8mb4_general_ci';
CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'Pa$$w0rd';
GRANT ALL on *.* TO 'joomla'@'localhost' WITH GRANT OPTION;
update user set plugin='mysql_native_password' where user='joomla';
FLUSH PRIVILEGES;
Установка Joomla
Проверим установлен ли у нас unzip
sudo apt install unzip
На момент написания статьи последняя версия Joomla 3.9.28, ссылку на свежую версию вы можете найти на официальном сайте:
https://downloads.joomla.org/
Перейдем в папку сервера и скачаем Joomla 3.9
cd /var/www/html
sudo wget --output-document=joomla.zip https://downloads.joomla.org/cms/joomla3/3-9-28/Joomla_3-9-28-Stable-Full_Package.zip?format=zip
Распакуем архив
sudo unzip joomla.zip
Обратите внимание!
Для нормальной работы на папки и файлы необходимо установить разрешения:
для папок - 755
для файлов - 644
Назначить папкам и файлам группу и владельца:
www-data
Для файлов выполним
sudo find /var/www/html -type f -exec chmod 644 {} \;
Для папок выполним
sudo find /var/www/html -type d -exec chmod 755 {} \;
Установим владельца и группу
sudo chown -R www-data /var/www/html
sudo chgrp -R www-data /var/www/html
Откроем адрес
http://192.168.1.240:9999/installation/
Заполним поля на первом экране:

На следующем экране у нас возникает следующая проблема – в списке БД нет Mysqli.

Проверим тестовую страницу PHP
http://192.168.1.240:9999/test.php
Упоминание Mysqli есть только в блоке Module Authors
Значит нам придется пересобрать PHP 7.4 с поддержкой mysqli!
Сборка PHP 7.4 с поддержкой Mysqli
Откроем файл configure.sh, который мы создали в первой части, и добавим в него строку
--with-mysqli \
Запустим
./configure.sh
Запустим сборку и установку
sudo make install
Обязательно перезапустим php-fpm
sudo service php-7.4-fpm restart
Обновим страницу:
http://192.168.1.240:9999/test.php
У нас появился блок с mysqli
Обновим страницу
http://192.168.1.240:9999/installation/
Заполним первую страницу и перейдем ко второй:
У нас появилась строчка с Mysqli

Заполним поля на следующем экране.
В качестве пароля укажем
Pa$$w0rd
Имя базы данных и имя пользователя у нас будут:
joomla
Укажите адрес сервера:
127.0.0.1
это важно!
На следующем экране нажмите «Установка»
Нажмите «Удалить директорию»
Нажмите «Сайт»:
Давайте попробуем зайти в админ-панель сайта:
http://192.168.1.240:9999/administrator/

Как видите всё работает!
Включаем SEF URL (ЧПУ - Человекопонятные URL)
Напоследок исправим файл конфигурации nginx, для настройки Mod Rewrite, чтобы у нас заработали SEF URL (Search Engine Friendly URLs) или ЧПУ (Человекопонятные URL):
sudo mcedit /etc/nginx/sites-available/default
Заменим содержимое на:
server {
listen 9999 default_server;
listen [::]:9999 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.php index.html;
server_name _;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include /etc/nginx/fastcgi.conf;
}
}
Перезапустим nginx
sudo service nginx restart
Заключение
Сегодня мы установили Joomla 3.9 на Astra Linux Orel.
Установили сервер MairaDB и создал пользователя для Joomla.
Скачали и распаковали Joomla
Настроили права доступа и группы для папок и файлов Joomla
Добавили поддержку Mysqli в PHP 7.4 и пересобрали его.
Установили Joomla и проверили работоспособность фронтэнда и админ-панели.
Внесли изменения в файл конфигурации таким образом, чтобы обеспечить поддержку SEF URL (ЧПУ - Человекопонятные URL).