Come installare il sistema di helpdesk UVdesk su Ubuntu 22.04
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa Nginx
- Passaggio 3 - Installa PHP ed estensioni
- Passaggio 4 - Installa MySQL
- Passaggio 5 - Configura MySQL
- Passaggio 6 - Installa Composer
- Passaggio 7 - Scarica e configura UVDesk
- Passaggio 8 - Installa e configura SSL
- Passaggio 9 - Configura Nginx e PHP
- Configura PHP-FPM
- Configura Nginx
UVdesk è un sistema di helpdesk open source basato su Saas che consente alle aziende di interagire con i propri clienti e offrire supporto 24 ore su 24. Le sue funzionalità includono la gestione dei ticket, il supporto della knowledge base, le risposte predefinite e la generazione automatica dei ticket in base alle e-mail. Le funzionalità di Uvdesk possono essere estese utilizzando moduli esterni. Puoi automatizzare determinate azioni in base a trigger specifici per migliorare il tuo flusso di lavoro.
In questo tutorial imparerai come installare Uvdesk su un server Ubuntu 22.04 usando Nginx, MySQL e PHP.
Prerequisiti
-
A server running Ubuntu 22.04.
-
A Fully Qualified domain name (FQDN) pointing to the server. For our tutorial, we will use the
uvdesk.example.com
domain. -
A non-root user with sudo privileges.
-
Make sure everything is updated.
$ sudo apt update && sudo apt upgrade
-
Install basic utility packages. Some of them may already be installed.
$ sudo apt install wget curl nano unzip -y
Passaggio 1: configurare il firewall
Prima di installare qualsiasi pacchetto, il primo passo è configurare il firewall per consentire le connessioni HTTP e HTTPS.
Controlla lo stato del firewall.
$ sudo ufw status
Dovresti vedere qualcosa di simile al seguente.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Consenti porte HTTP e HTTPs.
$ sudo ufw allow http $ sudo ufw allow https
Controlla di nuovo lo stato per confermare.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Passaggio 2: installa Nginx
Ubuntu 22.04 viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, devi scaricare il repository Nginx ufficiale.
Importa la chiave di firma Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Aggiungi il repository per la versione stabile di Nginxs.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aggiorna i repository di sistema.
$ sudo apt update
Installa Nginx.
$ sudo apt install nginx
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.22.0
Avvia il server Nginx.
$ sudo systemctl start nginx
Passo 3 - Installa PHP ed estensioni
Ubuntu 22.04 viene fornito con PHP 8.1 per impostazione predefinita. Tuttavia, UVdesk funziona bene con PHP 8.0. Per installare PHP 8.0, dobbiamo utilizzare il repository PHP di Ondrejs.
Aggiungi il repository PHP di Ondrejs.
$ sudo add-apt-repository ppa:ondrej/php
Aggiorna l'elenco dei repository di sistema.
$ sudo apt update
Installa PHP e le estensioni richieste da UVdesk.
$ sudo apt install php8.0 php8.0-curl php8.0-intl php8.0-gd php8.0-xsl php8.0-mbstring php8.0-zip php8.0-xml php8.0-bz2 php8.0-mysql php8.0-soap php8.0-mysql php8.0-fpm php8.0-gmp php8.0-bcmath php8.0-apcu php8.0-redis php8.0-imagick php8.0-imap php8.0-xdebug php8.0-tidy php8.0-ldap php8.0-opcache php8.0-mailparse
Controlla la versione di PHP installata.
$ php --version PHP 8.0.23 (cli) (built: Sep 18 2022 10:25:06) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.23, Copyright (c) Zend Technologies with Zend OPcache v8.0.23, Copyright (c), by Zend Technologies with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
Passaggio 4: installa MySQL
Ubuntu 22.04 viene fornito con l'ultima versione di MySQL. Puoi installarlo con un singolo comando.
$ sudo apt install mysql-server
Controlla la versione di MySQL.
$ mysql --version mysql Ver 8.0.30-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
Questo passaggio è necessario per le versioni MySQL 8.0.28 e successive. Entra nella shell MySQL.
$ sudo mysql
Esegui il seguente comando per impostare la password per il tuo utente root. Assicurati che contenga una combinazione di numeri, lettere maiuscole, minuscole e caratteri speciali.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Esci dal guscio.
mysql> exit
Esegui lo script di installazione sicura di MySQL.
$ sudo mysql_secure_installation
Innanzitutto, ti verrà chiesta la password di root. Entra. Successivamente, ti verrà chiesto di installare il componente Validate Password. Controlla la forza delle password utilizzate in MySQL. Premi Y per installarlo. Successivamente, ti verrà chiesto di impostare il livello della politica di convalida della password. Scegli 2 in quanto è il più forte.
Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 Using existing password for root. Estimated strength of the password: 100
Quindi, inserisci N per rifiutare di cambiare la tua password di root. Immettere inoltre Y per rimuovere gli utenti anonimi, non consentire gli accessi root remoti, rimuovere il database di test e ricaricare le tabelle dei privilegi.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Passaggio 5: configurare MySQL
Accedi alla shell MySQL. Inserisci la tua password di root quando richiesto.
$ sudo mysql -u root -p
Crea un database di esempio.
mysql> CREATE DATABASE uvdeskdb;
Crea un account utente SQL.
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
Concedere tutti i privilegi sul database all'utente.
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
Elimina i privilegi dell'utente.
mysql> FLUSH PRIVILEGES;
Esci dal guscio.
mysql> exit
Passaggio 6: installa il compositore
UVdesk utilizza Composer per gestire le dipendenze. Esegui i seguenti comandi per scaricare e installare Composer.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" $ php composer-setup.php $ php -r "unlink('composer-setup.php');" $ sudo mv composer.phar /usr/local/bin/composer
Verifica se Composer è stato installato correttamente.
$ composer -V Composer version 2.4.2 2022-09-14 16:11:15
Passo 7 - Scarica e configura UVDesk
Crea la directory
/var/www
.$ sudo mkdir /var/www
Passa alla directory
www
.$ cd /var/www
Assegna l'autorizzazione all'utente di sistema che ha effettuato l'accesso corrente sulla cartella
/var/www
.$ sudo chown $USER:$USER /var/www/
Usa Composer per installare le dipendenze per UVdesk.
$ composer clear-cache $ composer create-project uvdesk/community-skeleton uvdesk.example.com
Installare l'utility Access Control Lists (acl).
$ sudo apt install acl
Concedere autorizzazioni su directory e file specifici sia per l'utente attualmente connesso $USER che per l'utente Nginx nginx.
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config $ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations $ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations $ sudo setfacl -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/.env
Passo 8 - Installa e configura SSL
Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot usando il repository Ubuntus o prendere l'ultima versione usando lo strumento Snapd. Useremo la versione Snapd.
Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.
$ sudo snap install core
Installa Cerbot.
$ sudo snap install --classic certbot
Utilizzare il seguente comando per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory
/usr/bin
.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Eseguire il seguente comando per generare un certificato SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d uvdesk.example.com
Il comando precedente scaricherà un certificato nella directory
/etc/letsencrypt/live/uvdesk.example.com
sul tuo server.Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Controlla il servizio di pianificazione del rinnovo di Certbot.
$ sudo systemctl list-timers
Troverai
snap.certbot.renew.service
come uno dei servizi pianificati per l'esecuzione.NEXT LEFT LAST PASSED UNIT ACTIVATES Mon 2022-09-19 00:28:48 UTC 13min left Sun 2022-09-18 23:31:55 UTC 43min ago fstrim.timer fstrim.service Mon 2022-09-19 00:39:00 UTC 23min left Mon 2022-09-19 00:09:00 UTC 6min ago phpsessionclean.timer phpsessionclean.service Mon 2022-09-19 00:40:00 UTC 24min left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service .......
Per verificare se il rinnovo SSL funziona correttamente, eseguire un'esecuzione a secco del processo.
$ sudo certbot renew --dry-run
Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.
Passaggio 9: configurare Nginx e PHP
Configura PHP-FPM
Apri il file
/etc/php/8.0/fpm/pool.d/www.conf
.$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Dobbiamo impostare l'utente/gruppo Unix di processi PHP su nginx. Trova le righe
user=www-data
egroup=www-data
nel file e modificale innginx.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Trova le righe
listen.owner=www-data
elisten.group=www-data
nel file e modificale innginx
.; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. The owner ; and group can be specified either by name or by their numeric IDs. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Aumenta il tempo di esecuzione per PHP-FPM e PHP-CLI a 60 secondi.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/fpm/php.ini $ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/cli/php.ini
Aumenta il limite di memoria per PHP-FPM da 128 MB a 256 MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.0/fpm/php.ini
Riavvia il servizio PHP-FPM.
$ sudo systemctl restart php8.0-fpm
Cambia il gruppo della directory delle sessioni PHP in Nginx.
$ sudo chgrp -R nginx /var/lib/php/session
Configura Nginx
Crea e apri il file
/etc/nginx/conf.d/uvdesk.conf
per la modifica.$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Incolla il seguente codice al suo interno.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uvdesk.example.com; access_log /var/log/nginx/uvdesk.access.log; error_log /var/log/nginx/uvdesk.error.log; # SSL ssl_certificate /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/uvdesk.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; root /var/www/uvdesk/public; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name uvdesk.example.com; return 301 https://$host$request_uri; }
Si noti che la directory root da utilizzare nella configurazione di Nginx è
/var/www/uvdesk/public/
e non/var/www/uvdesk/
.Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Apri il file
/etc/nginx/nginx.conf
per la modifica.$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Verificare la sintassi del file di configurazione Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Riavvia il servizio Nginx.
$ sudo systemctl restart nginx
Passo 10 - Installa UVDesk
Avvia l'URL
https://uvdesk.example.com
nel tuo browser e otterrai la seguente schermata.Fare clic sul pulsante Iniziamo per avviare il processo di installazione. Il programma di installazione verificherà le impostazioni PHP e i permessi dei file nella pagina successiva.
Fare clic su Procedi per continuare. Ti verrà chiesto di compilare i dettagli del database nella pagina successiva. Immettere i dati come configurato nel passaggio 4.
Fare clic su Procedi per continuare. Successivamente, ti verrà chiesto di creare un account super amministratore. Inserisci i tuoi dati.
Fare clic su Procedi per continuare. Successivamente, ti verrà chiesto di configurare il sito Web assegnando un nome ai prefissi del membro e del pannello del cliente. Questi prefissi vengono utilizzati negli URL del sito web.
Fare clic su Procedi per continuare. Raggiungerai la pagina di installazione finale.
Fare clic su Installa ora per iniziare l'installazione. Una volta terminato, otterrai la seguente schermata.
È possibile accedere al pannello di amministrazione e al sito Web di frontend tramite i collegamenti forniti. L'installazione di UVDesk è pronta per l'uso.
Avviso: se l'installazione non riesce a causa di un
errore SQL \SQLSTATE[42S02]: Base table or view not found: 1146 Table uvdesk.uv_support_role doesnt exists,\
, utilizzare i comandi elencati di seguito per risolvere il problema.$ cd /var/www/helpdesk.example.com/ $ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate $ php bin/console c:c $ sudo shutdown -r now
Conclusione
Hai installato il sistema UVdesk Helpdesk su un server Ubuntu 22.04 utilizzando Nginx, MySQL e PHP. Se hai domande, pubblicale nei commenti qui sotto.