MODX CMS auf CentOS 7 mit Nginx, PHP 7.2 und MariaDB installieren
MODX ist ein quelloffenes Content-Management-System, das in PHP programmiert ist und für die Datenverwaltung MySQL oder MariaDB nutzt. Es eignet sich besonders für Unternehmen, die auf eine kontinuierlich gepflegte Online-Präsenz angewiesen sind. Entwicklern bietet MODX maximale Freiheit bei der Gestaltung und Struktur der Website. Gleichzeitig ermöglicht ein WYSIWYG-Editor auch technisch weniger versierten Anwendern die komfortable Pflege der Inhalte. Die Plattform kombiniert hohe Flexibilität mit ausgezeichneten Performance-Möglichkeiten.
Diese Anleitung basiert auf MODX Version 2.6.1, kann jedoch auch mit neueren Versionen kompatibel sein.
Voraussetzungen
- Ein CentOS 7 Server
- Ein Benutzer mit Sudo-Rechten
- Eine Domain, die korrekt auf den Server zeigt
In dieser Anleitung verwenden wir modx.example.com
als Platzhalterdomain. Ersetze diesen Domainnamen im Verlauf durch deine eigene Domain.
System vorbereiten
Bevor du mit der Installation beginnst, solltest du dein System gemäß der Anleitung „How to Update CentOS 7“ auf den aktuellen Stand bringen. Danach kannst du die erforderlichen Pakete installieren.
Nginx installieren
Nginx ist ein leistungsstarker Webserver, der sich hervorragend für moderne Webanwendungen eignet. Installiere Nginx mit den folgenden Befehlen:
sudo yum -y install epel-release
sudo yum -y install nginx
Aktiviere Nginx und sorge dafür, dass der Dienst beim Systemstart automatisch gestartet wird:
sudo systemctl start nginx
sudo systemctl enable nginx
PHP 7.2 installieren
MODX funktioniert mit PHP-Versionen ab 5.4. Um eine optimale Leistung und Sicherheit zu gewährleisten, installieren wir PHP 7.2. Da diese Version nicht im Standard-Repository enthalten ist, musst du zunächst das Remi-Repository aktivieren:
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php72
Installiere nun PHP 7.2 sowie alle erforderlichen Erweiterungen für MODX:
sudo yum -y install php php-zlib php-mysqli php-curl php-json php-cli php-pear php-gd php-openssl php-xml php-mbstring php-fpm ImageMagick
Bearbeite anschließend die PHP-Konfigurationsdatei:
sudo nano /etc/php.ini
Heb die Kommentarzeile für die Zeitzone auf und trage deinen korrekten Wert ein:
date.timezone = Asia/Kolkata
Setze die Speichergrenze so, dass unbegrenzter Speicher zur Verfügung steht:
memory_limit = -1
Setze den folgenden Parameter, um die Verarbeitung von Pfadinformationen zu deaktivieren:
cgi.fix_pathinfo=0
Öffne nun die Konfigurationsdatei für den PHP-FPM-Pool und passe sie an:
sudo nano /etc/php-fpm.d/www.conf
Kommentiere den bestehenden Listener aus und füge eine neue Zeile hinzu:
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
Ändere auch die Benutzer- und Gruppenangaben wie folgt:
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
Starte den PHP-FPM-Dienst neu und aktiviere ihn für den automatischen Systemstart:
sudo systemctl restart php-fpm
sudo systemctl enable php-fpm
Erstelle abschließend das Verzeichnis für PHP-Sessions und setze die richtigen Berechtigungen:
sudo mkdir /var/lib/php/session
sudo chmod -R 777 /var/lib/php/session
Du kannst nun mit der Installation von MariaDB fortfahren.
MariaDB einrichten
MariaDB ist eine quelloffene Weiterentwicklung von MySQL. Da CentOS standardmäßig nur eine veraltete Version anbietet, musst du das MariaDB-Repository manuell hinzufügen:
echo "[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/mariadb.repo
Installiere anschließend MariaDB:
sudo yum -y install mariadb mariadb-server
Starte den Datenbankdienst und aktiviere den automatischen Start beim Booten:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Sichere deine Datenbankinstallation mit dem folgenden Befehl:
sudo mysql_secure_installation
Beim Ausführen wirst du nach dem Root-Passwort gefragt – bei einer frischen Installation ist keines gesetzt. Drücke Enter, lege ein sicheres Passwort fest und bestätige alle vorgeschlagenen Sicherheitsoptionen mit „Y“.
Logge dich dann mit dem Root-Account in die MySQL-Shell ein:
mysql -u root -p
Führe nun folgende SQL-Befehle aus, um eine neue Datenbank und einen Benutzer für MODX einzurichten:
CREATE DATABASE modx_data CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'modx_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON modx_data.* TO 'modx_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Du kannst die Namen für Datenbank und Benutzer frei wählen. Achte darauf, dass du StrongPassword
durch ein starkes Passwort ersetzt.
MODX installieren
Lade die aktuelle MODX-Version als ZIP-Archiv herunter:
wget https://modx.com/download/direct?id=modx-2.6.1-pl.zip -O modx.zip
Um die aktuellste Version zu finden, besuche die offizielle MODX-Downloadseite. Installiere als Nächstes das Entpack-Tool unzip
:
sudo yum -y install unzip
Entpacke das Archiv in das Webverzeichnis von Nginx:
sudo unzip modx.zip -d /usr/share/nginx/
Wechsle in das Verzeichnis und benenne den entpackten Ordner um:
cd /usr/share/nginx/
sudo mv modx-*/ modx/
Benenne nun die Datei ht.access
in .htaccess
um:
sudo mv /usr/share/nginx/modx/ht.access /usr/share/nginx/modx/.htaccess
Lege ein Verzeichnis für den Cache an und übertrage den Besitz an den Benutzer nginx
:
sudo mkdir /usr/share/nginx/modx/core/cache
sudo chown nginx:nginx /usr/share/nginx/modx/core/cache
Erstelle anschließend eine leere Konfigurationsdatei und stelle sicher, dass alle Dateien im Webverzeichnis dem richtigen Benutzer gehören:
sudo touch /usr/share/nginx/modx/core/config/config.inc.php
sudo chown -R nginx:nginx /usr/share/nginx/
Erlaube abschließend eingehenden Webverkehr über HTTP und HTTPS in der Firewall:
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload
Nginx Virtual Host konfigurieren
Damit deine MODX-Website über Nginx erreichbar ist, musst du eine neue Virtual-Host-Konfiguration erstellen. Öffne dazu eine neue Datei:
sudo nano /etc/nginx/conf.d/modx.example.com.conf
Füge den folgenden Inhalt in die Konfigurationsdatei ein:
server {
listen 80;
server_name modx.example.com;
root /usr/share/nginx/modx;
index index.php;
client_max_body_size 30M;
location / {
root /usr/share/nginx/modx;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_ignore_client_abort on;
fastcgi_param SERVER_NAME $http_host;
}
location ~ /\.ht {
deny all;
}
}
Konfiguration testen
Nachdem du die Datei gespeichert hast, teste die Nginx-Konfiguration auf Fehler:
sudo nginx -t
Wenn alles korrekt eingerichtet ist, erhältst du folgende Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Aktiviere die neue Konfiguration, indem du den Nginx-Dienst neu startest:
sudo systemctl restart nginx
MODX-Installation abschließen
Um die Installation von MODX fertigzustellen, öffne deinen Webbrowser und rufe folgende Adresse auf:
http://modx.example.com/setup
Daraufhin erscheint der Installationsassistent von MODX, in dem du zunächst die gewünschte Sprache auswählst. Anschließend klickst du auf „Neue Installation“ und gibst die Zugangsdaten deiner MariaDB- oder MySQL-Datenbank ein. Danach legst du ein Administrator-Konto an.
Mit einem Klick auf „Installieren“ wird die Konfiguration in die Datenbank geschrieben und der Setup-Prozess abgeschlossen. Du wirst dann direkt zum Administrationsbereich weitergeleitet, wo du mit dem Aufbau deiner Website beginnen kannst.
Fazit
Nach erfolgreicher Einrichtung von MODX auf deinem CentOS-7-Server mit Nginx, PHP 7.2 und MariaDB steht dir eine flexible und leistungsfähige Plattform zur Verfügung. Sie eignet sich sowohl für Entwickler als auch für weniger technisch versierte Anwender. Über das Administrations-Dashboard kannst du Inhalte pflegen und das Layout deiner Website individuell gestalten. Damit hast du die optimale Grundlage, um deine Webprojekte effizient umzusetzen.