Es gab ein Problem beim Laden der Kommentare.

Webserver, Webhosting und VIMP unter Ubuntu 22.04 installieren

HelpDesk  »  Wissensdatenbank (FAQ)  »  Artikel betrachten

  Drucken
Editionen: alle
Versionen: 5.2+


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 php8.1 php-fpm php8.1-gd php8.1-cli php8.1-xsl php8.1-curl php8.1-mbstring php8.1-zip php8.1-xmlrpc php-imagick libimage-exiftool-perl ffmpeg nano openssl time


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

apt install php8.1-ldap php8.1-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;

  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.1-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 for VIMP 5.1 and higher)
  location @appwebtv {
    index webtv.php;
    #include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.1-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.1-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 symfony
  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.1-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:

systemctl restart nginx



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
     LimitRequestBody 4096000
    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:

  • 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 (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 setenvif
a2enmod ssl
a2enmod http2
a2enconf php8.1-fpm
a2ensite vimp


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

 

PHP konfigurieren

Es gibt zwei 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.1/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):

systemctl restart nginx


bzw.

systemctl restart apache2


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.1/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.6 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:

systemctl restart mysql


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 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.

 

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