In diesem Artikel installieren wir sämtliche Serversoftware (Apache2 oder NGINX, MariaDB, PHP, FFmpeg, Postfix etc.) für VIMP und konfigurieren das Webhosting.
Zuerst aktualisieren wir die Paketquellen:
apt update
Dann installieren wir die benötigten Pakete:
apt install mariadb-server php-mysql php8.2 php-fpm php8.2-gd php8.2-cli php8.2-xsl php8.2-curl php8.2-mbstring php8.2-zip php8.2-xmlrpc php-imagick libimage-exiftool-perl ffmpeg nano openssl time
Für die VIMP Enterprise- und Campus-Editionen installieren Sie bitte noch folgende Pakete:
apt install php8.2-ldap php8.2-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
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; add_header Access-Control-Allow-Origin * always; index index.php frontend.php webtv.php backend.php frontend_dev.php webtv_dev.php backend_dev.php restoreProgress.php updateProgress.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; } return 418 } # 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/php8.2-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_buffers 32 256k; fastcgi_buffer_size 512k; fastcgi_busy_buffers_size 512k; fastcgi_param HTTPS off; try_files $uri $uri/ /index.php$is_args$query_string; } # Directive for dynamic JS files which are processed by PHP (no longer needed fro VIMP 5.1 and higher) location @appwebtv { index webtv.php; #include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-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_buffers 32 256k; fastcgi_buffer_size 512k; fastcgi_busy_buffers_size 512k; fastcgi_param HTTPS off; try_files $uri $uri/ /webtv.php$is_args$query_string; } # 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/php8.2-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_buffers 32 256k; fastcgi_buffer_size 512k; fastcgi_busy_buffers_size 512k; fastcgi_param HTTPS off; try_files $uri $uri/ /backend.php$is_args$query_string; } # All front controllers for vimp location ~ ^/(index|frontend_dev|frontend_cache|backend|backend_dev|backend_cache|getMedia|health|webtv|webtv_dev|webtv_cache|restoreProgress|updateProgress|js/jsdeliverer)\.php(/|$) { #include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-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_buffers 32 256k; fastcgi_buffer_size 512k; fastcgi_busy_buffers_size 512k; fastcgi_param HTTPS off; } location @jsdeliverer { index js/jsdeliverer.php; try_files _ /js/jsdeliverer.php$is_args$query_string; } location /js { rewrite ^/js/$ /js/*.js; if (!-e $request_filename) { error_page 420 = @jsdeliverer; return 420; } } # 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.
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 php8.2-fpm a2ensite vimp
Den Apache starten wir später neu, damit die neue Konfiguration eingelesen wird.
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/8.2/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/8.2/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
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;
Wenn Sie VIMP Light, VIMP Ultimate [Standard], VIMP Campus oder VIMP 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.
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:
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!