Es gab ein Problem beim Laden der Kommentare.

Webserver, Webhosting und VIMP unter RHEL 9 / AlmaLinux 9 installieren

HelpDesk  »  Wissensdatenbank (FAQ)  »  Artikel betrachten

  Drucken
Editionen: alle
Versionen: 6.1+


In diesem Artikel installieren wir sämtliche Serversoftware (Apache2, MariaDB, PHP, FFmpeg, Postfix etc.) für VIMP und konfigurieren das Webhosting unter RHEL 9 / AlmaLinux 9.

 

Installation der Grundpakete

Wir gehen im Folgenden davon aus, dass Sie direkt als root auf dem Server arbeiten. Sollte das nicht der Fall sein, muss den Befehlen überall noch entsprechend sudo vorangestellt werden.

 

Da VIMP zum Zeitpunkt der Veröffentlichung dieses Artikels noch nicht mit PHP 8.4 kompatibel ist, installieren wir zunächst PHP 8.3.

 

Hinweis für RHEL 9: EPEL, Remi und RPM Fusion sind Drittanbieter-Repositories und nicht Bestandteil des offiziellen Red-Hat-Supportumfangs. Sie werden für bestimmte VIMP-Abhängigkeiten wie PHP 8.3, PECL-Erweiterungen und FFmpeg benötigt. In Umgebungen mit strengen Support- oder Compliance-Anforderungen sollte dies vorab mit dem Betreiber abgestimmt werden.

 

dnf update
dnf install -y dnf-plugins-core 

 

Für AlmaLinux 9 aktivieren wir CRB wie folgt:

 

dnf config-manager --set-enabled crb

 

Für RHEL 9 aktivieren wir CRB wie folgt:

 

subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms

 

Danach geht es wie folgt weiter:

 

dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

dnf module reset php -y
dnf module enable php:remi-8.3 -y

 

Für ffmpeg wird zusätzlich RPM Fusion benötigt:

dnf install -y distribution-gpg-keys
rpmkeys --import /usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-free-el-$(rpm -E %rhel)
dnf --setopt=localpkg_gpgcheck=1 install -y \
https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm

 

Bei RHEL 9 muss das System in der Regel bei Red Hat registriert sein, damit die offiziellen RHEL-Repositories funktionieren. Dafür führen wir unter RHEL folgendes aus:

 

subscription-manager register
subscription-manager refresh
subscription-manager identity
dnf repolist

 

Bzw. optional, falls BaseOS/AppStream nicht aktiv sind:

 

subscription-manager repos --enable rhel-9-for-$(arch)-baseos-rpms
subscription-manager repos --enable rhel-9-for-$(arch)-appstream-rpms
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms

 

Danach installieren wir die benötigten restlichen Pakete und Erweiterungen:

dnf install mariadb-server httpd php-mysqlnd php php-fpm php-gd php-cli php-xml php-curl php-mbstring php-pecl-zip php-pecl-xmlrpc php-pecl-imagick-im7 php-ldap php-pdo perl-Image-ExifTool ffmpeg nano openssl time golang

 

Als MTA (Mail Transport Agent) können Sie z.B. postfix installieren, sofern der Mail-Versand nicht über einen SMTP-Server stattfinden soll (was aber die empfohlene Methode ist). Andere MTAs wie Sendmail und Exim können natürlich auch verwendet werden. Achten Sie hier darauf, dass der MTA so konfiguriert ist, dass PHP E-Mails versenden kann.

dnf install postfix

 

Nun aktivieren wir die Dienste:

 

systemctl enable --now mariadb
systemctl enable --now php-fpm

 

Und starten den Apache neu:

 

systemctl restart httpd


Als Nächstes legen wir die benötigten Ordner auf dem Server an:

mkdir -p /var/www/vimp/web
mkdir /var/www/logs

 

und passen die Verzeichnisrechte an:

 

chown -R apache:apache /var/www/vimp
chown root:apache /var/www/logs
chmod 775 /var/www/vimp/web
chmod 775 /var/www/logs

 

Bei aktivem SELinux zusätzlich:

getenforce

 

Wenn als Ausgabe Enforcing steht, installieren wir zunächst noch semanage, sofern es fehlt:

dnf install -y policycoreutils-python-utils

 

Dann setzen wir den Grundkontext für VIMP (lesen/ausführen):

 

semanage fcontext -a -t httpd_sys_content_t "/var/www/vimp(/.*)?"
restorecon -Rv "/var/www/vimp"

 

und das Log-Verzeichnis:

 

semanage fcontext -a -t httpd_log_t "/var/www/logs(/.*)?"
restorecon -Rv "/var/www/logs"

 

