Escenario
Después de 5 años campando en un Ubuntu 16.04 ha llegado la hora de migrar la aplicación osTicket a un nuevo servidor. Para quien no la conozca osTicket es un sistema de incidencias que podemos desplegar en un servidor propio. La aplicación web cuenta con una herramienta que automáticamente detecta una diferencia de versiones entre los ficheros y la base de datos, y te avisa de que hay que actualizar el esquema de la base de datos. Por tanto basta con descargar la última versión de la web oficial y sustituir los ficheros antiguos por los nuevos.Problema
El actualizador no funciona. Una ventana se sobrepone al mensaje que informa de los pasos por los que va el proceso. Lo curioso es que en el servidor antiguo, si aplico esa misma configuración, sí que funciona. Me digo que tal vez deba aplicar las actualizaciones de versión a versión. Primero la 11, luego la 12… Nada, en el servidor antiguo funciona, en el nuevo falla.Solución
No caigo hasta cuando, el día siguiente, amanezco con la cabeza más fresca. Ha de ser el servidor web. El viejo servidor usaba apache, en el nuevo nginx. Ésta es la configuración ganadora:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
server { server_name support.acme.com; root /var/app/osticket/upload; include mime.types; default_type application/octet-stream; sendfile on; charset utf-8; gzip on; gzip_types text/plain application/xml text/javascript; gzip_min_length 1000; index index.php index.html index.htm; 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; } if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") { set $path_info $1; } if ($request_uri ~ "^/.*\.php(/[^\?]+)") { set $path_info $1; } location ~ ^/scp/ajax.php/.*$ { try_files $uri $uri/ /scp/ajax.php?$query_string; } location ~ ^/ajax.php/.*$ { try_files $uri $uri/ /ajax.php?$query_string; } location / { try_files $uri $uri/ index.php; } location ~ \.php$ { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PATH_INFO $path_info; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } listen [::]:443 ssl; listen 443 ssl; ssl_certificate /etc/ssl/certs/acme.com.crt; ssl_certificate_key /etc/ssl/certs/acme.com.key; ssl_trusted_certificate /etc/ssl/certs/acme.com.pem; keepalive_timeout 70; } server { if ($host = support.acme.com) { return 301 https://$host$request_uri; } listen 80; listen [::]:80; server_name support.acme.com; return 404; } |
Nota: Esta configuración va a necesitar php fpm ( sudo apt install php php-fpm)