Installare osTicket su Ubuntu 16.04 con Nginx, PHP-FPM 7 e MySQL 5.7

Questo tutorial guida passo passo all’installazione e alla configurazione di osTicket su Ubuntu 16.04 usando Nginx, PHP-FPM 7 e MySQL 5.7. Include la creazione del database, la configurazione di PHP-FPM, la creazione di un virtual host Nginx, il download di osTicket, e le operazioni post-installazione. Segui ogni comando come utente con privilegi di root o con sudo.
Important: versione di esempio del pacchetto osTicket usata: v1.10. Adatta i percorsi e i nomi di dominio al tuo ambiente di produzione.
Per chi è questo tutorial
- Amministratori di sistema che vogliono distribuire un helpdesk open source leggero.
- Team che preferiscono Nginx + PHP-FPM anziché Apache.
Definizione rapida: osTicket è un sistema open source per la gestione dei ticket di supporto, scritto in PHP.
Sommario dei passaggi
- Installare Nginx e MySQL
- Installare e configurare PHP-FPM 7 e le estensioni richieste
- Creare il database MySQL per osTicket
- Creare il virtual host Nginx per osTicket
- Scaricare e preparare i file di osTicket
- Eseguire l’installazione via web e mettere in sicurezza la configurazione
- Testare e operare
Requisiti
- Ubuntu 16.04 con accesso root o sudo
- Connessione internet dal server per scaricare i pacchetti
- Un dominio o un record DNS per il server (opzionale ma consigliato)
Nota: mantenere aggiornati backup del server e del database prima di test in produzione.
Passo 1 - Installare Nginx e MySQL
Accedi al server via SSH:
ssh [email protected]
Aggiorna i repository:
sudo apt-get update
Installa Nginx e MySQL server:
sudo apt-get install -y nginx mysql-server
Durante l’installazione verrai invitato a impostare la password root di MySQL: scegli una password sicura.
Avvia e abilita i servizi:
systemctl restart nginx
systemctl restart mysql
systemctl enable nginx
systemctl enable mysql
Verifica le porte in ascolto (porta 80 per Nginx e 3306 per MySQL):
netstat -plntu
Passo 2 - Installare e configurare PHP-FPM 7
osTicket richiede diverse estensioni PHP come gd, imap, xml, mbstring, intl e altre. Installa PHP 7 e le estensioni richieste:
sudo apt-get install -y php7.0-cli php7.0-mysql php7.0-cgi php7.0-fpm php7.0-gd php7.0-imap php7.0-xml php7.0-mbstring php7.0-intl php-apcu
Modifica il file php.ini per PHP-FPM:
cd /etc/php/7.0/
vim fpm/php.ini
Trova la direttiva cgi.fix_pathinfo e impostala a 0 (decommenta se necessario):
cgi.fix_pathinfo=0
Riavvia e abilita il servizio php7.0-fpm:
systemctl restart php7.0-fpm
systemctl enable php7.0-fpm
Configura il virtual host Nginx per interpretare correttamente i file PHP. Modifica il file di default:
cd /etc/nginx/sites-available/
vim default
All’interno del blocco server assicurati che la sezione PHP punti al socket di PHP-FPM:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Salva, chiudi e riavvia Nginx:
systemctl restart nginx
Test rapido creando un file phpinfo:
cd /var/www/html/
echo '' > info.php
Poi apri nel browser: http://TUO_IP/info.php
Important: Rimuovi il file info.php dopo i test per motivi di sicurezza.
Passo 3 - Creare il database per osTicket
Accedi alla shell MySQL con l’utente root:
mysql -u root -p
TYPE YOUR PASSWORD
Crea il database e l’utente dedicato (adatta nome e password a produzione):
create database osticket_db;
create user osticket@localhost identified by 'osticketpw@';
grant all privileges on osticket_db.* to osticket@localhost identified by 'osticketpw@';
flush privileges;
Verifica che l’utente e il database siano stati creati correttamente.
Passo 4 - Creare il virtual host Nginx per osTicket
Crea un nuovo file di configurazione per osTicket:
cd /etc/nginx/sites-available/
vim osticket
Incolla la configurazione seguente adattando server_name e root al tuo dominio e percorso:
server {
listen 80;
server_name osticket.hakase-labs.com;
root /var/www/osticket/upload;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
index index.php;
client_max_body_size 2000M;
client_body_buffer_size 100M;
client_header_buffer_size 10M;
large_client_header_buffers 2 10M;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
gzip on;
gzip_comp_level 2;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
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;
}
if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/scp/ajax.php/.*$ {
try_files $uri $uri/ /scp/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;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param PATH_INFO $path_info;
}
}
Nota: nel blocco precedente è importante mantenere i controlli su /include per proteggere file sensibili.
Attiva il sito e testa la configurazione Nginx:
ln -s /etc/nginx/sites-available/osticket /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Passo 5 - Scaricare e preparare osTicket
Crea la directory e scarica l’archivio osTicket (nell’esempio v1.10):
mkdir -p /var/www/osticket/
cd /var/www/osticket/
wget http://osticket.com/sites/default/files/download/osTicket-v1.10.zip
unzip osTicket-v1.10.zip
I file web si trovano nella cartella ‘upload’. Copia il file di esempio di configurazione:
cd upload/
cp include/ost-sampleconfig.php include/ost-config.php
Imposta il proprietario corretto (www-data quando si usa Nginx su Ubuntu):
cd /var/www/osticket/
chown -R www-data:www-data upload/
Passo 6 - Installare osTicket via web
Apri il browser e vai al dominio configurato, ad esempio:
http://osticket.hakase-labs.com
Verifica che tutte le dipendenze richieste siano verdi nella pagina di verifica.
Se qualche dipendenza manca vedrai avvisi in rosso.
Clicca su ‘Continue’ per procedere con la configurazione. Compila la sezione ‘System Settings’ (nome helpdesk e email predefinita) e la sezione ‘Admin User’ (crea l’account amministratore). Assicurati che l’email admin sia diversa dall’email del helpdesk.
Nella pagina delle impostazioni del database inserisci i dettagli creati al Passo 3.
Clicca su ‘Install Now’ e attendi il completamento.
Al termine, rimuovi o rinomina la directory di setup e applica permessi più restrittivi al file di configurazione:
cd /var/www/osticket/upload/
mv setup/ setup-sh/
chmod 0644 include/ost-config.php
A questo punto l’installazione è completata.
Passo 7 - Test e verifica funzionale
Pagine principali di esempio:
- Home osTicket: http://osticket.hakase-labs.com/
- Login Admin: http://osticket.hakase-labs.com/scp/
- Pannello agent: http://osticket.hakase-labs.com/scp/index.php
- Impostazioni admin: http://osticket.hakase-labs.com/scp/settings.php
Controllo post-installazione e best practices
- Rimuovi info.php di test e la directory di installazione.
- Verifica che i permessi dei file non permettano scrittura da utenti non autorizzati.
- Usa HTTPS in produzione: configura un certificato TLS (Let’s Encrypt o commerciale) e reindirizza HTTP verso HTTPS.
- Abilita firewall minimal (ufw) e consenti solo le porte necessarie (80/443 e SSH).
- Esegui backup regolari del database e dei file upload.
Sicurezza e hardening
- Imposta SELinux/AppArmor se supportato dal sistema per limitare i processi web.
- Disabilita o limita l’uso di account MySQL con privilegi elevati per l’applicazione.
- Non esporre directory sensibili; il blocco Nginx su /include è essenziale.
- Mantieni PHP e le estensioni aggiornate e applica patch di sicurezza.
Troubleshooting comune
- Errore 502 Bad Gateway: controlla che php7.0-fpm sia in esecuzione e che il socket configurato esista (/run/php/php7.0-fpm.sock).
- Errori di permessi: assicurati che www-data sia proprietario dei file web e che i permessi siano appropriati.
- Connessione al DB fallita: verifica host, nome utente, password, e che MySQL ascolti su localhost.
- Dipendenze PHP mancanti: installa le estensioni indicate e riavvia PHP-FPM.
Checklist di deployment (ruoli e responsabilità)
- Sysadmin
- Verificare prerequisiti sistema e backup
- Configurare Nginx, PHP-FPM e MySQL
- Applicare TLS e hardening
- DBA
- Creare database e user con privilegi minimi
- Pianificare backup e procedure di restore
- Admin applicazione
- Completare la configurazione di osTicket via web
- Creare account agent e regole di ticketing
Procedura di aggiornamento minima (mini-methodology)
- Eseguire un backup completo di DB e directory upload
- Testare l’aggiornamento in ambiente di staging
- Mettere l’istanza in manutenzione
- Applicare l’aggiornamento seguendo la documentazione ufficiale
- Verificare funzionalità e log dopo l’aggiornamento
Quando questa procedura potrebbe non funzionare
- Distribuzioni diverse da Ubuntu 16.04 possono richiedere nomi dei pacchetti differenti (es. php7.2, php7.4).
- Ambienti che usano Apache o mod_php richiedono configurazioni differenti.
- Configurazioni aziendali con LDAP/AD richiedono ulteriori estensioni e verifiche.
Note su compatibilità e migrazione
- Se si migra da versione precedente di osTicket, leggere prima le note di rilascio specifiche per la versione.
- Verificare le compatibilità delle estensioni PHP con la versione di osTicket.
Risorse utili
- Documentazione ufficiale osTicket: http://osticket.com/wiki/Main_Page
Riepilogo
- Hai installato Nginx, MySQL e PHP-FPM, creato database e virtual host, scaricato e installato osTicket.
- Applica HTTPS e permessi restrittivi prima di mettere in produzione.
Note finali: questa guida si concentra su un’installazione base e sicura per ambienti di piccole/medie dimensioni. Per deployment enterprise considera alta disponibilità, bilanciamento del carico e monitoraggio continuo.
Materiali simili

Correggere Dev Error 6068 in Warzone

Verificare versione PowerShell in Windows

Installare estensioni su Edge manualmente

Installare osTicket su Ubuntu 16.04 con Nginx e PHP-FPM

Installare MySQL 5.7 su CentOS 7 e Ubuntu 16.04