Und definieren die schreibbaren Verzeichnisse:

 

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/cache(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/log(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/userdata(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/web(/.*)?"
restorecon -Rv "/var/www/vimp"

 

Und erlauben dem apache-User, den Livestreamprozess zu starten:

 

semanage fcontext -a -t httpd_sys_script_exec_t "/var/www/vimp/plugins/stLiveStreamingPlugin/lib/vendor/mediamtx/mediamtx_exec"

 

Achtung: Folgenden Befehl können wir erst nach der Installation von VIMP ausführen, da dieser erst funktioniert, wenn die Binary existiert. Notieren Sie ihn sich deshalb erstmal nur:

 

restorecon -v "/var/www/vimp/plugins/stLiveStreamingPlugin/lib/vendor/mediamtx/mediamtx_exec"

 

Wenn VIMP nicht über lokalen Socket, sondern per TCP auf MySQL/MariaDB zugreift, z. B. 127.0.0.1:3306 oder Remote-DB:

 

setsebool -P httpd_can_network_connect_db on

 

Falls VIMP allgemein ausgehend Netzwerkzugriffe braucht, z. B. LDAP, SSO, SMTP, externe APIs:

 

setsebool -P httpd_can_network_connect on

 

Für LDAP kann zusätzlich relevant sein:

 

setsebool -P httpd_can_connect_ldap on

 

Und für den Livestreamservice benötigen wir:

 

setsebool -P httpd_execmem on

 

Folgendermaßen geben wir die benötigten Ports frei:

 

semanage port -a -t http_port_t    tcp 1935        # RTMP  Livestream
semanage port -a -t http_port_t    tcp 1936        # RTMPS Livestream
semanage port -a -t http_port_t    tcp 8888        # HLS Streaming
semanage port -a -t http_port_t    tcp 9997        # VIMP API (Inter-Server)
semanage port -a -t http_port_t    tcp 9998        # VIMP API (Inter-Server)
semanage port -a -t http_port_t    tcp 514        # Syslog TCP (ausgehend, SIEM-Push)
semanage port -a -t http_port_t    tcp 514        # Syslog UDP (ausgehend, SIEM-Push)

 

Und zum Schluss konfigurieren wir gegebenenfalls noch die Firewall:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=1935/tcp         # RTMP
firewall-cmd --permanent --add-port=1936/tcp         # RTMPS
firewall-cmd --permanent --add-port=8888/tcp         # HLS Streaming
firewall-cmd --permanent --add-port=9997/tcp         # VIMP API (Inter-Server)
firewall-cmd --permanent --add-port=9998/tcp         # VIMP API (Inter-Server)
firewall-cmd --reload
 

(Sollte ein Zugriff über http nicht gewünscht sein, so sollte nur https in der Firewall erlaubt werden.)

 

Apache2 Konfiguration:

Für Apache2 erstellen wir einen eigenen vHost für VIMP. 

nano /etc/httpd/conf.d/vimp.conf


In die erstellte Konfigurationsdatei fügen wir folgenden Code ein und passen den Servernamen, die E-Mail-Adresse sowie ggf. den DocumentRoot Pfad an:

<VirtualHost *:80>
   
   # enter your server name/domain in the following line
   ServerName my.vimp.domain
   # enter your webmaster's e-mail address in the following line
   ServerAdmin my@email.address

   # replace /var/www/vimp/ with your actual VIMP installation folder path in the following line
   DocumentRoot /var/www/vimp/web

   <Directory />
        Options FollowSymLinks
        AllowOverride None
   </Directory>
 
   # replace /var/www/vimp/ with your actual VIMP installation folder path in the following line
   <Directory "/var/www/vimp/web/">
      Options -Indexes +FollowSymLinks -MultiViews
      AllowOverride all
      Require all granted
   </Directory>
    <IfModule mod_xsendfile.c>
  XSendFile on
  SetEnv MOD_X_SENDFILE_ENABLED 1
  # Absolute path to the VIMP Installation-Directory (the directory containing web - not web itself)
  XSendFilePath /var/www/vimp
</IfModule>

<IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin * Header set Access-Control-Allow-Headers * </IfModule>
  <IfModule http2_module>
  H2WindowSize 1048576
 Protocols h2c http/1.1
</IfModule>

LimitRequestBody 0
   ErrorLog /var/www/logs/vimp_error.log
 CustomLog /var/www/logs/vimp_access.log combined </VirtualHost>


Wichtig:

  • Erstellen Sie zusätzlich oder alternativ auch noch eine SSL-Konfiguration für Port 443 mit den entsprechenden SSL-Zertifikaten!
  • Stellen Sie den Wert für LimitRequestBody entsprechend Ihrem gewünschten Uploadlimit ein (in unserem Beispiel 4096 MB analog zum Abschnitt "PHP konfigurieren").
  • Protocols h2c http/1.1 gibt das Protokoll für unverschlüsselte Verbindungen (ohne SSL) an. In Ihrer SSL-vHost-Konfiguration geben Sie stattdessen bitte Protocols h2 http/1.1 an, damit VIMP die Webseite über HTTP2 ausliefert.
  • Passen Sie den Wert für H2WindowSize gegebenenfalls an. Er wird nur bei aktiviertem HTTP2 benötigt (in Ihrer SSL-vHost-Konfiguration).
  • Falls ein Reverse Proxy vorgeschaltet wird, z.B. Nginx, HAProxy, Apache Proxy oder ein Load Balancer, müssen dort die Uploadlimits (LimitRequestBody 0) ebenfalls passend gesetzt werden. Sonst greift PHP korrekt, aber der Upload wird vorher blockiert.

 

Anschließend installieren wir noch die benötigten Module, aktivieren PHP-FPM und wählen PHP 8.3 auf der CLI aus:

dnf install mod_ssl mod_http2

systemctl enable --now php-fpm
alternatives --config php

 

Wählen Sie den PHP8.3-Eintrag bei der erscheinenden Auswahl.

 

An dieser Stelle laden wir den Apache2 neu:

 

systemctl enable --now httpd
systemctl restart httpd

 

PHP konfigurieren

Unter AlmaLinux 9 / Red Hat Enterprise Linux 9 wird die PHP-Konfiguration zentral über folgende Datei geladen:

 

/etc/php.ini


Zusätzliche PHP-Konfigurationsdateien werden aus folgendem Verzeichnis eingebunden:

/etc/php.d/

 

Für VIMP wird empfohlen, die PHP-Anpassungen nicht direkt in /etc/php.ini vorzunehmen, sondern in einer eigenen Konfigurationsdatei abzulegen. Dadurch bleiben die Änderungen übersichtlich und werden bei Paketupdates nicht versehentlich überschrieben.

 

Erstellen Sie dazu die Datei:

 

nano /etc/php.d/99-vimp.ini


Fügen Sie dort die folgenden Werte ein:

upload_max_filesize = 4096M
post_max_size = 4200M
register_argc_argv = On
memory_limit = 1024M
max_execution_time = 60
max_input_time = 120

 

Für php-fpm benötigen wir abweichende Werte und editieren dafür wir die folgende Datei:

 

nano /etc/php-fpm.d/www.conf

 

Fügen Sie dort die folgenden Werte ein:

 

php_value[upload_max_filesize] = 4096M
php_value[post_max_size] = 4200M
php_value[register_argc_argv] = On
php_value[memory_limit] = 1024M
php_value[max_execution_time] = 60
php_value[max_input_time] = 120

 

Hinweis: post_max_size sollte etwas größer sein als upload_max_filesize, da bei Datei-Uploads zusätzlicher Overhead durch die HTTP-POST-Daten entstehen kann. Für größere Uploadlimits erhöhen Sie beide Werte entsprechend, wobei post_max_size weiterhin größer als upload_max_filesize sein sollte.


Speichern Sie die Datei ab und starten Sie PHP-FPM neu:

systemctl restart php-fpm

 

Und wir starten den Apache nochmals neu:

 

systemctl restart httpd

 

Prüfen Sie danach, ob die Werte aktiv sind:

 

php --ini 
php -i | egrep 'upload_max_filesize|post_max_size|register_argc_argv|memory_limit|max_execution_time|max_input_time'

 

Für PHP-FPM kann zusätzlich geprüft werden:

 

php-fpm -i | egrep 'upload_max_filesize|post_max_size|register_argc_argv|memory_limit|max_execution_time|max_input_time'

 

 

Datenbank und Datenbankbenutzer erstellen:

Jetzt legen wir die Datenbank für VIMP an:

# mysql


Der MySQL-Client meldet sich mit dem mysql-Prompt:

create database DATENBANKNAME default character set utf8mb4 collate utf8mb4_unicode_ci;
create user 'DATENBANKBENUTZER'@'%' identified by 'PASSWORT';
grant all privileges on DATENBANKNAME.* to 'DATENBANKBENUTZER'@'%' with grant option;
flush privileges;
exit;

 

Zusätzlich erstellen wir folgende Konfigurationsdatei für die MariaDB:

 

nano /etc/my.cnf.d/vimp.cnf

 

Und fügen Folgendes darin ein:

 

[mariadb]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

 

Abschließend starten wir die Datenbank neu, damit die Konfigurationsänderungen angewendet werden:

 

systemctl restart mariadb

 

Nach der Vorbereitung installieren Sie VIMP

Abschließend müssen Sie noch die SourceGuardian PHP-Erweiterung installieren. Eine Anleitung dazu finden Sie hier.

Der Upload und die Installation des VIMP-Installers ist in diesem Artikel beschrieben.

 

 

Grundlegende Verwendung

Die Installation ist nun abgeschlossen. Rufen Sie jetzt Ihr Portal im Browser auf.

Während der Installation werden drei Benutzer erstellt, die die drei Benutzerrollen darstellen:

  • "admin" (Passwort: "admin") als Administrator
  • "moderator" (Passwort: "moderator") als Moderator
  • "user" (Passwort: "user") als Standardbenutzer


Bitte ändern Sie alle Passwörter so schnell wie möglich. Wenn Sie die Benutzer nicht mehr benötigen, können Sie sie im Admin-Bereich löschen. Achten Sie nur darauf, den admin-Benutzer zu behalten!


Teilen über

Ähnliche Artikel

© VIMP GmbH