Joomla Debian nginx php 8.3 php-fpm MariaDB

Установка Joomla nginx php 8.3 php-fpm MariaDB займет у нас минут 20. Рассказывать про саму CMS я не буду так как до меня все рассказали. Расскажу вам как установить Joomla под Nginx php 8.3 + php-fpm и MariaDB. Для это я буду использовать VPS от Reg.Ru из под Debian

Так же могу предложить вам код-купон в 5% скидки на первый заказ хостинга или покупки домена от Reg.Ru:

9BB7-9DFE-149B-7BBA

Обнавляем пакеты и обнавляем Debian:

apt update
apt upgrade

Устанавливаем CA-сертификаты:

apt install curl gnupg2 ca-certificates lsb-release wget

Установка Nginx:

echo "deb http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
apt update
apt install nginx
systemctl start nginx.service
systemctl enable nginx.service

Установка MariaDB:

apt install mariadb-server mariadb-client
systemctl start mysql.service

Настройка MariaDB:

mysql_secure_installation

Или с версии MariaDB 10.5.2

mariadb-secure-installation
Enter current password for root (enter for none): press Enter
Set root password? Установить пароль root [Y/n]: Y
New password: Новый пароль Enter password
Re-enter new password: Повторно введите новый пароль Repeat password
Remove anonymous users? Удалить анонимного пользователя [Y/n]: Y
Disallow root login remotely? Запретить root-вход удаленно [Y/n]: Y
Remove test database and access to it? Удалить тестовую базу данных [Y/n]:  Y
Reload privilege tables now? Перезагрузите таблицы привилегий [Y/n]:  Y

Подключаемся к MySQL:

mysql -u root -p

Или все по той же причине:

mariadb -u root -p

Создаем базу под названием joomla:

CREATE DATABASE joomla;

Создаем нового пользователя joomlau:

CREATE USER 'joomlau'@'localhost' IDENTIFIED BY 'сюда придумываем и пишем пароль';

Назначаем пользователя joomlau в базу данных joomla:

GRANT ALL ON joomla.* TO 'joomlau'@'localhost' IDENTIFIED BY 'сюда тот придуманный пароль' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Установка PHP 8.3:

apt install -y ca-certificates apt-transport-https wget
wget --quiet -O - https://packages.sury.org/php/apt.gpg | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/php.list
apt update
apt install php8.3-fpm php8.3-common php8.3-mysql php8.3-gmp php8.3-curl php8.3-intl php8.3-mbstring php8.3-xmlrpc php8.3-gd php8.3-xml php8.3-cli php8.3-zip php8.3-imagick

Редактируем конфигурацию php:

nano /etc/php/8.3/fpm/php.ini

Находим:

;cgi.fix_pathinfo=1

меняем на:

cgi.fix_pathinfo=0

Качаем Joomla:

wget https://downloads.joomla.org/cms/joomla3/3-9-14/Joomla_3-9-14-Stable-Full_Package.tar.gz

Создайте новый каталог под названием joomla:

mkdir -p /var/www/html/joomla

Извлеките файлы в созданную папку:

tar -xvzf Joomla_3-9-14-Stable-Full_Package.tar.gz -C /var/www/html/joomla

Добавить nginx в группу www-data:

usermod -a -G www-data nginx

Меняем владельца каталога:

chown -R www-data /var/www/html

Создадим конфиг nginx для нашего сайта:

nano /etc/nginx/conf.d/joomla.conf

Вставляем туда следущее:

server {
    listen       80;
    server_name  site.net www.site.net;

    root   /var/www/html/joomla;
    index  index.php index.html index.htm;

    location / {
                try_files $uri $uri/ /index.php?$args;
        }

     location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
                return 403;
                error_page 403 /403_error.html;
        }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
        location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Проверим конфиг на адекватность:

nginx -t

Если все хорошо то перезагружаем php-fpm и nginx:

/etc/init.d/php8.3-fpm restart
nginx -s reload