Como instalar o SuiteCRM no Debian 9
O SuiteCRM, um fork do SugarCRM, é uma plataforma corporativa de gerenciamento de relacionamento com o cliente (CRM) de código aberto escrita na linguagem de programação PHP que pode ser usada para criar estratégias, ações e decisões de negócios.
Este tutorial descreve todas as etapas necessárias para instalar a versão mais recente da plataforma SuiteCRM em um Debian 9, a fim de implantar uma poderosa plataforma online para o seu negócio. O aplicativo CRM será implantado no Debian Linux no servidor Apache HTTP, PHP e mecanismo de banco de dados MariaDB.
Requisitos
- Um servidor bare-metal ou um servidor privado virtual com no mínimo 2 Gb de RAM e a instalação mínima do servidor Debian 9.
- Acesso à conta root via console da máquina ou remotamente via SSH. Além da conta root, você também pode usar uma conta com privilégios de root por meio do comando sudo.
- A interface de rede externa configurada com um endereço IP estático ou o servidor DHCP configurado para conceder um endereço IP estático para esta interface.
- Um nome de domínio público registrado para acessar o aplicativo da Internet. Se o aplicativo for implantado em intranets, você poderá realizar o processo de instalação e acessar o site por meio do endereço IP do seu servidor.
- Um servidor de correio configurado em suas instalações para usar o registro do site ou outros recursos do aplicativo. Você também pode usar um serviço de e-mail público, como Gmail ou Yahoo!, Microsoft Exchange ou outros, para enviar e receber e-mails.
Preparar o servidor
Na primeira etapa, faça login no console do servidor com a conta root ou um usuário com privilégios root obtidos via sudo e configure o nome do seu sistema com o comando abaixo. Certifique-se de substituir o nome do host da máquina usado neste exemplo de acordo.
hostnamectl set-hostname www.mycrm.org
Depois de alterar o nome do host do sistema, execute o comando abaixo para verificar se o nome da máquina foi aplicado corretamente.
hostnamectl
cat /etc/hostname
hostname –s
hostname –f
Em seguida, certifique-se de atualizar os repositórios do sistema, os pacotes de software e o kernel, emitindo os comandos abaixo.
apt update
apt upgrade
Por fim, após a conclusão do processo de atualização, reinicie a máquina para aplicar as alterações de nome de host e atualizações de kernel, executando o comando abaixo.
systemctl reboot
Após a reinicialização da máquina, faça login novamente no console do servidor e execute o comando abaixo para instalar alguns utilitários de linha de comando, como wget, curl e zip, que serão usados posteriormente para baixar software pela Internet e extrair arquivos compactados zip.
apt install wget curl zip unzip
Instale o Apache e o PHP
O aplicativo SuiteCRM será implantado no Debian no topo de uma pilha LAMP. Os primeiros componentes da pilha LAMP que instalaremos são o servidor HTTP Apache e o interpretador de linguagem de programação dinâmica PHP. Execute o comando abaixo para instalar o servidor web Apache e todos os módulos PHP necessários em seu sistema.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-json php7.0-zip php7.0-curl php7.0-imap
Instalar banco de dados MariaDB
O próximo componente do pacote de software LAMP que instalaremos no servidor Debian é o mecanismo de banco de dados MariaDB. O banco de dados RDBMS é requerido pelo aplicativo para armazenar diferentes configurações de plataforma, como usuários, sessões, contatos, produtos, catálogos e outros. Para instalar o mecanismo de banco de dados MariaDB e o módulo PHP necessário para acessar o banco de dados, execute o comando abaixo no console de sua máquina.
apt install mariadb-server php7.0-mysql mariadb-client
Após a instalação de todos os componentes do LAMP, verifique se o servidor web Apache e o daemon MariaDB estão funcionando e aguardando conexões de rede na porta 80 e TCP 3306, emitindo um dos seguintes comandos.
netstat –tlpn
ss- tulpn
O utilitário Netstat não está presente por padrão no sistema Debian 9. Para instalar o utilitário netstat em um servidor Debian Stretch, execute o comando abaixo.
apt install net-tools
Paraa fim de acessar com segurança o site do CRM via protocolo HTTPS que protegerá o tráfego entre os navegadores do servidor e dos clientes, certifique-se de ativar também o módulo Apache TLS e o arquivo de configuração do site SSL, emitindo os comandos abaixo.
a2enmod ssl
a2ensite default-ssl.conf
Em seguida, ative o módulo de reescrita do Apache emitindo o comando abaixo. O módulo de reescrita é necessário se você quiser modificar as configurações do servidor web on-fly por meio de arquivos .htaccess colocados em seu domínio webroot.
a2enmod rewrite
systemctl restart apache2
Em seguida, ative o módulo de reescrita colocando as regras necessárias nos arquivos de configuração do Apache. Primeiro, aplicaremos as regras de reescrita no arquivo de configuração padrão do Apache. Portanto, abra o arquivo /etc/apache2/sites-enabled/000-default.conf para edição com um editor de texto e insira as regras de reescrita de URL abaixo após DocumentRoot, conforme mostrado no trecho a seguir.
nano /etc/apache2/sites-enabled/000-default.conf
000-default.conf trecho do arquivo:
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Feche 000-default.conf com CTRL+o, depois Ctrl+x e abra o arquivo de configuração do site SSL padrão do Apache e insira as regras de reescrita de URL adicionando as seguintes linhas de código após a diretiva DocumentRoot, conforme mostrado no exemplo abaixo:
nano /etc/apache2/sites-enabled/default-ssl.conf
Trecho do arquivo de configuração do site SSL:
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Por fim, depois de fazer todas as alterações acima, reinicie o daemon do Apache para selecionar todas as novas regras configuradas até agora.
systemctl restart apache2
Agora, você deve visitar seu domínio ou o endereço IP do servidor via protocolo HTTP de uma máquina de área de trabalho remota. A página web padrão do Debian deve ser exibida em seu navegador.
http://seudominio.tld
Configuração do Firewall
Se você não conseguir ver a página da web, verifique se o aplicativo de firewall UFW está ativado no servidor Debian. Se for esse o caso, você deve inserir as regras abaixo para permitir que o tráfego HTTP e HTTPS passe pelo firewall.
ufw allow 'WWW Full'
ou
ufw allow 80/tcp
ufw allow 443/tcp
As regras brutas do firewall iptables para permitir que o tráfego de entrada TCP das portas 80 e 443 passe pelo firewall são descritas abaixo.
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service
Por fim, depois de adicionar as regras de firewall necessárias, teste se a página da Web padrão do servidor Apache pode ser exibida em um navegador remoto visitando seu nome de domínio ou endereço IP do servidor por meio do protocolo HTTPS. Execute os comandos ifconfig ou ip a para exibir o endereço IP do seu servidor.
http://seudominio.tld
Como você está usando o certificado autoassinado automaticamente emitido pelo Apache na instalação, certificado não confiável pelo navegador, um aviso dizendo \Sua conexão não é segura deve ser exibido no navegador. Aceite o certificado não confiável para para ignorar o erro e ser redirecionado para a página da Web padrão do Apache, conforme ilustrado na imagem abaixo.
Configurar MariaDB e PHP
Agora, vamos começar a proteger a conta root do MariaDB. Faça login no console do MySQL e execute os comandos abaixo para atualizar o plug-in da conta root.
mysql -h localhost
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(nenhum)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> update user set plugin= where user=root;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [mysql]> privilégios de liberação;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> exit
Bye
Além disso, execute o script mysql_secure_installation fornecido para ampliar os repositórios do Debian para proteger ainda mais o banco de dados MariaDB. O script fará as seguintes perguntas: mude a senha root do MySQL, remova usuários anônimos, desabilite logins root remotos e exclua o banco de dados de teste. Responda sim a todas as perguntas, conforme ilustrado no exemplo de saída de script abaixo.
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] 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? [Y/n] y
... Success!
By default, MariaDB 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? [Y/n] 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? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Teste se todas as medidas de segurança foram aplicadas tentando fazer login no console MySQL com conta root e nenhuma senha fornecida. O acesso ao banco de dados deve ser negado se nenhuma senha for fornecida para a conta root, conforme ilustrado no trecho de comando abaixo:
mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Agora, tente fazer login no console do MySQL com a conta root e a senha, conforme mostrado no exemplo abaixo. Você deve conseguir fazer login no console do MySQL. Digite exit para sair do banco de dados MySQL.
mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
Na próxima etapa, altere as seguintes variáveis PHP no arquivo de configuração php.ini conforme descrito abaixo. Abra o arquivo /etc/php/7.0/apache2/php.ini para edição e modifique as seguintes linhas. Primeiro, certifique-se de fazer backup do arquivo de configuração inicial do PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
Pesquise, edite e altere as seguintes variáveis no arquivo de configuração php.ini:
file_uploads = On
default_charset = UTF-8
memory_limit = 128M
post_max_size = 60M
upload_max_filesize = 60M
memory_limit = 256M
max_input_time = 60
max_execution_time = 6000
date.timezone = Europe/London
Substitua a variável timezone no arquivo de configuração do PHP de acordo com a localização geográfica do seu servidor. A lista de fuso horário do PHP pode ser encontrada no seguinte link http://php.net/manual/en/timezones.php
Para aumentar a velocidade de carregamento das páginas do seu site, habilite o plug-in OPCache disponível para PHP7. Insira as seguintes linhas do OPCache na parte inferior do arquivo de configuração do interpretador PHP, após a instrução [opcache], conforme o trecho a seguir:
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Por fim, feche o arquivo de configuração php.ini e reinicie o daemon Apache para aplicar as alterações emitindo o comando abaixo.
systemctl restart apache2
Para exibir todas as configurações do PHP em um navegador, crie um arquivo de informações do PHP no caminho webroot do seu domínio executando o seguinte comando.
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
Visite o arquivo de script de informações PHP de um navegador remoto no seguinte URL. Role para baixo até a configuração date para verificar se a configuração de fuso horário do PHP e outras configurações foram aplicadas com sucesso.
https://domain.tld/info.php
Instalar o SuiteCRM
Depois de definirmos todas as configurações LAMP necessárias para instalar o aplicativo SuiteCRM, visite a página de download oficial do SuiteCRM em https://suitecrm.com/download/ e pegue o arquivo zip mais recente em seu sistema, emitindo o comando abaixo. No momento da redação deste guia, a última versão lançada do SuiteCRM era o arquivo SuiteCRM-7.9.9.zip.
wget https://suitecrm.com/files/158/SuiteCRM-7.9/178/SuiteCRM-7.9.9.zip
ls
Depois que o download do arquivo zip do SuiteCRM for concluído, extraia o arquivo zip para o diretório de trabalho atual e liste os arquivos extraídos emitindo os comandos abaixo.
unzip SuiteCRM-7.9.9.zip
ls
ls –al SuiteCRM-7.9.9
Antes de copiar os arquivos de instalação para o seu domínio webroot, certifique-se de remover o arquivo index.html padrão instalado pelo pacote Apache para o caminho raiz do documento do servidor web e também excluir o arquivo info.php criado anteriormente.
rm /var/www/html/index.html
rm /var/www/html/info.php
Os arquivos de instalação do aplicativo SuiteCRM estão localizados em seu diretório de trabalho atual no diretório SuiteCRM-7.9.9/. Emita o comando ls para listar os arquivos desse diretório. Copie todo o conteúdo do diretório SuiteCRM-7.9.9/ para o caminho raiz do documento do servidor da web emitindo o seguinte comando.
cp -rf SuiteCRM-7.9.9/* /var/www/html/
Em seguida, conceda ao usuário de tempo de execução do Apache (www-data) permissões de gravação completas para o caminho raiz do documento Apache, emitindo o comando abaixo. Execute o comando ls para listar as permissões para os arquivos instalados localizados no diretório /var/www/html/.
chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/
Em seguida, faça login no console do banco de dados MariaDB e crie o banco de dados SuiteCRM. Escolha um nome para este banco de dados e um usuário com uma senha forte para gerenciar o banco de dados do aplicativo, emitindo os seguintes comandos. Certifique-se de alterar o nome do banco de dados, usuário e senha usados neste tutorial com suas próprias configurações.
mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(nenhum)]> criar banco de dados mycrm_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(nenhum)]> concede todos os privilégios em mycrm_db.* para crm_user@localhost identificado por password1234;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(nenhum)]> privilégios de liberação;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
Agora, vamos iniciar o processo de instalação do aplicativo SuiteCRM. Abra um navegador e navegue pelo endereço IP ou nome de domínio do seu servidor por meio do protocolo HTTPS.
http://seudominio.tld
Na primeira tela de instalação, o instalador do SuiteCRM exibirá o contrato de licença. Marque a caixa de seleção ‘Aceito’ para concordar com os termos e condições da licença, escolha o idioma para instalar o aplicativo e clique no botão Avançar para iniciar o processo de instalação, conforme ilustrado na captura de tela abaixo.
Na próxima tela de instalação, o instalador do SuiteCRM verificará os requisitos do ambiente do sistema e exibirá uma mensagem OK se todas as configurações do PHP e do servidor forem aprovadas. Para continuar o processo de instalação, clique no botão Avançar, conforme mostrado na captura de tela abaixo.
Em seguida, o instalador exibirá as configurações de conexão do banco de dados e a página de configuração do site. No painel esquerdo, selecione MySQL com extensão MySQLi como tipo de banco de dados e forneça o nome do banco de dados MySQL criado para instalar o aplicativo SuiteCRM, endereço do host do servidor de banco de dados, nome de usuário do banco de dados e a senha necessária para acessar o banco de dados SuiteCRM. Além disso, selecione \Same as Admin user em \SuiteCRM Database user /. No plano direito, adicione um nome de usuário de administrador de aplicativo e defina uma senha forte para a conta de administrador. Verifique o endereço URL da instância do SuiteCRM para corresponder ao seu nome de domínio via protocolo HTTPS, na porta 443 e adicione o endereço de e-mail da conta de administrador. Use a imagem a seguir como um guia para configurar esta etapa.
Em seguida, na mesma tela de instalação, clique em Escolher dados de demonstração no menu Mais opções e escolha não preencher o banco de dados do SuiteCRM com dados de demonstração. Em seguida, clique no menu Seleção de cenário e selecione para habilitar os seguintes módulos do SuiteCRM: Vendas, Marketing, Finanças, Serviços e Gerenciamento de projetos. Se você não precisar de um módulo durante a instalação do aplicativo, poderá deixá-lo desmarcado e ativá-lo após a conclusão do processo de instalação usando a página de administração do aplicativo.
Em seguida, role para baixo e clique no menu Especificação do servidor SMTP para ativar a opção de e-mails do SuiteCRM. Adicione o nome e o endereço de e-mail que deseja que apareçam no cabeçalho de e-mail \De. Em seguida, escolha seu provedor de serviços de e-mail e especifique as configurações do servidor de e-mail. Neste guia, usaremos o provedor de serviços do Gmail para enviar e-mails e as configurações do servidor de e-mail podem ser encontradas ilustradas na captura de tela abaixo. Depois de concluir as configurações necessárias para habilitar seu provedor de serviços de e-mail, clique no menu Marca e adicione um nome a ser exibido na barra de título do navegador para o aplicativo SuiteCRM e carregue o seu próprio imagem do logotipo do site.
Em seguida, role para baixo novamente e clique no menu System Locale Settings e especifique como as configurações de formato de hora, fuso horário e moeda devem ser exibidas no aplicativo SuiteCRM. Por fim, deixe as opções de segurança do site desmarcadas por enquanto e clique no botão Avançar para concluir o processo de instalação. Você pode usar a imagem abaixo para concluir esta etapa.
Após a conclusão do processo de instalação, você será redirecionado para a página de login do SuiteCRM. Para acessar o painel de administração do aplicativo, faça login no SuiteCRM com as credenciais da conta de administrador configuradas durante o processo de instalação, conforme mostrado na imagem abaixo.
Antes de fazer login no painel de administração do SuiteCRM, primeiro retorne ao console do servidor e emita o seguinte comando para remover o diretório de instalação que não é mais necessário e pode representar uma violação de segurança.
rm -rf /var/www/html/install/
Você também pode visitar o painel do SuiteCRM navegando até o endereço IP do seu servidor ou nome de domínio por meio do protocolo HTTPS. Uma visualização do painel de administração do SuiteCRM é apresentada na captura de tela abaixo.
http://seudominio.tld
Por fim, para redirecionar automaticamente os visitantes para HTTPS, para que possam acessar com segurança a interface SuiteCRM de seus navegadores, retorne ao terminal do servidor e edite o arquivo .htaccess gerado automaticamente localizado no caminho raiz do documento de domínio, emitindo o comando abaixo.
nano /var/www/html/.htaccess
No arquivo .htaccess, procure a linha
Trecho do arquivo .htaccess:
# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Na parte inferior do arquivo, você pode modificar as configurações do servidor PHP nativo do servidor web adicionando outras linhas com as configurações para refletir seus próprios recursos e configurações do servidor.
# Modify PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M
Para executar os agendadores do SuiteCRM, edite o arquivo crontab da conta de tempo de execução do servidor da web com o comando abaixo e adicione a seguinte tarefa cron para executar a cada minuto.
crontab -e -u www-data
exemplo de arquivo crontab:
* * * * * /usr/bin/php7.0 -f /var/www/html/cron.php > /dev/null 2>&1
Se você deseja contornar os avisos do navegador que são gerados sempre que um cliente visita seu aplicativo, considere comprar um certificado emitido por uma autoridade de certificação confiável ou emitir um certificado gratuito da Let's Encrypt CA.
Isso é tudo! O aplicativo da web SuiteCRM foi instalado e configurado com sucesso em um servidor Debian 9 no topo de uma pilha LAMP.
Para personalizar ainda mais a plataforma SuiteCRM, visite a página wiki do aplicativo no seguinte endereço: https://suitecrm.com/wiki/index.php/Main_Page