Pesquisa de site

Como instalar SuiteCRM com Nginx e Free Lets Encrypt SSL no Ubuntu 22.04


Este tutorial existe para estas versões do sistema operacional

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

Nesta página

  1. Pré-requisitos
  2. Etapa 1 - Configurar o Firewall
  3. Etapa 2 - Instalar o Nginx
  4. Etapa 3 - Instalar e configurar o MariaDB
  5. Etapa 4 - Instale o PHP e as extensões
  6. Etapa 5 - Baixe o SuiteCRM
  7. Etapa 6 - Instalar e configurar o SSL
  8. Etapa 7 - Configurar Nginx e PHP
    1. Configurar PHP-FPM
    2. Configurar o tamanho do upload do PHP
    3. Configurar o Nginx

    O SuiteCRM é uma solução de gerenciamento de relacionamento com o cliente de código aberto escrita em PHP. É uma bifurcação do popular software SugarCRM depois que o SugarCRM parou de lançar sua edição comunitária. Ele é usado para criar um repositório central para todos os dados de seus clientes para obter insights que podem ser usados para aprimorar e nutrir seus relacionamentos comerciais.

    Alguns de seus recursos incluem armazenamento de documentos, e-mail marketing, calendário, integração de mídia social, gerenciamento de território, segmentação, automação de marketing, qualificação de leads, integração de bate-papo interno, suporte ao cliente, CRM social, automação da força de vendas, campanhas de marketing, CRM móvel e comunicando. Ele pode ser integrado a serviços de retransmissão SMTP de terceiros, como Mandrill, Sendgrid, Amazon SES, etc. Você pode instalar plug-ins para estender a funcionalidade do SuiteCRM. Ele pode ser integrado com aplicativos de terceiros como Mautic, Facebook, Twitter, MailChimp, Zoom, Quickbooks, DocuSign, etc.

    Neste post, você aprenderá como instalar o SuiteCRM usando o servidor web Nginx e o Lets Encrypt SSL no Ubuntu 22.04.

    Pré-requisitos

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

    Passo 1 - Configurar o Firewall

    O primeiro passo é configurar o firewall. O Ubuntu vem com ufw (Uncomplicated Firewall) por padrão.

    Verifique se o firewall está em execução.

    $ sudo ufw status
    

    Você obterá a seguinte saída.

    Status: inactive
    

    Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-la.

    $ sudo ufw allow OpenSSH
    

    Permitir portas HTTP e HTTPS também.

    $ sudo ufw allow http
    $ sudo ufw allow https
    

    Habilitar o Firewall

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

    Verifique o status do firewall novamente.

    $ sudo ufw status
    

    Você deve ver uma saída semelhante.

    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)
    

    Etapa 2 - Instalar o Nginx

    O Ubuntu vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório Nginx oficial.

    Importe a chave de assinatura do Nginxs.

    $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    

    Adicione o repositório para a versão estável do 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
    

    Atualize os repositórios do sistema.

    $ sudo apt update
    

    Instale o Nginx.

    $ sudo apt install nginx
    

    Verifique a instalação.

    $ nginx -v
    nginx version: nginx/1.20.2
    

    Habilite o serviço Nginx.

    $ sudo systemctl enable nginx
    

    Etapa 3 - Instalar e configurar o MariaDB

    O Ubuntu 22.04 vem com a v10.6.7 do MariaDB. Execute o seguinte comando para instalá-lo.

    $ sudo apt install mariadb-server
    

    Proteja a instalação do MariaDB.

    $ sudo mysql_secure_installation
    

    Você enfrentará vários prompts. Responda-os da seguinte forma.

    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
    

    Conecte-se ao shell MariaDB usando o seguinte comando.

    $ sudo mysql
    

    Crie um novo banco de dados para o SuiteCRM.

    $ CREATE DATABASE suitecrm;
    

    Crie um novo usuário de banco de dados e use uma senha forte para t.

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

    Conceda permissões no banco de dados ao usuário.

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

    Descarregue todos os privilégios.

    $ FLUSH PRIVILEGES;
    

    Saia do shell do MySQL.

    $ exit
    

    Passo 4 - Instale o PHP e as extensões

    O Ubuntu 22.04 vem com o PHP 8.1, que ainda não é suportado pelo SuiteCRM. Precisamos instalar o PHP 8.0. Para isso, precisamos adicionar o repositório Ondrejs PHP.

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

    Em seguida, instale o PHP e suas extensões exigidas pelo 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
    

    Verifique a instalação.

    $ 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
    

    Etapa 5 - Baixe o SuiteCRM

    Baixe a última versão estável do SuiteCRM. Você pode obter o link de download no site oficial do SuiteCRMs.

    Para nosso tutorial, instalaremos a v7 do SuiteCRM, pois ela é suportada por um longo período de tempo. Você pode instalar a versão v8 se quiser, mas inicialmente terá um período de suporte mais curto.

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

    Crie um diretório raiz da web para atender ao SuiteCRM. O sinalizador -p cria os diretórios de nível superior no caminho se eles não estiverem presentes.

    $ sudo mkdir -p /var/www/
    

    Extraia o arquivo zip baixado.

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

    O sinalizador -d especifica o diretório de destino para o arquivo.

    Ele será salvo no diretório /var/www/SuiteCRM-7.12.5/. Nós o renomeamos para torná-lo mais simples.

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

    Alterne para a raiz da web.

    $ cd /var/www/suitecrm
    

    Defina a propriedade e as permissões corretas para os vários diretórios.

    $ 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
    

    Etapa 6 - Instalar e configurar o SSL

    Antes de configurar o Nginx, precisamos configurar o certificado SSL.

    Para instalar um certificado SSL usando Lets Encrypt, precisamos baixar a ferramenta Certbot. Usaremos o instalador do pacote Snapd para isso.

    Instale o instalador do Snap.

    $ sudo apt install snapd
    

    Certifique-se de que sua versão do Snapd esteja atualizada.

    $ sudo snap install core 
    $ sudo snap refresh core
    

    Instale o Certbot.

    $ sudo snap install --classic certbot
    

    Use o comando a seguir para garantir que o comando Certbot seja executado criando um link simbólico para o diretório /usr/bin.

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

    Pare o servidor Nginx, pois ele interfere na ferramenta Certbot.

    $ sudo systemctl stop nginx
    

    Gere um certificado SSL.

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

    O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/suitecrm.example.com em seu servidor.

    Gere um certificado de grupo Diffie-Hellman.

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

    Crie um diretório raiz da Web de desafio para a renovação automática do Lets Encrypt.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    Crie um Cron Job para renovar o SSL. Ele será executado todos os dias para verificar o certificado e renová-lo, se necessário. Para isso, primeiro crie o arquivo /etc/cron.daily/certbot-renew e abra-o para edição.

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

    Cole o seguinte código.

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

    Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

    Altere as permissões no arquivo de tarefa para torná-lo executável.

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

    Passo 7 - Configurar Nginx e PHP

    Configurar PHP-FPM

    Abra o arquivo /etc/php/8.0/fpm/pool.d/www.conf.

    $ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
    

    Precisamos definir o usuário/grupo Unix de processos PHP para nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere-as para 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
    ...
    

    Além disso, localize as linhas listen.owner=www-data e listen.group=www-data no arquivo e altere-as para nginx.

    listen.owner = nginx
    listen.group = nginx
    

    Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

    Configurar o tamanho do upload do PHP

    O PHP define um limite para o tamanho do arquivo de upload. O tamanho padrão definido pelo PHP é de 2 MB. Para aumentar o tamanho do upload, abra o arquivo de configuração do PHP para edição.

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

    Encontre a seguinte linha.

    upload_max_filesize = 2M
    

    Altere seu valor para 20 MB, conforme mostrado.

    upload_max_filesize = 20M
    

    Encontre a seguinte linha.

    post_max_size = 8M
    

    Altere seu valor para 20 MB, conforme mostrado.

    post_max_size = 20M
    

    Encontre a seguinte linha.

    ;cgi.fix_pathinfo=1
    

    Descomente-o removendo o ponto e vírgula e alterando seu valor para 0.

    cgi.fix_pathinfo=0
    

    Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

    Reinicie o processo PHP-fpm.

    $ sudo systemctl restart php8.0-fpm
    

    Configurar o Nginx

    Crie e abra o arquivo /etc/nginx/conf.d/suitecrm.conf para edição.

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

    Cole o seguinte código nele.

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

    Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado quando terminar.

    Abra o arquivo /etc/nginx/nginx.conf para edição.

    $ sudo nano /etc/nginx/nginx.conf
    

    Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

    server_names_hash_bucket_size  64;
    

    Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

    Verifique a sintaxe do arquivo de configuração do 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
    

    Reinicie o serviço Nginx para habilitar a nova configuração.

    $ sudo systemctl restart nginx
    

    Etapa 8 - Instalar e configurar o SuiteCRM

    Abra o site https://suitecrm.example.com no navegador e você verá o assistente de configuração.

    Marque a caixa Aceito e clique no botão Avançar para continuar. Você será presenteado com a tela que verifica os requisitos de pré-instalação.

    Se tudo estiver correto, clique no botão Avançar para continuar.

    Digite as credenciais do banco de dados definidas na etapa 3. Digite localhost como o nome do host. Além disso, insira os detalhes da conta do administrador e insira https://suitecrm.example.com como a URL da instância.

    Você pode definir configurações adicionais, como dados de demonstração, configurações do servidor SMTP, marca, localidade do sistema, segurança e configurações do banco de dados.

    Para ativar as configurações de SMTP, expanda a seção Especificação do Servidor SMTP da página e preencha os valores apropriados. Se você estiver usando o Gmail ou o Microsoft Exchange, poderá usar os botões dedicados para configurá-los. Para nosso tutorial, estamos usando o Amazon SES.

    Além disso, defina as configurações de localidade do sistema.

    Depois de concluído, clique no botão Avançar na parte inferior da página para prosseguir. Você é apresentado com os detalhes da conclusão da configuração do SuiteCRMs.

    Clique no botão Avançar para prosseguir. Você será presenteado com a página de login.

    Insira as credenciais da conta do administrador e clique em Login para abrir o painel do SuiteCRM.

    Você pode começar a usar o SuiteCRM para gerenciar seus dados de negócios e clientes.

    Etapa 9 - Configurar trabalhos do cron

    O SuiteCRM precisa de cron jobs para funcionar corretamente. Edite o arquivo crontab dos usuários nginx.

    $ sudo crontab -e -u nginx
    

    Adicione a seguinte linha no final do arquivo.

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

    Salve e feche o arquivo.

    Conclusão

    Isso conclui o tutorial sobre a instalação do SuiteCRM usando o servidor Nginx com Lets Encrypt SSL no Ubuntu 22.04. Se você tiver alguma dúvida, poste-a nos comentários abaixo.

Artigos relacionados: