Ricerca nel sito web

Come installare SuiteCRM con Nginx e Free Lets Encrypt SSL su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 16.04 (Xenial Xerus)

Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa Nginx
  4. Passaggio 3 - Installa e configura MariaDB
  5. Passaggio 4 - Installa PHP ed estensioni
  6. Passaggio 5 - Scarica SuiteCRM
  7. Passaggio 6 - Installa e configura SSL
  8. Passaggio 7 - Configura Nginx e PHP
    1. Configura PHP-FPM
    2. Configura la dimensione di caricamento PHP
    3. Configura Nginx

    SuiteCRM è una soluzione di gestione delle relazioni con i clienti open source scritta in PHP. È un fork del popolare software SugarCRM dopo che SugarCRM ha smesso di rilasciare la sua edizione comunitaria. Viene utilizzato per creare un repository centrale per tutti i dati dei clienti per ottenere informazioni che possono essere utilizzate per migliorare e coltivare le relazioni commerciali.

    Alcune delle sue funzionalità includono l'archiviazione dei documenti, l'email marketing, il calendario, l'integrazione dei social media, la gestione del territorio, la segmentazione, l'automazione del marketing, la qualificazione dei lead, l'integrazione della chat interna, l'assistenza clienti, il CRM sociale, l'automazione della forza vendita, le campagne di marketing, il CRM mobile e segnalazione. Può essere integrato con servizi di inoltro SMTP di terze parti come Mandrill, Sendgrid, Amazon SES, ecc. È possibile installare plug-in per estendere le funzionalità di SuiteCRM. Può essere integrato con app di terze parti come Mautic, Facebook, Twitter, MailChimp, Zoom, Quickbooks, DocuSign, ecc.

    In questo post imparerai come installare SuiteCRM utilizzando il server web Nginx e Lets Encrypt SSL su Ubuntu 22.04.

    Prerequisiti

    • A server running Ubuntu 20.04.

    • A non-root sudo user.

    • A Fully Qualified Domain Name (FQDN) pointing to the server like suitecrm.example.com.
    • Make sure everything is updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    • Few packages that your system needs.

      $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
      

      Some of these packages may already be installed on your system.

    Passaggio 1: configurare il firewall

    Il primo passo è configurare il firewall. Ubuntu viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.

    Controlla se il firewall è in esecuzione.

    $ sudo ufw status
    

    Otterrai il seguente output.

    Status: inactive
    

    Consenti porta SSH in modo che il firewall non interrompa la connessione corrente attivandola.

    $ sudo ufw allow OpenSSH
    

    Consenti anche porte HTTP e HTTPS.

    $ sudo ufw allow http
    $ sudo ufw allow https
    

    Abilita il firewall

    $ sudo ufw enable
    Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    Firewall is active and enabled on system startup
    

    Controlla di nuovo lo stato del firewall.

    $ sudo ufw status
    

    Dovresti vedere un output simile.

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

    Abilita il servizio Nginx.

    $ sudo systemctl enable nginx
    

    Passo 3 - Installa e configura MariaDB

    Ubuntu 22.04 viene fornito con la v10.6.7 di MariaDB. Eseguire il seguente comando per installarlo.

    $ sudo apt install mariadb-server
    

    Proteggi l'installazione di MariaDB.

    $ sudo mysql_secure_installation
    

    Affronterai vari suggerimenti. Rispondi come segue.

    Enter current password for root (enter for none): Press Enter
    Switch to unix_socket authentication [Y/n] Type y
    Change the root password? [Y/n] Type n
    Remove anonymous users? [Y/n] Type y
    Disallow root login remotely? [Y/n] Type y
    Remove test database and access to it? [Y/n] Type y
    Reload privilege tables now? [Y/n] Type y
    

    Connettiti alla shell MariaDB usando il seguente comando.

    $ sudo mysql
    

    Crea un nuovo database per SuiteCRM.

    $ CREATE DATABASE suitecrm;
    

    Crea un nuovo utente del database e utilizza una password sicura per t.

    $ CREATE USER 'suitecrmuser'@'localhost' identified by 'yourpassword';
    

    Concedere le autorizzazioni per il database all'utente.

    $ GRANT ALL PRIVILEGES ON suitecrm.* TO 'suitecrmuser'@'localhost';
    

    Elimina tutti i privilegi.

    $ FLUSH PRIVILEGES;
    

    Esci dalla shell MySQL.

    $ exit
    

    Passo 4 - Installa PHP ed estensioni

    Ubuntu 22.04 viene fornito con PHP 8.1 che non è ancora supportato da SuiteCRM. Dobbiamo installare PHP 8.0. Per questo, dobbiamo aggiungere il repository PHP di Ondrejs.

    $ sudo add-apt-repository ppa:ondrej/php
    

    Successivamente, installa PHP e le sue estensioni richieste da SuiteCRM.

    $ sudo apt install php-imagick php8.0-fpm php8.0-mysql php8.0-common php8.0-gd php8.0-imap php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-bz2 php8.0-intl php8.0-gmp
    

    Verificare l'installazione.

    $ php --version
    PHP 8.0.18 (cli) (built: May  1 2022 04:42:09) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.18, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies
    

    Passo 5 - Scarica SuiteCRM

    Scarica l'ultima versione stabile di SuiteCRM. Puoi prendere il link per il download dal sito web ufficiale di SuiteCRM.

    Per il nostro tutorial, installeremo la v7 di SuiteCRM poiché è supportata per un lungo periodo di tempo. Puoi installare la versione v8 se lo desideri, ma inizialmente avrà un periodo di supporto più breve.

    $ wget -O suitecrm.zip https://suitecrm.com/files/147/SuiteCRM-7.12/614/SuiteCRM-7.12.5.zip
    

    Crea una directory radice web per servire SuiteCRM. Il flag -p crea le directory di primo livello nel percorso se non sono presenti.

    $ sudo mkdir -p /var/www/
    

    Estrai l'archivio zip scaricato.

    $ sudo unzip suitecrm.zip -d /var/www/
    

    Il flag -d specifica la directory di destinazione per l'archivio.

    Verrà salvato nella directory /var/www/SuiteCRM-7.12.5/. Lo rinominiamo per renderlo più semplice.

    $ sudo mv /var/www/SuiteCRM-7.12.5/ /var/www/suitecrm
    

    Passa alla radice web.

    $ cd /var/www/suitecrm
    

    Impostare la proprietà e le autorizzazioni corrette per le varie directory.

    $ sudo chown -R nginx:nginx .
    $ sudo chmod -R 755 .
    $ sudo chmod -R 775 cache custom modules themes data upload
    $ sudo chmod 775 config_override.php 2>/dev/null
    

    Passo 6 - Installa e configura SSL

    Prima di configurare Nginx, dobbiamo configurare il certificato SSL.

    Per installare un certificato SSL utilizzando Lets Encrypt, dobbiamo scaricare lo strumento Certbot. Useremo il programma di installazione del pacchetto Snapd per questo.

    Installa il programma di installazione di Snap.

    $ sudo apt install snapd
    

    Assicurati che la tua versione di Snapd sia aggiornata.

    $ sudo snap install core 
    $ sudo snap refresh core
    

    Installa Cerbot.

    $ sudo snap install --classic certbot
    

    Utilizzare il seguente comando per assicurarsi che il comando Certbot venga eseguito creando un collegamento simbolico alla directory /usr/bin.

    $ sudo ln -s /snap/bin/certbot /usr/bin/certbot
    

    Arresta il server Nginx poiché interferisce con lo strumento Certbot.

    $ sudo systemctl stop nginx
    

    Genera un certificato SSL.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d suitecrm.example.com
    

    Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/suitecrm.example.com sul tuo server.

    Genera un certificato di gruppo Diffie-Hellman.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
    

    Crea una directory radice Web di verifica per il rinnovo automatico di Lets Encrypt.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file /etc/cron.daily/certbot-renew e aprilo per modificarlo.

    $ sudo nano /etc/cron.daily/certbot-renew
    

    Incolla il seguente codice.

    #!/bin/sh
    certbot renew --cert-name suitecrm.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    Passaggio 7: 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.
    user = nginx
    group = nginx
    ...
    

    Inoltre, trova le righe listen.owner=www-data e listen.group=www-data nel file e modificale in nginx.

    listen.owner = nginx
    listen.group = nginx
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Configura la dimensione di caricamento PHP

    PHP imposta un limite per la dimensione del file di caricamento. La dimensione predefinita impostata da PHP è 2 MB. Per aumentare la dimensione del caricamento, apri il file di configurazione PHP per la modifica.

    $ sudo nano /etc/php/8.0/fpm/php.ini
    

    Trova la riga seguente.

    upload_max_filesize = 2M
    

    Cambia il suo valore a 20 MB come mostrato.

    upload_max_filesize = 20M
    

    Trova la riga seguente.

    post_max_size = 8M
    

    Cambia il suo valore a 20 MB come mostrato.

    post_max_size = 20M
    

    Trova la riga seguente.

    ;cgi.fix_pathinfo=1
    

    Decommentalo rimuovendo il punto e virgola e cambiando il suo valore in 0.

    cgi.fix_pathinfo=0
    

    Salva il file premendo Ctrl + X e digitando Y quando richiesto.

    Riavvia il processo PHP-fpm.

    $ sudo systemctl restart php8.0-fpm
    

    Configura Nginx

    Crea e apri il file /etc/nginx/conf.d/suitecrm.conf per la modifica.

    $ sudo nano /etc/nginx/conf.d/suitecrm.conf
    

    Incolla il seguente codice al suo interno.

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name suitecrm.example.com;
    
        root /var/www/suitecrm;
        error_log /var/log/nginx/suitecrm.error.log;
        access_log /var/log/nginx/suitecrm.access.log;
        client_max_body_size 20M;
    
        index index.php index.html index.htm;
        
        ssl_certificate      /etc/letsencrypt/live/suitecrm.example.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/suitecrm.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/suitecrm.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;
    
        location / {
            # try to serve file directly, fallback to app.php
            try_files $uri /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            # try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    
            fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
            #Note: If you install SuiteCRM on iRedMail server, you should use the TCP socket instead.
            #fastcgi_pass 127.0.0.1:9999
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    
            fastcgi_buffer_size 128k;
            fastcgi_buffers 256 16k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
        }
    
        # Don't log favicon
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
    
        # Don't log robots
        location = /robots.txt  {
            access_log off;
            log_not_found off;
        }
    
        # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...
        location ~ /\. {
            deny all;
            access_log off;
            log_not_found off;
        }
    
        # A long browser cache lifetime can speed up repeat visits to your page
        location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
            access_log        off;
            log_not_found     off;
            expires           360d;
        }
    }
    
    # enforce HTTPS
    server {
        listen       80;
        listen       [::]:80;
        server_name  suitecrm.example.com;
        return 301   https://$host$request_uri;
    }
    

    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 inserendo Y quando richiesto.

    Verificare la sintassi del file di configurazione di 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 per abilitare la nuova configurazione.

    $ sudo systemctl restart nginx
    

    Passo 8 - Installa e configura SuiteCRM

    Apri il sito https://suitecrm.example.com nel browser e ti verrà presentata la configurazione guidata.

    Seleziona la casella Accetto e fai clic sul pulsante Avanti per procedere. Ti verrà presentata la schermata che controlla i requisiti di pre-installazione.

    Se tutto è a posto, fai clic sul pulsante Avanti per procedere.

    Immettere le credenziali del database impostate nel passaggio 3. Immettere localhost come nome host. Inoltre, inserisci i dettagli per l'account amministratore e inserisci https://suitecrm.example.com come URL istanza.

    È possibile configurare impostazioni aggiuntive come i dati demo, le impostazioni del server SMTP, il marchio, le impostazioni locali del sistema, la sicurezza e le impostazioni del database.

    Per abilitare le impostazioni SMTP, espandere la sezione Specifica del server SMTP della pagina e inserire i valori appropriati. Se utilizzi Gmail o Microsoft Exchange, puoi utilizzare i pulsanti dedicati per configurarli. Per il nostro tutorial, stiamo usando Amazon SES.

    Inoltre, configurare le impostazioni locali del sistema.

    Al termine, fare clic sul pulsante Avanti nella parte inferiore della pagina per procedere. Ti vengono presentati i dettagli del completamento della configurazione di SuiteCRM.

    Fare clic sul pulsante Avanti per procedere. Ti verrà presentata la pagina di accesso.

    Inserisci le credenziali dell'account amministratore e fai clic su Accedi per aprire la dashboard di SuiteCRM.

    Puoi iniziare a utilizzare SuiteCRM per gestire i dati della tua attività e dei clienti.

    Passaggio 9: impostare i lavori Cron

    SuiteCRM necessita di cron job per funzionare correttamente. Modifica il file crontab degli utenti nginx.

    $ sudo crontab -e -u nginx
    

    Aggiungere la riga seguente alla fine del file.

    *    *    *    *    *     cd /var/www/suitecrm; php -f cron.php > /dev/null 2>&1
    

    Salva e chiudi il file.

    Conclusione

    Questo conclude il tutorial sull'installazione di SuiteCRM utilizzando il server Nginx con Lets Encrypt SSL su Ubuntu 22.04. Se hai domande, pubblicale nei commenti qui sotto.