Skip to content

Installation eines Webservers ​

Die in diesem Abschnitt zur technischen Installation beschriebenen, vorbereitenden Tätigkeiten werden beim Betrieb eines eigenen Servers benötigt.

Systemvoraussetzungen ​

Die Installation erfolgt auf einem Debian 13-Server mit Root-Rechten. Auf dem Webspace müssen PHP 8 sowie die benötigten Erweiterungen php-fpm und php-sqlite3 installiert sein. Die Hardwareanforderungen sind dabei gering.

Bisher wurden getestet:

  • Debian 13, Apache2, php8.4, 4GB HDD, 2GB Ram, 1 Core
  • Debian 12, Apache2, php8.3, 4GB HDD, 2GB Ram, 1 Core
  • Debian 12, nginx, php8.2, 4GB HDD, 2GB Ram, 1 Core

Weitere erfolgreiche Installationen können gemeldet werden, dann nehmen wir sie gerne auf.

Hier findet man ein vollständiges Skript zur Einrichtung eines Testservers auf Debian 13.

Installation Webserver ​

IT-Sicherheit

Um einen Apache2-Webserver sicher Im Internet zu betreiben, sind Sicherheitseinstellungen nötig, die nicht Teil dieses Artikels sind.

Update des Systems und Installation des Apache2 Webservers inkl. php8.4:

bash
apt update && apt upgrade -y
apt install apache2 libapache2-mod-security2 -y
systemctl status apache2.service 
apt install php php-fpm php-sqlite3 -y
a2enmod proxy_fcgi setenvif rewrite headers ssl
a2enconf php8.4-fpm
a2enmod security2
# optional: verschärfte Sicherheitseinstellungen
# apt install modsecurity-crs
# ln -s /usr/share/modsecurity-crs /etc/modsecurity/crs
systemctl reload apache2.service

Einstellungen zum Webspace der /etc/apache2/apache2.conf ergänzen:

bash
<Directory /var/www/html/>	
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
</Directory>

In der etc/php/8.X/apache2/php.ini die SQLite3-Extension durch entfernen des Semikolos aktivieren.

bash
sed -i "s|;extension=pdo_sqlite.*$|extension=pdo_sqlite|" /etc/php/${PHPVERSION}/fpm/php.ini

PHP-Memory-Limit:

In der /etc/php/8.X/apache2/php.ini sollte der Wert memory_limit=1024M gesetzt werden.

Konfiguration von HTTP Secure ​

Übersicht über die benutzten Variabeln in der Einrichtung:

bash
DOMAIN=Mein_WENOM_Server.de
INSTALLPATH=/var/www/html
SERVER_IP=10.x.y.z

Den Apache2 von Port 80 auf 443 (HTTPS) durch Überschreiben der 000-default.conf umleiten:

bash
echo "<VirtualHost *:80>
    ServerName ${DOMAIN}
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)\$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>" > /etc/apache2/sites-available/000-default.conf

SSL VHost aktivieren:

bash
a2ensite default-ssl.conf

Das DocumentRoot und Server Namen in der SSL-Config setzen:

bash
sed -i "s|DocumentRoot.*$|DocumentRoot ${INSTALLPATH}/public|" /etc/apache2/sites-available/default-ssl.conf
if ! grep -q "ServerName" /etc/apache2/sites-available/default-ssl.conf; then
    sed -i "/DocumentRoot/a \ \ \ \ ServerName ${DOMAIN}" /etc/apache2/sites-available/default-ssl.conf
fi

Zertifikat setzen ​

Das Zeritfikat generieren und die Server-IP beziehungsweise den Domainnamen setzen:

bash
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \
        -keyout "$CERT_KEY" -out "$CERT_CRT" \
        -subj "/C=DE/ST=NRW/L=NRW/O=NONE/CN=${DOMAIN}" \
        -addext "subjectAltName = DNS:${DOMAIN}, IP:${SERVER_IP}"

Den Apache2 auf die neuen Zertifikats-Dateien hinweisen und Apache2 neu starten:

bash
sed -i "s|SSLCertificateFile.*|SSLCertificateFile ${CERT_CRT}|" /etc/apache2/sites-available/default-ssl.conf
sed -i "s|SSLCertificateKeyFile.*|SSLCertificateKeyFile ${CERT_KEY}|" /etc/apache2/sites-available/default-ssl.conf
systemctl restart apache2
systemctl restart php8.4-fpm

SVWS-WeNoM Programmdateien Download und Entpacken ​

Bitte hier entsprechend die Variablen setzen, zum Beipiel:

bash
DOWNLOADPATH=https://github.com/SVWS-NRW/SVWS-Server/releases/...
INSTALLPATH=/var/www/html
SVWSVERSION=1.2.2
bash
echo "Download und Entpacken SVWS-WeNoM von $DOWNLOADPATH"
cd $INSTALLPATH
wget $DOWNLOADPATH
unzip -o SVWS-ENMServer-${SVWSVERSION}.zip

Berechtigungen setzen: ​

bash
chown -R www-data:www-data /$INSTALLPATH
chmod -R 750 /$INSTALLPATH
chmod -R 770 /$INSTALLPATH/db

Einrichtung ​

Weiter geht es mit der Ersteinrichtung des WebNotenManagers.