Webserver, Webhosting und ViMP unter Debian 11 "Bullseye" installieren

Editionen: Light, Ultimate (Standard), Ultimate (Extended), Corporate Enterprise, Corporate Campus
Versionen: 4.4+

In diesem Artikel installieren wir sämtliche Serversoftware (Apache2 oder NGINX, MariaDB, PHP, FFmpeg, Postfix etc.) für ViMP und konfigurieren das Webhosting.

Installation der Grundpakete

Zuerst aktualisieren wir die Paketquellen:

apt update

Dann installieren wir die benötigten Pakete:

apt install mariadb-server php-mysql php7.4 php-fpm php7.4-gd php7.4-cli php7.4-xsl php7.4-curl php7.4-json php7.4-mbstring php7.4-zip php7.4-xmlrpc php-imagick libimage-exiftool-perl ffmpeg nano openssl time

Für die ViMP-Corporate-Editionen installieren Sie bitte noch folgende Pakete:

apt install php7.4-ldap php7.4-sqlite3

Wenn Sie NGINX verwenden möchten, installieren Sie im Anschluss folgendes Paket:

apt install nginx 

Wenn Sie Apache2 verwenden möchten, installieren Sie stattdessen dieses Paket:

apt install apache2

Als MTA (Mail Transport Agent) nehmen wir hier postfix. 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.

apt update
apt install postfix

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

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

NGINX Konfiguration:

Wenn Sie NGINX verwenden, erstellen wir zunächst einen eigenen Serverblock für ViMP. Wenn Sie Apache2 verwenden, überspringen Sie diesen Abschnitt bitte.

nano /etc/nginx/sites-available/vimp

Und fügen folgende ViMP-Konfiguration ein (korrigieren Sie die Pfade für root und die Logs bitte entsprechend Ihrer Konfiguration und fügen Sie den korrekten Servernamen ein):

server {
  rewrite_log off;
 
  listen 80;
  listen [::]:80 ipv6only=on;

  # replace /var/www/vimp/ with your actual ViMP installation folder path in the following line
  root /var/www/vimp/web;

  # replace your_servername with your actual server name in the following line
  server_name your_servername;

  # replace /var/www/vimp/ with your actual ViMP installation folder path in the following lines
  access_log /var/www/logs/vimp_nginx_access.log;
  error_log /var/www/logs/vimp_nginx_error.log warn;

  index index.php frontend.php webtv.php backend.php frontend_dev.php webtv_dev.php backend_dev.php index.html;

  charset utf-8;
  server_tokens off;

  client_max_body_size 500M;

  # Disable access log for favicon.ico
  location = /favicon.ico {
    log_not_found off;
    access_log off;
  }

  # Disable access log for robots.txt
  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  # Prevent access to files/folders which starts with a dot
  location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
  }

  # Directive for dynamic JS files which are processed by PHP
  location ~ ^/(.+)\.js\.php(/|$) {
    error_page 417 = @appwebtv;
    error_page 418 = @appfrontend;
    error_page 419 = @appbackend;
    if ( $query_string ~ "app=webtv" ) { return 417; }
    if ( $query_string ~ "app=frontend" ) { return 418; }
    if ( $query_string ~ "app=backend" ) { return 419; }
  }

  # Directive for dynamic JS files which are processed by PHP
  location @appfrontend {
    index index.php;
    #include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
    try_files $uri $uri/ /index.php;
  }

  # Directive for dynamic JS files which are processed by PHP
  location @appwebtv {
    index webtv.php;
    #include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
    try_files $uri $uri/ /webtv.php;
  }

  # Directive for dynamic JS files which are processed by PHP
  location @appbackend {
    index backend.php;
    #include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
    try_files $uri $uri/ /backend.php;
  }

  # All front controllers for symfony
  location ~ ^/(index|frontend_dev|frontend_cache|backend|backend_dev|backend_cache|getMedia|health|webtv|webtv_dev|webtv_cache)\.php(/|$) {
    #include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
  }

  # Try to serve file directly, fallback to rewrite to default frontend controller
  location / {
    index index.php;
    try_files $uri $uri/ @rewriteapp;
  }

  # Rewrite fallback to index.php
  location @rewriteapp {
    rewrite ^(.*)$ /index.php$1 last;
  }
}

