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
- Pré-requisitos
- Etapa 1 - Configurar o Firewall
- Etapa 2 - Instalar o Nginx
- Etapa 3 - Instalar e configurar o MariaDB
- Etapa 4 - Instale o PHP e as extensões
- Etapa 5 - Baixe o SuiteCRM
- Etapa 6 - Instalar e configurar o SSL
- Etapa 7 - Configurar Nginx e PHP
- Configurar PHP-FPM
- Configurar o tamanho do upload do PHP
- 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
egroup=www-data
no arquivo e altere-as paranginx
.... ; 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
elisten.group=www-data
no arquivo e altere-as paranginx
.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 insirahttps://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.