Denn er weiß nicht, was er tut. (Osticket installation unter Debian 11 und NGINX)
Osticket blank popup AJAX PHP NGINX
Ich habe ein persönliches Ticketsystem eingerichtet ich wollte eigentlich nur ein primitives PHP-Skript, aber landete zwischen Zammad und Osticket.
Zammad macht den DEUTLICH besseren Eindruck, aber die Vorwärtsabhängigkeiten kann ich erst erfüllen, wenn ich meinen Root-Server verdockert habe. Daher ist Osticket die Wahl mit dem geringeren Impact auf meine Arbeitszeit und meinen Server – dachte ich.
Es gibt aber ein paar Besonderheiten. Osticket nutzt PHP-FPM, den mehr als berüchtigten FastCGI Process Manager und es kommt buchstäblich auf die Reihenfolge (und die verwendete Source) an, in der man NGINX und die PHP-Pakete installiert, ob man am eine Datei „/etc/nginx/snippets/fastcgi-php.conf“ hat oder nicht.
Osticket ist ziemlich 2003 unterwegs und schreibt: „To install osTicket, your server must have Apache/LiteSpeed/IIS webserver (with the URL Rewrite module installed/enabled), PHP 8.1 – 8.2 (8.2 recommended), and MySQL 5.0 (or better) installed.“.
Es ist kein NGINX zu sehen, obwohl es seit 2019 der meistgenutzte Webserver ist, aber es gibt viele Anleitungen, die beschreiben, wie man Osticket unter Ubuntu oder Debian und NGINX beschreibt.
Diese haben durch die Bank weg in den conf-Dateien des NGINX jedoch die fastcgi-php.conf als include stehen und bei AJAX-Problemen (blank popups / empty popups …) findet man in den Foren den „gut gemeinten“ Rat erstmal das in Ordnung zu bringen oder gefälligst die Suchfunktion zu benutzen. Das ist aber ein roter Hering. Diese Datei wird seit Jahren nicht mehr benötigt. Wichtig ist, dass die Zeile „fastcgi_param SCRIPT_FILENAME $request_filename;“ korrekt ist und dass der PHP 8.3 Socket richtig, also zur gewählten Linux-Distribution passend, formuliert ist.
Für alle Zuschauer an den Geräten zu Hause habe ich meine nginx-Konfig unten angefügt. Sollte Google den Artikel in den Index aufnehmen, rette ich vielleicht jemandem mit diesem Text eine Nacht Schlaf.
proxy_cache_path /var/cache/nginx/mycache2 keys_zone=mycache2:50m;
server {
listen 80;
server_name osticket.falkduebbert.com;
rewrite ^ https://$server_name$request_uri? permanent; # force redirect http to https‘
}
server {
listen 443 ssl;
http2 on;
server_name_in_redirect off;
access_log /var/log/nginx/ostaccess.log;
error_log /var/log/nginx/osterror.log;
root /var/www/osticket/upload/;
index index.php index.html index.htm default.html default.htm
ssl_certificate /etc/nginx/certs/falkduebbertcom.crt; # path to your cacert.pem
ssl_certificate_key /etc/nginx/certs/falkduebbertcom.key; # path to your privkey.pem
ssl_session_timeout 5m;
# ssl_protocols SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
# ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers „ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-
AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECD>
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/nginx/certs/dhparams.pem;
# ssl_session_tickets off; # Requires nginx >= 1.5.9
# ssl_stapling on; # Requires nginx >= 1.3.7
# ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 213.133.98.98 213.133.98.99 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security „max-age=63072000; includeSubdomains; preload“;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
client_max_body_size 100M;
gzip on;
gzip_min_length 1000;
gzip_types text/plain application/x-javascript text/xml text/css application/xml;
set $path_info „“;
location ~ /include { deny all;
return 403;
}
if ($request_uri ~ „^/api(/[^\?]+)“) {
set $path_info $1;
}
location ~ ^/api/(?:tickets|tasks).*$ {
try_files $uri $uri/ /api/http.php?$query_string;
}
set $path_info $1;
}
location ~ ^/scp/ajax.php/.*$ {
try_files $uri $uri/ /scp/ajax.php?$query_string;
}
location / {
auth_basic „Restricted“; #For Basic Auth
auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
try_files $uri $uri/ index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param PATH_INFO $path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Update 13.01. 19:15:
Die Conf-Datei „/etc/nginx/snippets/fastcgi-php.conf“ erhält man, wenn man NGINX unter Debian 10 aus dem Debian-Repository installiert und nie Autoremove benutzt hat. Gleiches gilt für Ubuntu.
Mit dem NGINX-Repo wird die Snippets entweder nicht angelegt oder beim Update entfernt.
Da Debian und Ubuntu bei NGINX lange eine Version mit offenem CVE im Repo hatten und erst Wochen später eine gepatchte Variante bereitstellten, ist es ratsam, den NGINX direkt von NGINX/F5 zu beziehen.
Kommentare
Keine Kommentare
Kommentare