Pesquisa de site

Como instalar SuiteCRM com Nginx no CentOS 7


Nesta página

  1. O que faremos
  2. Pré-requisitos
  3. Etapa 1 - Instalar o servidor da Web Nginx
  4. Etapa 2 - Instalar e configurar o PHP-FPM
  5. Etapa 3 - Instalar e configurar o MariaDB
  6. Etapa 4 - Baixe e configure o SuiteCRM
    1. Baixe o SuiteCRM
    2. Configurar o Firewalld
    3. Gerar novo SSL Letsencrypt
    4. Configurar host virtual SuiteCRM Nginx

    SuiteCRM é um software de CRM (Customer Relationship Management) de código aberto baseado em PHP. É um fork do popular software de CRM SugarCRM e se tornou mais popular depois que a equipe por trás dele decidiu interromper o desenvolvimento da versão gratuita. O SuiteCRM foi indicado como o melhor software de CRM de código aberto no BOSSIE 2015 e 2016.

    Neste tutorial, mostraremos como instalar e configurar o SuiteCRM usando o Nginx como servidor Web. O software CRM será executado na pilha LEMP com HTTPS ativado. E para isso, usaremos o CentOS 7 como sistema operacional principal.

    O que nos faremos

    1. Instalar o servidor da Web Nginx
    2. Instalar e configurar PHP-FPM
    3. Instalar e configurar o MariaDB
    4. Baixe e configure o SuiteCRM
    5. Instale o SuiteCRM por meio do instalador da Web
    6. Configuração final

    Pré-requisitos

    • Servidor CentOS 7
    • Privilégios de root

    Passo 1 - Instale o servidor Web Nginx

    A primeira etapa que devemos fazer para conectar o servidor e instalar a pilha básica do SuiteCRM. Conecte-se ao servidor via SSH usando o seguinte comando:

    ssh 

    Depois de conectar como usuário root, precisamos instalar um repositório de terceiros em nosso sistema. Especificamente, precisamos instalar o repositório EPEL (Extra Package for Enterprise Linux) no sistema antes de instalar o Nginx.

    Instale o repositório EPEL usando o comando yum da seguinte maneira:

    yum -y install epel-release

    Agora podemos instalar o servidor web Nginx no sistema.

    yum -y install nginx

    Se a instalação estiver concluída, inicie o serviço e habilite-o para ser executado automaticamente no momento da inicialização usando o comando systemctl conforme mostrado abaixo.

    systemctl start nginx
    systemctl enable nginx

    O servidor da Web Nginx agora está instalado e, por padrão, está sendo executado na porta 80. Verifique-o usando os comandos netstat ou curl.

    netstat -plntu
    curl -I localhost

    Certifique-se de que a porta 80 esteja no status LISTEN e que o comando curl forneça o código de status HTTP 200 em sua saída.

    Passo 2 - Instalar e configurar o PHP-FPM

    Nesta etapa, instalaremos e configuraremos o PHP-FPM versão 7 no servidor CentOS 7. Por padrão, o centOS não fornece repositório para a nova versão 7 do PHP. Portanto, precisamos adicionar um repositório diferente para a instalação do PHP-FPM 7.

    Adicione o novo repositório PHP 7 webtatic ao sistema usando o comando rpm.

    sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    Agora instale os pacotes e extensões do PHP 7 usando o comando yum conforme mostrado abaixo.

    sudo yum install -y php71w-fpm php71w-cli php71w-common php71w-imap php71w-gd php71w-mbstring php71w-mcrypt php71w-mysql php71w-xml

    Se a instalação estiver concluída, edite o arquivo de configuração php.ini padrão usando o vim.

    vim /etc/php.ini

    Altere o tamanho máximo do arquivo de upload para a instalação do SuiteCRM para 100 MB. No mínimo, o SuiteCRM precisa de mais de 6 MB.

    upload_max_filesize = 100M

    Descomente a seguinte linha CGI e altere o valor para 0.

    cgi.fix_pathinfo=0

    Para a configuração do caminho da sessão, remova o comentário da linha e altere o caminho para /var/lib/session conforme mostrado abaixo.

    session.save_path = "/var/lib/php/session"

    É isso. Salve as alterações e saia do vim.

    Agora crie um novo diretório para o caminho da sessão e altere as permissões de propriedade do diretório para o usuário e grupo nginx.

    mkdir -p /var/lib/php/session
    chown -R nginx:nginx /var/lib/php/session

    Em seguida, precisamos editar a configuração do php-fpm. Para isso, vá até o diretório /etc/php-fpm.d e edite o arquivo de configuração www.conf.

    cd /etc/php-fpm.d/
    vim www.conf

    Agora altere a linha de usuário e grupo para nginx.

    user = nginx
    group = nginx

    Em vez de usar a porta do sistema, o PHP-FPM será executado no arquivo de soquete unix.

    Altere a linha de escuta:

    listen = /var/run/php-fpm/php-fpm.sock

    Defina a permissão para o arquivo de soquete Unix e a propriedade do arquivo de soquete conforme mostrado abaixo.

    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660

    É isso. Salve as alterações e saia do editor.

    Agora inicie o serviço PHP-FPM e adicione-o para iniciar automaticamente no momento da inicialização.

    systemctl start php-fpm
    systemctl enable php-fpm

    Com isso, o PHP-FPM está instalado e rodando o arquivo socket.

    Você pode verificar isso usando o comando netstat:

    netstat -pl | grep php

    Certifique-se de ver o arquivo php-fpm.sock.

    Etapa 3 - Instalar e configurar o MariaDB

    Nesta etapa, vamos instalar o MariaDB, iniciá-lo e ativá-lo para iniciar sempre na inicialização do sistema. E, finalmente, criaremos um novo banco de dados e usuário para instalação do SuiteCRM.

    Instale o mariadb do repositório CentOS usando o seguinte comando yum.

    yum install -y mariadb mariadb-server

    Inicie o serviço MariaDB e habilite-o para iniciar o tempo de inicialização usando os comandos abaixo.

    systemctl start mariadb
    systemctl enable mariadb

    Portanto, o MariaDB agora está instalado e funcionando. Agora, precisamos configurar a senha root usando o comando mysql_secure_installation.

    mysql_secure_installation

    Você será questionado sobre a configuração, digite Y e pressione Enter.

    Set root password? [Y/n] Y
    New password:
    Re-enter new password:

    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y

    Portanto, a senha root do MariaDB foi configurada.

    Em seguida, precisamos criar um novo banco de dados e um novo usuário para instalação do SuiteCRM. Para isso, efetue login no shell do MySQL com o usuário root e sua senha.

    mysql -u root -p

    Crie um novo banco de dados denominado suitecrm_db e um novo usuário crmadmin com a senha hakase-labs123. Tudo isso pode ser feito usando as consultas mysql abaixo.

    CREATE DATABASE suitecrm_db;
    CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
    GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
    FLUSH PRIVILEGES;

    Portanto, a configuração do banco de dados para a instalação do SuiteCRM foi concluída.

    Etapa 4 - Baixe e configure o SuiteCRM

    Nesta etapa, faremos algumas tarefas para a instalação do SuiteCRM. Faremos o download do código-fonte do SuiteCRM, configuraremos o Firewalld, geraremos um novo SSL Letsencrypt e configuraremos o host virtual nginx para o SuiteCRM. Então vamos começar.

    Baixar SuiteCRM

    Se ainda não, instale o git em seu sistema usando o comando yum abaixo.

    yum -y install git

    Agora vá para o diretório /opt e baixe o código SuiteCRM usando o comando git conforme mostrado abaixo.

    cd /opt/
    git clone https://github.com/salesagility/SuiteCRM.git suitecrm

    Depois disso, crie um diretório de cache, altere as permissões para alguns arquivos e diretórios no diretório suitecrm e, em seguida, altere o proprietário de todo o código suitecrm para o usuário e grupo nginx.

    cd /opt/suitecrm
    mkdir -p /opt/suitecrm/cache
    chmod -R 775 cache custom modules themes data upload config_override.php
    chown nginx:nginx -R /opt/suitecrm

    Portanto, o código suiteCRM foi baixado no servidor no diretório /opt/suitecrm/.

    Configurar o Firewalld

    Se você não tiver o Firewalld em execução no seu servidor, instale-o usando o seguinte comando.

    yum -y install firewalld

    Inicie o serviço e habilite-o para ser executado no momento da inicialização.

    systemctl start firewalld
    systemctl enable firewalld

    Em seguida, precisamos abrir novas portas HTTP e HTTPS. É usado para acesso ao SuiteCRM. Execute os seguintes comandos firewall-cmd para isso.

    firewall-cmd --add-service=http --permanent
    firewall-cmd --add-service=https --permanent

    Agora recarregue as regras do firewalld usando o seguinte comando.

    firewall-cmd --reload

    Agora, novas portas HTTP e HTTPS foram adicionadas ao Firewalld. Se você quiser ver a configuração detalhada, execute o comando abaixo.

    firewall-cmd --list-all

    Gerar Novo SSL Letsencrypt

    Neste tutorial, usaremos SSL para acesso ao SuiteCRM. E usaremos certificados SSL gratuitos da letsencrypt para esse fim.

    Para gerar novos certificados SSL letsencrypt, precisamos primeiro instalar a ferramenta de comando letsencrypt certbot em nosso sistema. Está disponível no repositório do CentOS. Instale o certbot usando o seguinte comando yum.

    yum -y install certbot

    Quando a instalação do certbot estiver concluída, gere o arquivo de certificado SSL para o nome de domínio suiteCRM suitecrm.hakase-labs.co.

    Execute o comando abaixo para gerar arquivos de certificado SSL.

    certbot certonly --standalone -d suitecrm.hakase-labs.co

    Você será questionado sobre o endereço de e-mail para renovar a notificação - digite seu e-mail e pressione Enter para continuar.

    Para Letsencrypt TOS, digite A para concordar e pressione Enter novamente. E para a consulta de endereço de e-mail de compartilhamento, digite N e pressione Enter.

    Quando a geração do certificado estiver concluída, você obterá o resultado abaixo.

    Novos arquivos de certificado são gerados no diretório /etc/letsencrypt/live/domain.com.

    Configurar host virtual SuiteCRM Nginx

    Vá para o diretório de configuração do Nginx /etc/nginx e crie um novo arquivo suitecrm.conf no diretório conf.d usando o editor Vim.

    cd /etc/nginx/
    vim conf.d/suitecrm.conf

    Lá, cole o host virtual SuiteCRM Nginx abaixo.


    # Server Config - hakase-labs
    server {
        listen 80;
        server_name suitecrm.hakase-labs.co;

        # Automatically redirect to HTTPS
        return 301 https://$host$request_uri;
    }

    # Nginx SSL for SuiteCRM
    server {

        server_name suitecrm.hakase-labs.co;

        # Enable http2
        listen 443 http2 ssl;

        # SSL Config
        ssl_certificate /etc/letsencrypt/live/suitecrm.hakase-labs.co/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/suitecrm.hakase-labs.co/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

        client_max_body_size 50M;

        index index.php index.html index.htm;
        root /opt/suitecrm;

        location / {
            root /opt/suitecrm;
            index index.php index.html index.htm;
        }
     
        error_page 500 502 503 504 /50x.html;
        error_log /var/log/nginx/suitecrm.irsyadf.me.error.log;

        location = /50x.html {
            root /usr/share/nginx/html;
        }

        ## Images and static content is treated different
        location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml|svg|wgoff2)$ {
            access_log off;
            expires max;
            root /opt/suitecrm;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

    }

    É isso. Salve a alteração e saia do Vim.

    Agora teste a configuração do nginx e verifique se não há nenhum erro. Feito isso, reinicie o serviço.

    nginx -t
    systemctl restart nginx

    Com isso, a configuração do nginx para a instalação do SuiteCRM foi concluída.

    Etapa 5 - Instalador da Web do SuiteCRM

    Abra seu navegador da Web e visite o nome de domínio SuiteCRM: suitecrm.hakase-labs.co.

    Você será redirecionado para a conexão HTTPS install.php e obterá a página sobre a licença GNU AFFERO. Marque a caixa Aceito e clique em Avançar.

    Na página do ambiente do sistema, verifique se todos os resultados estão corretos.

    E clique em Avançar para continuar.

    Em seguida, vem a configuração do administrador e do banco de dados. Digite as informações do banco de dados, como dbname, dbuser e dbpassword. Para a configuração de administrador, digite seu nome de usuário, e-mail e senha.

    Role até a parte inferior e clique em Avançar para continuar instalando o SuiteCRM.

    Aguarde um momento, quando a instalação estiver concluída, e você será redirecionado para a página de login conforme mostrado abaixo.

    Nesta página, digite o usuário administrador e a senha e pressione o botão Login.

    E você obterá o painel do SuiteCRM conforme mostrado abaixo.

    Então o SuiteCRM foi instalado.

    Passo 6 - Configuração final

    Nesta última etapa, precisamos adicionar configuração ao cronjob.

    Basicamente, precisamos criar um novo cron como usuário e grupo nginx.

    sudo crontab -e -u nginx

    E cole a seguinte configuração.

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

    Salvar e sair.

    É isso. A instalação do SuiteCRM com servidor web Nginx no CentOS 7 foi concluída.

    Referência

    • https://suitecrm.com/wiki/index.php/Installation

Artigos relacionados: