В прошлой статье мы установили 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/

Заполним поля на первом экране:

2021-07-19_11-38-19.png

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

2021-07-19_12-13-20.png

Проверим тестовую страницу 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

2021-07-19_12-39-03.png 

 

Обновим страницу

http://192.168.1.240:9999/installation/

Заполним первую страницу и перейдем ко второй:

У нас появилась строчка с Mysqli

2021-07-19_12-40-41.png

Заполним поля на следующем экране.

В качестве пароля укажем

Pa$$w0rd

Имя базы данных и имя пользователя у нас будут:

 

joomla

 

Укажите адрес сервера:

127.0.0.1

это важно!

На следующем экране нажмите «Установка»

Нажмите «Удалить директорию»

Нажмите «Сайт»:

2021-07-19_12-44-14.png 

Давайте попробуем зайти в админ-панель сайта: 

http://192.168.1.240:9999/administrator/

2021-07-19_12-47-25.png

Как видите всё работает!

 Включаем 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).