Ricerca nel sito web

Come installare il sistema di helpdesk UVdesk su Ubuntu 22.04


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa Nginx
  4. Passaggio 3 - Installa PHP ed estensioni
  5. Passaggio 4 - Installa MySQL
  6. Passaggio 5 - Configura MySQL
  7. Passaggio 6 - Installa Composer
  8. Passaggio 7 - Scarica e configura UVDesk
  9. Passaggio 8 - Installa e configura SSL
  10. Passaggio 9 - Configura Nginx e PHP
    1. Configura PHP-FPM
    2. 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 e group=www-data nel file e modificale in nginx.

    ...
    ; 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 e listen.group=www-data nel file e modificale in nginx.

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