Nun aktivieren wir die Konfiguration, indem wir folgende Verknüpfung erstellen:

ln -s /etc/nginx/sites-available/vimp /etc/nginx/sites-enabled/

Testen sie kurz:

nginx -t

Und starten NGINX neu, sofern alles passt:

service nginx restart

Hinweis: Beim Einsatz eines SSL-Zertifikats sieht die Konfiguration etwas anderes aus, da dann zwei Server-Blöcke erstellt werden (im Detail abhängig vom Zertifikat-Anbieter). Achten Sie aber auf jeden Fall darauf, dass Sie alle Vorkommen von

fastcgi_param HTTPS off;

nach der Einbindung des SSL-Zertifikats auf

fastcgi_param HTTPS on;

ändern, damit die Scripte über HTTPS ausgeliefert werden können.

Apache2 Konfiguration:

Wenn Sie Apache2 verwenden, erstellen wir einen eigenen vHost für ViMP. Wenn Sie NGINX verwenden, überspringen Sie diesen Abschnitt bitte.

nano /etc/apache2/sites-available/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
<IfVersion < 2.3>
Order allow,deny
allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Protocols h2c http/1.1

</VirtualHost>

Wichtig: 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 (wird ab ViMP 5.0.0 komplett unterstützt).

Anschließend aktivieren wir noch einige Module und den neuen vHost:

a2enmod rewrite
a2enmod proxy_fcgi
a2enmod ssl
a2enmod http2
a2enconf php7.4-fpm
a2ensite vimp

Den Apache starten wir später neu, damit die neue Konfiguration eingelesen wird.

PHP konfigurieren

Es gibt 2 für uns interessante php.ini Dateien. Die eine ist für das FPM- bzw. Apache2-PHP-Modul, die andere für das PHP-CLI (CLI=Command Line Interface).

Wir bearbeiten zuerst die php.ini für FPM 

nano /etc/php/7.4/fpm/php.ini

und passen die folgenden Zeilen wie folgt an:

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

Speichern Sie die Datei ab und starten Sie den NGINX oder Apache2 neu (für größere Uploadlimits erhöhen Sie die beiden 4096M-Werte entsprechend):

service nginx restart

bzw.

service apache2 restart

Genauso verfahren wir mit der php.ini für php-cli. Ein Neustart von NGINX bzw. Apache2 ist danach nicht notwendig.

nano /etc/php/7.4/cli/php.ini

Passen Sie die Direktiven auch hier wie folgt an (bitte beachten Sie den Unterschied bei memory_limit):

upload_max_filesize = 4096M
post_max_size = 4096M
register_argc_argv On
memory_limit = -1
max_execution_time = 60
max_input_time = 120

Datenbank und Datenbankbenutzer erstellen:

Für MariaDB 10.5 müssen wir zunächst den sql_mode setzen. Wir erstellen dazu eine eigene Konfigurationsdatei für ViMP:

cd /etc/mysql/conf.d
nano vimp.cnf

In diese Datei kopieren wir die folgenden Zeilen:

[mysqld]
sql_mode = IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO

Und starten nach dem Abspeichern den MySQL Service neu:

service mysql restart

Danach legen wir die Datenbank für ViMP an:

# mysql

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

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

Nach der Vorbereitung installieren Sie ViMP

Wenn Sie ViMP Light, ViMP Ultimate [Standard], ViMP Corporate Campus oder ViMP Corporate Enterprise installieren, müssen Sie an dieser Stelle noch die SourceGuardian PHP-Erweiterung installieren. Eine Anleitung dazu finden Sie hier.

Der Upload und Installation des ViMP-Installers ist im 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!

 

Zuletzt aktualisiert am 24.09.2021 von Admin.

Zurück