Apache - Setup Magento2
# Install MySQL
sudo dnf install -y mariadb-server mariadb
# Install PHP 8.3 via Remi with Magento-required extensions
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.3 -y
# Core stack + almost all required extensions
sudo dnf install -y \
httpd mod_ssl php php-cli php-fpm php-mysqlnd php-zip php-gd php-mbstring \
php-curl php-xml php-intl php-bcmath php-soap php-opcache php-sodium \
php-pear php-devel php-gmp php-imagick php-redis php-memcached \
php-mysqli
# Install Elasticsearch (required by Magento 2.4+)
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo << 'REPO'
[elasticsearch]
name=Elasticsearch repository
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
REPO
sudo dnf install -y elasticsearch
# Configure MySQL
sudo systemctl enable --now mariadb
sudo mysql 'SQL'
CREATE DATABASE magento CHARACTER SET utf8mb4;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'MagentoPass456!';
CREATE USER 'magento'@'%' IDENTIFIED BY 'MagentoPass456!';
GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost';
GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'%';
FLUSH PRIVILEGES;
SQL
# Configure Elasticsearch
sudo systemctl enable --now elasticsearch
# Verify Elasticsearch is running
curl -s http://localhost:9200