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 от HostVDS из под Debian

Так же могу предложить вам Бонус +5% к первому пополнению:

HVDSFT5!

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

apt update
apt upgrade

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

apt install curl gnupg2 ca-certificates lsb-release wget

Установка Nginx:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | tee /etc/apt/trusted.gpg.d/nginx.gpg >/dev/null >/dev/null
echo "deb http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
apt update
apt install nginx

Добавим репозиторий MariaDB:

curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
echo "b98c6436e01ff33d7e88513edd7b77a965c4500d6d52ee3f106a198a558927af  mariadb_es_repo_setup" \
       | sha256sum -c -
chmod +x mariadb_es_repo_setup
./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply
apt update

Установка MariaDB:

apt install mariadb-server mariadb-client

Настройка MariaDB:

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

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

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.su/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 unzip 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:

adduser joomla

Заходим этим пользователем в систему:

su - joomla

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

mkdir -p www/html/joomla

Меняем права на папку:

chmod -R 755 /home/joomla

Переходим в папку:

cd www/html/joomla

Качаем Joomla:

wget https://downloads.joomla.org/cms/joomla5/5-2-3/Joomla_5-2-3-Stable-Full_Package.zip?format=zip

Извлеките файлы в папку:

unzip Joomla_5-2-3-Stable-Full_Package.zip

Выходим из под пользователя:

exit

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

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

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

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

    root   /home/joomla/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:/run/php/joomla.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Создаем файл:

nano /etc/php/8.3/fpm/pool.d/joomla.conf
[joomla]
pm = dynamic
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_children = 5
pm.max_spare_servers = 5
php_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_STRICT
php_value[display_errors] = stderr
php_value[log_errors] = On
php_admin_value[mbstring.func_overload] = 0
listen = /var/run/php/joomla.sock
listen.mode = 0660
listen.owner = www-data
listen.group = www-data
user = joomla
group = joomla

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

nginx -t

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

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