One place for hosting & domains

      Como instalar uma pilha ERPNext no Ubuntu 18.04


      O autor selecionou a Software in the Public Interest para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O ERPNext é uma suíte de Planejamento de Recursos Empresariais (ERP) que aproveita o poder e a flexibilidade das tecnologias de código aberto. Ele se destaca no gerenciamento de processos de negócio fundamentais, como finanças, vendas, recursos humanos, fabricação, compras, serviços, necessidades de assistência técnica e muito mais. Entre os benefícios da implementação de um sistema como o ERPNext estão:

      • Melhor produtividade, automatizando processos de negócio repetitivos
      • Melhoria da eficiência de TI através do compartilhamento de um banco de dados para todos os departamentos dentro da empresa
      • Melhor tomada de decisão graças a uma visão integral de como as unidades de negócios se relacionam entre si

      O ERPNext é baseado no Frappe, um framework Web full-stack de aplicativos escrito em Python que aproveita ao máximo o ambiente de tempo de execução Node/JavaScript e usa o MariaDB como seu banco de dados de back-end. Uma das muitas vantagens dos aplicativos baseados no Frappe, como o ERPNext, é o utilitário de linha de comando bench. O CLI do bench economiza tempo dos administradores automatizando tarefas como instalar, atualizar, configurar e gerenciar vários sites do Frappe/ERPNext.

      Neste tutorial, você irá instalar e configurar uma pilha ERPNext em um servidor executando o Ubuntu 18.04. Isso permitirá que você configure sua pilha para vários ambientes de desenvolvimento ou produção dependendo das suas necessidades. Além disso, isso irá prepará-lo para construir uma arquitetura mais complexa e tolerante a falhas.

      Pré-requisitos

      Nota: ao escolher as especificações do seu servidor, tenha em mente que os sistemas ERP consomem muitos recursos. Este guia exige um servidor com 4 GB de RAM, que será suficiente para casos de uso básicos. No entanto, os requisitos específicos de hardware podem variar dependendo do número de usuários e do tamanho do seu negócio.

      • Um nome de domínio totalmente registrado com um registro A apontado para seu servidor. Se você estiver usando um Droplet da DigitalOcean, então você pode seguir este guia para configurar corretamente seu DNS. Este tutorial utilizará o your_domain durante todo o processo.

      Passo 1 — Configurando o firewall

      Embora configurar um firewall para o desenvolvimento seja opcional, para a produção, isso é uma prática de segurança obrigatória.

      Você precisará abrir as seguintes portas em seu servidor ERPNext:

      • 80/tcp e 443/tcp para o HTTP e HTTPS respectivamente
      • 3306/tcp para a conexão do MariaDB (recomendado apenas se precisar de acesso remoto ao banco de dados)
      • 143/tcp e 25/tcp para o IMAP e STMP respectivamente
      • 22/tcp para o SSH (se você ainda não tiver ativado o OpenSSH)
      • 8000/tcp para testes de desenvolvimento antes de implantar seu site

      Para abrir várias portas ao mesmo tempo, utilize o seguinte comando:

      • sudo ufw allow 22,25,143,80,443,3306,8000/tcp

      De maneira alternativa, você pode permitir conexões vindas de endereços IP específicos em portas específicas usando este comando:

      • sudo ufw allow from server_IP to any port port_number

      Depois de abrir todas as portas necessárias,o ative o firewall:

      Depois de ativar o firewall, confirme o status de suas portas abertas:

      Para mais informações sobre a configuração do firewall, leia nosso guia How To Set Up a Firewall with UFW on Ubuntu 18.04.

      Configurar um firewall adequado é o primeiro dos dois passos preliminares. Agora, você irá configurar o mapeamento de teclado e a codificação de caracteres no seu servidor.

      Passo 2 — Configurando localidades

      É altamente recomendado que você configure o mapeamento de teclado para o console, bem como a linguagem e a codificação de caracteres no seu host. Isso é necessário para evitar possíveis problemas durante o processo de instalação do ERPNext 12. Observe que essa configuração não tem nada a ver com a linguagem UI na sua plataforma ERPNext em si, mas com a configuração de localidades do sistema.

      Primeiro, atualize seu servidor:

      Agora, configure o keymap, a linguagem e a codificação de caracteres:

      • sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8

      O utilitário localectl é usado pelo Ubuntu 18.04 e outras distribuições Linux para controlar e alterar as configurações de localidade e de layout de teclado em todo o sistema antes do usuário fazer login, que é exatamente o que o ERPNext 12 necessita.

      Você também precisará adicionar as seguintes linhas ao seu arquivo /etc/environment. Use o nano ou seu editor de texto preferido para abrir o arquivo:

      • sudo nano /etc/environment

      Agora, adicione o conteúdo a seguir:

      /etc/environment

      LC_ALL=en_US.UTF-8
      LC_CTYPE=en_US.UTF-8
      LANG=en_US.UTF-8
      

      Salve e feche o arquivo.

      Reinicialize seu servidor para aplicar todas as alterações:

      Dê ao seu servidor alguns minutos para reinicializar e então fazer um ssh nele. Agora, você está pronto para instalar seu banco de dados.

      Passo 3 — Instalando o MariaDB 10.4

      Agora, você irá adicionar o MariaDB à sua pilha de servidor. O ERPNext 12 requer o MariaDB 10.2+, mas a versão incluída no repositório oficial do Ubuntu 18.04 é a 10.1, o que significa que você precisará instalar uma versão superior. Para os propósitos deste guia, você irá usar a versão mais recente do MariaDB, que no momento da escrita deste artigo é a versão 10.4.

      Para instalar o MariaDB 10.4 no Ubuntu 18.04, você precisará adicionar a chave de assinatura e o repositório apropriados. Você pode encontrar essas informações no assistente do repositório da Fundação MariaDB. Visite esta URL em seu navegador Web. Agora, sob 1. Choose a Distro, clique em Ubuntu. Uma segunda coluna intitulada 2. Choose a Release irá aparecer. Abaixo deste título, clique em 18.04 LTS “bionic”. Uma terceira coluna intitulada 3.Choose a Version então aparecerá. Abaixo deste clique em 10.4 stable. Uma terceira coluna intitulada 4.Choose a Mirror então aparecerá. Escolha um espelho baseado em sua localização e então o MariaDB irá preencher os comandos adequados para sua instalação personalizada.

      MariaDB repo wizard

      Execute os três comandos preenchidos, que adicionarão corretamente o repositório e a chave do MariaDB. Seus próprios comandos serão parecidos com este:

      • sudo apt-get install software-properties-common && sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' && sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.4/ubuntu bionic main'

      Depois de terminar de adicionar o repositório, instale o MariaDB:

      • sudo apt install mariadb-server

      Depois de instalar o mariadb-server, instale os seguintes pacotes:

      • sudo apt install libmysqlclient-dev python3-mysqldb

      O ERPNext 12 é uma aplicação Python e, portanto, ele requer a biblioteca python3-mysqldb para o gerenciamento do banco de dados. Quanto ao libmysqlclient-dev, mariadb-client, e libmariadbclient18: esses pacotes permitem aos usuários se comunicar com o serviço MariaDB. O ntpdate e o libdate-manip-perl são usados pelo ERPNext para a sincronização de tempo do servidor.

      Em seguida, adicione uma camada básica de segurança ao servidor MariaDB executando o script mysql_secure_installation:

      • sudo mysql_secure_installation

      O script mysql_secure_installation solicitará que você responda a várias perguntas:

      • O primeiro prompt irá perguntar-lhe sobre a senha do root. Como ainda não existe nenhuma senha configurada, pressione ENTER.
      • Em seguida, você terá que decidir usar a autenticação do Unix ou não. Responda Y para aceitar este método de autenticação.
      • Quando perguntado sobre a alteração da senha do root do MariaDB, responda N. Usar a senha padrão juntamente com a autenticação do Unix é a configuração recomendada para sistemas baseados no Ubuntu, pois a conta root está intimamente relacionada com tarefas de manutenção automatizadas do sistema.
      • As perguntas restantes têm a ver com remover o usuário anônimo do banco de dados, restringir a conta root para fazer login remotamente no localhost, remover o banco de dados de teste e recarregar as tabelas de privilégio. É seguro responder Y a todas essas perguntas.

      Depois de completar o script mysql_secure_installation, o MariaDB será iniciado usando sua configuração padrão. A instalação padrão do ERPNext usa o usuário root do MariaDB’s para todas as operações de banco de dados. Embora essa abordagem possa ser conveniente em configurações com um único servidor, ela não é considerada uma boa prática de segurança. Dessa forma,na próxima seção, você irá aprender como evitar este problema criando um novo usuário com privilégios especiais.

      Como criar um usuário super administrador do MariaDB

      O ERPNext espera usar o usuário root do MariaDB para o gerenciamento de conexões de banco de dados, mas isso nem sempre é ideal. Para superar essa limitação e deixar um usuário não-root gerenciar o MariaDB, você terá que criar manualmente um banco de dados com o nome do usuário. Depois disso, será capaz de atribuir privilégios especiais ao novo usuário para que ele conduza as operações de banco de dados do ERPNext.

      Abra o prompt do MariaDB:

      Agora, crie um novo banco de dados com o nome do usuário que você deseja atribuir para as conexões do MariaDB. Este tutorial irá usar sammy, mas você está livre para escolher seu próprio nome:

      Confirme se o banco de dados foi criado usando esta declaração SQL:

      Você verá um resultado parecido com este:

      Output

      +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sammy | +--------------------+

      Agora, crie o usuário sammy do MariaDB com privilégios semelhantes ao root e então dê a ele uma senha forte da sua escolha. Mantenha a senha em um lugar seguro; você precisará dela mais tarde:

      • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

      Agora, confirme tanto a criação do usuário quanto dos privilégios do novo usuário:

      • SELECT host, user, Super_priv FROM mysql.user;

      Você verá uma saída como esta:

      Output

      +-----------+-------+------------+ | Host | User | Super_priv | +-----------+-------+------------+ | localhost | root | Y | | localhost | mysql | Y | | % | sammy | Y | +-----------+-------+------------+ 3 rows in set (0.001 sec)

      Em seguida, libere os privilégios para aplicar todas as alterações:

      Depois de terminar, saia da sessão:

      Agora que você criou um usuário do banco de dados, precisa apenas ajustar o MariaDB para garantir uma operação adequada do ERPNext 12. Felizmente, a equipe do ERPNext fornece um excelente modelo de configuração que será usado como um ponto de partida para sua implementação. Na próxima seção, você irá aprender como configurar corretamente o banco de dados do MariaDB usando esse modelo.

      Passo 4 — Configurando o MariaDB para o ERPNext

      Com o MariaDB instalado e protegido, é hora de ajustá-lo para as conexões do ERPNext.

      Primeiro, interrompa o mariadb.service:

      • sudo systemctl stop mariadb

      Agora, use o nano ou seu editor de texto favorito para criar um arquivo de configuração do MariaDB chamado settings.cnf:

      • sudo nano /etc/mysql/conf.d/settings.cnf

      Agora, adicione o modelo de configuração do ERPNext:

      /etc/mysql/conf.d/settings.cnf

      [mysqld]
      
      # GENERAL #
      user                           = mysql
      default-storage-engine         = InnoDB
      socket                         = /var/lib/mysql/mysql.sock
      pid-file                       = /var/lib/mysql/mysql.pid
      
      # MyISAM #
      key-buffer-size                = 32M
      myisam-recover                 = FORCE,BACKUP
      
      # SAFETY #
      max-allowed-packet             = 256M
      max-connect-errors             = 1000000
      innodb                         = FORCE
      
      # DATA STORAGE #
      datadir                        = /var/lib/mysql/
      
      # BINARY LOGGING #
      log-bin                        = /var/lib/mysql/mysql-bin
      expire-logs-days               = 14
      sync-binlog                    = 1
      
      # REPLICATION #
      server-id                      = 1
      
      # CACHES AND LIMITS #
      tmp-table-size                 = 32M
      max-heap-table-size            = 32M
      query-cache-type               = 0
      query-cache-size               = 0
      max-connections                = 500
      thread-cache-size              = 50
      open-files-limit               = 65535
      table-definition-cache         = 4096
      table-open-cache               = 10240
      
      # INNODB #
      innodb-flush-method            = O_DIRECT
      innodb-log-files-in-group      = 2
      innodb-log-file-size           = 512M
      innodb-flush-log-at-trx-commit = 1
      innodb-file-per-table          = 1
      innodb-buffer-pool-size        = 5462M
      innodb-file-format             = barracuda
      innodb-large-prefix            = 1
      collation-server               = utf8mb4_unicode_ci
      character-set-server           = utf8mb4
      character-set-client-handshake = FALSE
      max_allowed_packet             = 256M
      
      # LOGGING #
      log-error                      = /var/lib/mysql/mysql-error.log
      log-queries-not-using-indexes  = 0
      slow-query-log                 = 1
      slow-query-log-file            = /var/lib/mysql/mysql-slow.log
      
      [mysql]
      default-character-set = utf8mb4
      
      [mysqldump]
      max_allowed_packet=256M
      
      !includedir /etc/mysql/mariadb.conf.d/
      

      Salve e feche o arquivo. Para obter informações mais detalhadas sobre essas configurações, revise este arquivo modelo no repositório Github do ERPNext. Ele é um ponto de partida útil para explorar essas opções.

      Em seguida, crie outro arquivo chamado erpnext.cnf:

      • sudo nano /etc/mysql/mariadb.conf.d/erpnext.cnf

      Adicione o conteúdo a seguir ao arquivo:

      /etc/mysql/mariadb.conf.d/erpnext.cnf

      [mysqld]
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      bind-address    = 0.0.0.0
      

      O primeiro arquivo, /etc/mysql/conf.d/settings.cnf complementa e também sobrepõe alguns valores incluídos na configuração padrão do MariaDB localizada em /etc/mysql/my.cnf. Este arquivo oferece um modelo curado que melhora muito o desempenho de banco de dados para o ERPNext. No entanto, tenha em mente que, embora esse modelo seja um ótimo ponto de partida, nada impede que você melhore o desempenho do MariaDB ainda mais ajustando esses parâmetros para atender às suas necessidades.

      O segundo arquivo, o /etc/mysql/mariadb.conf.d/erpnext.cnf, também sobrepõe alguns valores introduzindo informações específicas sobre a sua conexão de banco de dados.

      Testando a conexão do MariaDB

      Como o ERPNext depende da conexão de banco de dados para quase todas as suas operações internas, é uma boa ideia testar a conexão antes de continuar.

      Inicie o mariadb.service:

      • sudo systemctl start mariadb

      Para testar a conexão, use o seguinte comando. Lembre-se de substituir sammy e mariadb_password por suas próprias credenciais:

      • mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

      Você verá um resultado mostrando o conteúdo básico de ajuda do MariaDB, bem como diversos parâmetros. Isso significa que sua conexão foi bem sucedida:

      Output

      mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Usage: mysql [OPTIONS] [database] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf ... --ssl-verify-server-cert Verify server's "Common Name" in its cert against hostname used when connecting. This option is disabled by default. -t, --table Output in table format. --tee=name Append everything into outfile. See interactive help (h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default. -u, --user=name User for login if not current user. -U, --safe-updates Only allow UPDATE and DELETE that uses keys. -U, --i-am-a-dummy Synonym for option --safe-updates, -U. -v, --verbose Write more. (-v -v -v gives the table output format). ... max-join-size 1000000 secure-auth FALSE show-warnings FALSE plugin-dir (No default value) default-auth (No default value) binary-mode FALSE connect-expired-password FALSE

      Se precisar fazer qualquer ajuste nas configurações do MariaDB, ou corrigir qualquer erro, lembre-se de recarregar o serviço usando o seguinte comando:

      • sudo systemctl restart mariadb

      Depois de terminar, ative o MariaDB:

      • sudo systemctl enable mariadb

      Agora que você testou a conexão do banco de dados, continue com a instalação do seu aplicativo ERPNext.

      Passo 5 — Configurando o ERPNext 12

      Agora que o banco de dados está pronto, continue configurando seu aplicativo Web ERPNext. Nesta seção, você irá aprender como instalar e configurar todos os componentes necessários pelo ERPNext 12 e então instalar o próprio aplicativo.

      Comece preparando o servidor com todos os pacotes de sistema exigidos pelo ERPNext 12. Instale as dependências do sistema usando o seguinte comando:

      • sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential mariadb-client python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl1.0-dev python3-mysqldb libdate-manip-perl logwatch

      A variável DEBIAN_FRONTEND=noninteractive foi passada para o comando de instalação para evitar os prompts do Postfix. Para informações detalhadas sobre a configuração do Postfix, leia nosso guia How To Install and Configure Postfix on Ubuntu 18.04.

      Em seguida, atualize o pip3 e então, instale as versões mais recentes de três módulos Python adicionais exigidos pelo ERPNext:

      • sudo -H python3 -m pip install --upgrade setuptools cryptography psutil

      Agora que você instalou todas as dependências globais necessárias, irá instalar todos os serviços e bibliotecas exigidos pelo ERPNext 12.

      Configurando o Node.js e o Yarn

      O ERPNext 12 pode trabalhar com a versão 8+ do ambiente de servidor Node.js. Na verdade, no momento da escrita deste artigo, o script oficial easy_install do ERPNext usa o Node 8. No entanto, do ponto de vista da segurança, é aconselhável instalar uma versão mais recente porque o Node 8 atingiu seu End Of Life (EOL) em 2020 e, portanto, não receberá mais nenhum patch de segurança. Para os fins deste guia, o Node.js versão 12 LTS será instalado juntamente com os gerenciadores de pacotes correspondentes, npm e o yarn. Note que o framework Frappe usa o yarn para instalar dependências. Se você decidir usar um método alternativo de instalação, certifique-se de que você tenha a versão 1.12+ do yarn em execução no seu sistema.

      Adicione o repositório NodeSource ao seu sistema:

      • curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

      Agora, você pode inspecionar o conteúdo do script baixado:

      • sudo nano nodesurce_setup.sh

      Quando estiver satisfeito, execute o script:

      • sudo bash nodesource_setup.sh

      Esse script irá atualizar automaticamente a lista apt. Agora, instale o nodejs em seu servidor:

      Em seguida, instale o yarn globalmente usando o pacote npm incluído:

      Agora que você instalou o Node, siga adiante para configurar o wkhtmltopdf para sua plataforma.

      O ERPNext usa a ferramenta wkhtmltopdf de código aberto para converter conteúdo HTML em PDF usando o mecanismo de renderização Qt WebKit. Esse recurso é usado principalmente para imprimir faturas, cotações e outros relatórios. No caso do ERPNext 12, uma versão específica do wkhtmltopdf é necessária, a 0.12.5 com o Qt implementado.

      Para instalar o wkhtmltopdf, comece indo para um diretório adequado para baixar o pacote. Neste caso, o /tmp:

      Baixe a versão e o pacote apropriados do wkhtmltopdf para o Ubuntu 18.04 da página do projeto:

      • wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

      Agora, instale o pacote usando a ferramenta dpkg:

      • sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

      Em seguida, copie todos os executáveis relevantes para seu diretório /usr/bin/:

      • sudo cp /usr/local/bin/wkhtmlto* /usr/bin/

      Assim que os arquivos estiverem no lugar, mude suas permissões para torná-los executáveis:

      • sudo chmod a+x /usr/bin/wk*

      Agora que o wkhtmltopdf está instalado corretamente, adicionaremos o Redis à pilha do nosso banco de dados.

      Instalando o Redis

      O ERPNext 12 usa o Redis para melhorar o desempenho do MariaDB. Especificamente, ele ajuda com o cache.

      Primeiro, instale o Redis a partir do repositório oficial do Ubuntu 18.04:

      • sudo apt install redis-server

      Em seguida, ative o Redis na inicialização:

      • sudo systemctl enable redis-server

      Agora que você adicionou o Redis à sua pilha, vamos dedicar um momento para resumir o que você fez até agora. Até este ponto, você instalou todos os componentes principais necessários para o ERPNext 12, que incluem:

      • Um backend de banco de dados MariaDB
      • O ambiente de servidor JavaScript Node.js
      • O gerenciador de pacotes Yarn
      • Um cache banco de dados Redis
      • O gerador de documentos PDF wkhtmltopdf

      Se você estiver instalando o sistema ERP para o desenvolvimento ou para a produção, agora está pronto para o próximo passo, que é a instalação do framework full-stack Frappe e o aplicativo Web ERPNext 12 em si.

      Passo 6 — Instalando o Bench CLI do Frappe

      Agora que você instalou todos os requisitos de pilha do ERPNext, libere a flexibilidade do utilitário de linha de comando bench do Frappe. O bench CLI foi projetado com o propósito de ajudar os usuários no processo de instalar, configurar e gerenciar aplicativos como o ERPNext que são baseados no Frappe Framework. Nas próximas seções, você irá instalar o CLI bench e então usá-lo para completar o processo de configuração do ERPNext 12.

      Certifique-se de que o usuário do Frappe (neste caso sammy) tenha os direitos adequados em seu diretório home:

      • sudo chown sammy -R /home/sammy

      Agora, clone o repositório frappe/bench para seu diretório home. Lembre-se de substituir sammy pelo nome de usuário do seu sistema:

      • git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

      Instale o bench CLI:

      • sudo pip3 install -e /home/sammy/.bench

      Este guia assume que você esteja instalando o ERPNext 12 para cenários de teste/produção e, consequentemente,que você esteja usando a ramificação master. Mas se a sua intenção for desenvolver aplicativos ou módulos do ERPNext personalizados, a ramificação develop pode ser uma opção mais adequada. Para ambos os casos, você está agora preparado para instalar o Frappe Framework. Esse será o passo final antes de instalar o próprio ERPNext.

      Configurando o ambiente do Frappe Framework

      Nesta seção, você irá criar um ambiente do Frappe usando o bench CLI.

      Durante a instalação do Frappe, você pode exceder o limite de inspeção de arquivos do Ubuntu, que por padrão é definido como 8192. Para evitar este problema, defina um limite superior usando o seguinte comando:

      • echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

      Em seguida, inicialize o Frappe Framework 12. Substitua Sammy pelo nome de usuário do seu sistema:

      • bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

      Durante a execução, um erro sobre seu caminho pode aparecer, juntamente com vários avisos. Deixe o processo continuar até o fim. Depois que ele for finalizado, você verá um resultado semelhante ao seguinte, indicando que seu ambiente foi criado com sucesso:

      Output

      ... Done in 82.23s. INFO:bench.utils:setting up backups no crontab for sammy SUCCESS: Bench /home/sammy/frappe-bench initialized

      Nota: o processo bench init pode ser interrompido se um erro spawn ENOMEM for encontrado. Esse erro é causado quando seu sistema fica sem memória. Você deve corrigir o problema antes de continuar, seja instalando mais memória física ou alocando um espaço SWAP.

      Vamos dar uma olhada no comando usado para criar o ambiente:

      • /home/sammy/frappe-bench é o caminho onde o Frappe Framework, os sites e aplicativos associados serão instalados. Um novo diretório, chamado frappe-bench neste exemplo, será criado para acomodar todos os arquivos necessários.
      • --frappe-path aponta para o repositório do Frappe, que neste caso é o repositório oficial do Github.
      • --frappe-branch é a versão do Frappe a ser instalada. Como você quer instalar o ERPNext 12, a versão escolhida é o Frappe 12.
      • --python é a versão do Python que será usada. O ERPNext 12 requer o Python 3.6+. No entanto, as versões anteriores ainda usam o Python 2.7.

      Para obter mais informações sobre comandos bench CLI, consulte o Manual dos comandos bench.

      A flexibilidade oferecida pelo Frappe Framework vai muito além do uso de ambientes isolados. Você também pode criar sites diferentes e instalar aplicativos neles.

      Passo 7 — Instalando o aplicativo Web ERPNext 12

      Nesta seção, você irá construir um site baseado no Frappe, e então instalar o aplicativo ERPNext 12 nele.

      Vá para o diretório onde o Frappe foi inicializado.

      • cd /home/sammy/frappe-bench

      Agora, faça o download do ERPNext 12 a partir do seu repositório usando o bench CLI:

      • bench get-app erpnext https://github.com/frappe/erpnext --branch version-12

      Em seguida, crie o novo site, substituindo your_domain pelo domínio que você associou ao IP deste servidor:

      • bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

      Vamos reservar um momento para revisar as opções usadas no comando acima:

      • bench new-site cria um novo site baseado no Frappe Framework.
      • your_domain é o nome para o novo site. Certifique-se de que o DNS do seu domínio tenha um registro A apontando para o IP do seu servidor.
      • erpnext_admin_password é a senha desejada para o usuário Administrator do ERPNext. Mantenha essa senha em um lugar seguro — você precisará dela em breve.
      • mariadb_password é a senha que você criou no início do guia para o usuário sammy do MariaDB.

      Depois disso, instale o aplicativo ERPNext no site:

      • bench --site your_domain install-app erpnext

      Assim que a instalação for concluída, você terá uma aplicação ERPNext 12 funcionando. Agora, vamos testá-lo usando um comando bench:

      O comando acima irá iniciar um console de monitoramento em tempo real mostrando várias mensagens sobre o servidor Web e outros serviços. Abra um navegador Web e vá até localhost:8000 (para instalações locais) ou your_domain:8000 (se você estiver usando um servidor remoto). Você verá a tela de login do ERPNext (abordaremos o login e a configuração em um passo posterior, assim que fizermos nosso site ficar pronto para a produção).

      Depois de visitar sua implantação teste, retorne ao seu terminal e pressione CTRL+C. Isso irá parar o ERPNext e sair do console de monitoramento.

      Se seu objetivo principal for criar módulos ou modificar o ERPNext 12, então pode parar aqui. Não há mais componentes necessários para fins de desenvolvimento. No entanto, se o que você precisa é um sistema pronto para a produção que não requer uma inicialização manual, então será necessário instalar e configurar alguns componentes adicionais. Esse é o seu próximo passo.

      Passo 8 — Configurando o ERPNext 12 para a produção

      Embora a aplicação ERPNext 12 esteja pronta, o sistema como um todo ainda não está completamente preparado para a produção. Para garantir a confiabilidade e a segurança do ERPNext, será necessário habilitar alguns serviços adicionais:

      • O Fail2ban fornece uma camada extra de proteção contra tentativas de força bruta de usuários e bots maliciosos.
      • O Nginx será usado principalmente como um proxy Web, redirecionando todo o tráfego da porta 8000 para a porta 80 (HTTP) ou porta 443 (HTTPS)
      • Supervisor este serviço garante que os processos chave do ERPNext estejam em funcionamento constante, reiniciando-os conforme necessário.

      Até este ponto, você instalou e configurou o ERPNext 12 manualmente, o que lhe permitiu personalizar o processo para funcionar em qualquer caso de uso particular. No entanto, para o resto da configuração de produção, aproveite a conveniência do bench CLI e deixe-o automatizar a instalação e configuração desses serviços restantes.

      Certifique-se de estar no diretório de trabalho do Frappe:

      • cd /home/sammy/frappe-bench

      Agora, use o seguinte comando para terminar a configuração do ERPNext 12 para produção:

      • sudo bench setup production sammy --yes

      O comando acima irá instalar e configurar o Nginx, Supervisor e Fail2Ban e definir sammy como proprietário do ambiente de produção.

      Os arquivos de configuração criados pelo comando bench são:

      • Dois arquivos de configuração do Nginx localizados em /etc/nginx/nginx.conf e /etc/nginx/conf.d/frappe-bench.conf
      • Uma prisão de proxy do Fail2Ban localizada em /etc/fail2ban/jail.d/nginx-proxy.conf e um filtro localizado em /etc/fail2ban/filter.d/nginx-proxy.conf

      Essas configurações padrão serão suficientes para este tutorial, mas é possível explorar e ajustar esses arquivos para atender às suas necessidades. Pare todos os serviços executando:

      • sudo supervisorctl stop all

      Assim que tudo estiver pronto, reinicie seus serviços:

      • sudo supervisorctl start all

      Agora, você está pronto para testar sua instalação.

      Testando sua instalação do ERPNext 12

      Em primeiro lugar, verifique se os principais serviços de produção estão em execução usando o seguinte comando systemctl e então fazendo pipe dele para o grep:

      • systemctl list-unit-files | grep 'fail2ban|nginx|supervisor'

      Você verá uma saída como esta:

      Output

      fail2ban.service enabled nginx.service enabled supervisor.service enabled

      Depois de confirmar que tudo está funcionando como esperado, você pode testar o ERPNext 12 ao vivo em seu servidor. Abra seu navegador favorito e navegue até o domínio onde você está hospedando sua aplicação ERPNext 12.

      Depois de alguns segundos, a tela de login do ERPNext 12 deve aparecer. Use Administrator para o nome de usuário e erpnext_admin_password que você criou anteriormente para a senha.

      Tela de login do ERPNext

      Na próxima tela, você verá um menu suspenso onde pode selecionar o idioma da interface do usuário para o aplicativo:

      Seleção de idiomas

      Após a seleção de idiomas, o ERPNext irá questioná-lo sobre seu país, fuso horário e moeda:

      Selecione sua região

      Depois de completar as informações sobre a sua região, você será capaz de criar o primeiro usuário do ERPNext. As informações que você fornecer serão usadas como as credenciais de login do usuário.

      Primeiro usuário do ERPNext

      Na próxima tela, você será questionado sobre o que o ERPNext chama de Domains (domínios). Se não tiver certeza sobre qual é o seu domínio, selecione Distribution e clique no botão Next.

      Selecionar seus domínios

      Em seguida, será necessário fornecer um nome e abreviação da empresa.

      Nome da empresa

      Na última tela, o ERPNext irá perguntar o que sua empresa faz, o nome do seu banco, o tipo de gráficos de contas e o período do ano fiscal. Você será capaz de inserir bancos adicionais mais tarde. Por enquanto, preencha todos os campos como quiser e clique no botão Complete Setup.

      Informações financeiras

      Em seguida, você verá uma barra de progresso.

      Configurando o ERPNext

      Assim que o processo de configuração for concluído, o painel principal do ERPNext 12 será exibido.

      Painel do ERPNext 12

      Agora, você terminou de instalar e configurar totalmente um aplicativo ERPNext 12.

      Conclusão

      Agora que você instalou corretamente seu aplicativo ERPNext 12, pode ser desejável iniciar a implementação do sistema para as necessidades do seu negócio. Um bom ponto de partida é clicando no botão Getting Started no painel do ERPNext. O ERPNext irá então ajudá-lo a configurar a plataforma para todas as suas necessidades de negócios e e-commerce.

      Getting Started

      Pode ser que você também queira aumentar a velocidade do ERPNext. Se for esse o caso, então você pode ler sobre Ajuste de Desempenho do ERPNext, que irá guiá-lo pelas práticas recomendadas e em como depurar problemas relacionados ao desempenho.



      Source link

      Como instalar o Elasticsearch, Logstash e Kibana (Pilha Elastic) no Ubuntu 20.04


      Introdução

      A Pilha Elastic — anteriormente conhecida como ELK Stack — é uma coleção de softwares de código aberto produzida pela Elastic que permite pesquisar, analisar e visualizar logs gerados a partir de qualquer fonte em qualquer formato. Esta é uma prática conhecida como centralização de logs. A centralização de logs pode ser útil ao tentar identificar problemas com seus servidores ou aplicações, uma vez que ela permite que você pesquise todos os seus logs em um único lugar. Também é útil porque ele lhe permite identificar problemas que abrangem vários servidores correlacionando seus logs durante um período de tempo específico.

      A pilha Elastic tem quatro componentes principais:

      • Elasticsearch: um mecanismo de busca RESTful distribuído que armazena todos os dados coletados.
      • Logstash: o componente de processamento de dados da pilha Elastic que envia dados recebidos para o Elasticsearch.
      • Kibana: uma interface Web para pesquisar e visualizar logs.
      • Beats: transportadores de dados leves e de propósito único que podem enviar dados de centenas ou milhares de máquinas para o Logstash ou para o Elasticsearch.

      Neste tutorial, você irá instalar a pilha Elastic em um servidor Ubuntu 20.04. Você irá aprender como instalar todos os componentes da pilha Elastic — incluindo o Filebeat, um Beat usado para encaminhar e centralizar logs e arquivos — e configurá-los para coletar e visualizar logs de sistema. Além disso, como o Kibana normalmente está disponível apenas no localhost, usaremos o Nginx para fazer proxy dele para que ele seja acessível via um navegador Web. Vamos instalar todos esses componentes em um único servidor, que vamos nos referir como nosso servidor da pilha Elastic.

      Nota: ao instalar a pilha Elastic, você deve usar a mesma versão em toda a pilha. Neste tutorial, vamos instalar as versões mais recentes de toda a pilha que são, no momento da escrita deste artigo, o Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 e Filebeat 7.7.1.

      Pré-requisitos

      Para concluir este tutorial, você precisará do seguinte:

      • Um servidor Ubuntu 20.04, com 4GB de RAM e 2 CPUs configuradas com um usuário sudo não root. Você pode conseguir isso seguindo o guia Initial Server Setup with Ubuntu 20.04. Para este tutorial, vamos trabalhar com a quantidade mínima necessária de CPU e RAM para executar o Elasticsearch. Observe que a quantidade de CPU, RAM e armazenamento que seu servidor Elasticsearch exigirá depende do volume de logs que você espera.

      • OpenJDK 11 instalado. Veja a seção Installing the Default JRE/JDK How To Install Java with Apt on Ubuntu 20.04 para configurar isto.

      • Nginx instalado em seu servidor, que vamos configurar mais tarde neste guia como um proxy reverso para o Kibana. Siga nosso guia How to Install Nginx on Ubuntu 20.04 para configurar isso.

      Além disso, como a pilha Elastic é usada para acessar informações valiosas sobre seu servidor, que você não deseja que usuários não autorizados acessem, é importante que você mantenha seu servidor seguro instalando um certificado TLS/SSL. Isso é opcional, mas altamente recomendado.

      No entanto, como você acabará por fazer alterações em seu bloco de servidor Nginx ao longo deste guia, provavelmente faria mais sentido para você completar o guia Let’s Encrypt on Ubuntu 20.04 no final do segundo passo deste tutorial. Com isso em mente, se você planeja configurar o Let’s Encrypt em seu servidor, você precisará ter o seguinte em mãos antes de fazer isso:

      Passo 1 — Instalando e Configurando o Elasticsearch

      Os componentes do Elasticsearch não estão disponíveis nos repositórios de pacotes padrão do Ubuntu. No entanto, eles podem ser instalados com o APT após adicionar a lista de origem de pacotes do Elastic.

      Todos os pacotes são assinados com a chave de assinatura do Elasticsearch para proteger seu sistema de spoofing de pacotes. Os pacotes autenticados usando a chave serão considerados confiáveis pelo seu gerenciador de pacotes. Neste passo, você importará a chave GPG pública do Elasticsearch e adicionará a lista de origem de pacotes do Elastic para instalar o Elasticsearch.

      Para começar utilize o cURL, a ferramenta de linha de comando para transferir dados com URLs, para importar a chave GPG pública do Elasticsearch para o APT. Observe que estamos usando os argumentos -fsSL para silenciar todo o progresso e possíveis erros (exceto para uma falha de servidor) e permitir que o cURL faça uma solicitação em um novo local se for redirecionado. Faça o pipe da saída do comando cURL no programa apt-key, que adiciona a chave pública GPG para o APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Em seguida, adicione a lista de origem do Elastic ao diretório sources.list.d, onde o APT irá procurar por novas origens:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Em seguida, atualize suas listas de pacotes para que o APT leia a nova origem do Elastic:

      Em seguida, instale o Elasticsearch com este comando:

      • sudo apt install elasticsearch

      Agora, o Elasticsearch está instalado e pronto para ser configurado. Use seu editor de texto preferido para editar o arquivo de configuração principal do Elasticsearch, elasticsearch.yml. Aqui, usaremos o nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Nota: o arquivo de configuração do Elasticsearch está no formato YAML, o que significa que precisamos manter o formato de indentação. Certifique-se de não adicionar nenhum espaço extra ao editar este arquivo.

      O arquivo elasticsearch.yml fornece opções de configuração para seu cluster, node, paths, memória, rede, descoberta e gateway. A maioria destas opções estão pré-configuradas no arquivo, mas você pode alterá-las de acordo com suas necessidades. Para os fins de nossa demonstração de uma configuração de um único servidor, vamos ajustar apenas as configurações para o host de rede.

      O Elasticsearch escuta o tráfego de todos os lugares na porta 9200. Você vai querer restringir o acesso externo à sua instância Elasticsearch para evitar que agentes externos leiam seus dados ou encerrem seu cluster Elasticsearch por meio da sua API REST. Para restringir o acesso e, portanto, aumentar a segurança, encontre a linha que especifica o network.host, descomente-a e substitua seu valor por localhost dessa forma:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Nós especificamos localhost para que o Elasticsearch escute em todas as interfaces e IPs ligados. Se você quiser que ele escute apenas em uma interface específica, você pode especificar o IP dela no lugar de localhost. Salve e feche o elasticsearch.yml. Se você estiver usando o nano, você pode fazer isso pressionando CTRL+X, seguido de Y e, depois, ENTER.

      Essas são as configurações mínimas com as quais você começa para utilizar o Elasticsearch. Agora, inicie o Elasticsearch pela primeira vez.

      Inicie o serviço Elasticsearch com o systemctl. Dê ao Elasticsearch alguns momentos para iniciar. Caso contrário, poderá haver erros quanto à indisponibilidade de conexão.

      • sudo systemctl start elasticsearch

      Em seguida, execute o seguinte comando para habilitar o Elasticsearch para iniciar sempre que seu servidor inicializar:

      • sudo systemctl enable elasticsearch

      Você pode testar se seu serviço Elasticsearch está em execução enviando uma requisição HTTP:

      • curl -X GET "localhost:9200"

      Você verá uma resposta mostrando algumas informações básicas sobre seu nó local, semelhantes a esta:

      Output

      { "name" : "Elasticsearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Agora que o Elasticsearch está funcionando, vamos instalar o Kibana, o próximo componente da pilha Elastic.

      Passo 2 — Instalando e configurando o painel do Kibana

      De acordo com a documentação oficial, você deve instalar o Kibana somente após instalar o Elasticsearch. A instalação nesta ordem garante que os componentes de que cada produto depende estejam corretamente instalados.

      Como você já adicionou a fonte de pacotes Elastic no passo anterior, você pode apenas instalar os componentes restantes da pilha Elastic usando o apt:

      Em seguida, habilite e inicie o serviço Kibana:

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Como o Kibana está configurado para ouvir somente em localhost, devemos configurar um proxy reverso para permitir acesso externo a ele. Usaremos o Nginx para este fim, que já deve estar instalado em seu servidor.

      Primeiro, use o comando openssl para criar um usuário administrativo do Kibana que você usará para acessar a interface Web do Kibana. Como exemplo, vamos nomear esta conta como kibanaadmin, mas para garantir maior segurança, recomendamos que você escolha um nome não padrão para seu usuário que seria difícil de adivinhar.

      O comando a seguir irá criar o usuário administrativo e a senha do Kibana e armazená-los no arquivo htpasswd.users. Você irá configurar o Nginx para exigir esse nome de usuário e senha e ler este arquivo momentaneamente:

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Digite e confirme uma senha no prompt. Lembre-se ou tome nota deste login, pois você precisará dele para acessar a interface Web do Kibana.

      Em seguida, vamos criar um arquivo de bloco de servidor do Nginx. Como um exemplo, vamos nos referir a este arquivo como your_domain, embora você possa achar útil dar ao seu arquivo um nome mais descritivo. Por exemplo, se você tiver um registro FQDN e DNS configurado para este servidor, você pode nomear este arquivo após seu FQDN.

      Usando o nano ou seu editor de texto preferido, crie o arquivo de bloco de servidor do Nginx:

      • sudo nano /etc/nginx/sites-available/your_domain

      Adicione o seguinte bloco de código ao arquivo, garantindo atualizar your_domain para corresponder ao FQDN do seu servidor ou endereço IP público. Este código configura o Nginx para direcionar o tráfego HTTP do seu servidor para a aplicação do Kibana, que está escutando em localhost:5601. Além disso, ele configura o Nginx para ler o arquivo htpasswd.users e requerer autenticação básica.

      Observe que se você seguiu o tutorial de pré-requisitos do Nginx até o fim, você pode já ter criado este arquivo e o preenchido com algum conteúdo. Nesse caso, exclua todo o conteúdo existente no arquivo antes de adicionar o seguinte:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
      
          server_name your_domain;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Quando você terminar, salve e feche o arquivo.

      Em seguida, habilite a nova configuração criando um link simbólico para o diretório sites-enabled. Se você já criou um arquivo de bloco de servidor com o mesmo nome nos pré-requisitos do Nginx, você não precisa executar este comando:

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

      Em seguida, verifique a configuração para erros de sintaxe:

      Se quaisquer erros forem relatados em sua saída, retorne e verifique se o conteúdo que você colocou em seu arquivo de configuração foi adicionado corretamente. Depois que você vir syntax is ok na saída, reinicie o serviço do Nginx:

      • sudo systemctl reload nginx

      Se você seguiu o guia de configuração inicial do servidor, você deverá ter um firewall UFW ativado. Para permitir conexões ao Nginx, podemos ajustar as regras digitando:

      • sudo ufw allow 'Nginx Full'

      Nota: se você seguiu o tutorial de pré-requisitos, do Nginx, você pode ter criado uma regra UFW permitindo o perfil Nginx HTTP através do firewall. Como o perfil Nginx Full permite tanto o tráfego HTTP quanto HTTPS através do firewall, você pode excluir com segurança a regra que você criou no tutorial de pré-requisitos. Faça isso com o seguinte comando:

      • sudo ufw delete allow 'Nginx HTTP'

      O Kibana agora está acessível através do seu FQDN ou do endereço IP público do seu servidor de pilha Elastic. Você pode verificar a página de status do servidor do Kibana navegando para o seguinte endereço e digitando suas credenciais de login quando solicitado:

      http://your_domain/status
      

      Esta página de status exibe informações sobre o uso de recursos do servidor e lista os plugins instalados.

      |Kibana status page

      Nota: conforme mencionado na seção de pré-requisitos, é recomendado que você habilite o SSL/TLS no seu servidor. Você pode seguir o guia do Let’s Encrypt agora para obter um certificado SSL gratuito para o Nginx no Ubuntu 20.04. Depois de obter seus certificados SSL/TLS, retorne para completar este tutorial.

      Agora que o painel do Kibana está configurado, vamos instalar o próximo componente: Logstash.

      Passo 3 — Instalando e configurando o Logstash

      Embora seja possível para o Beats enviar dados diretamente para o banco de dados do Elasticsearch, é comum usar o Logstash para processar os dados. Isso lhe permitirá mais flexibilidade para coletar dados de diferentes fontes, transformá-los em um formato comum e exportá-los para outro banco de dados.

      Instale o Logstash com este comando:

      • sudo apt install logstash

      Depois de instalar o Logstash, você pode seguir para configurá-lo. Os arquivos de configuração do Logstash residem no diretório /etc/logstash/conf.d. Para mais informações sobre a sintaxe de configuração, você pode conferir a referência de configuração que o Elastic fornece. À medida que você configura o arquivo, é útil pensar no Logstash como um pipeline que leva dados de uma extremidade, os processa de uma maneira ou de outra e os envia para seu destino (neste caso, o destino sendo o Elasticsearch). Um pipeline do Logstash tem dois elementos necessários, input e output, e um elemento opcional, filter. Os plugins input consomem dados de uma fonte, os plugins filter processam os dados e os plugins output gravam os dados para um destino.

      Logstash pipeline

      Crie um arquivo de configuração chamado 02-beats-input.conf onde você irá configurar sua entrada do Filebeat:

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Insira a seguinte configuração de input. Isso especifica uma entrada para o beats que irá ouvir na porta TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Salve e feche o arquivo.

      Em seguida, crie um arquivo de configuração chamado 30-elasticsearch-output.conf:

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Insira a seguinte configuração de output. Essencialmente, esta saída configura o Logstash para armazenar os dados do Beats no Elasticsearch, que está em execução em localhost:9200, em um índice com o nome do Beat usado. O Beat usado neste tutorial é o Filebeat:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        if [@metadata][pipeline] {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          pipeline => "%{[@metadata][pipeline]}"
          }
        } else {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          }
        }
      }
      
      
      

      Salve e feche o arquivo.

      Teste sua configuração do Logstash com este comando:

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      Se não houver erros de sintaxe, a saída irá exibir Config Validation Result: OK. Exiting Logstash após alguns segundos. Se você não vir isso em sua saída, verifique quaisquer erros na saída e atualize a configuração para corrigi-los. Observe que você receberá avisos do OpenJDK, mas eles não devem causar nenhum problema e podem ser ignorados.

      Se seu teste de configuração for bem sucedido, inicie e habilite o Logstash para colocar as alterações de configuração em vigor:

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Agora que o Logstash está executando corretamente e está totalmente configurado, vamos instalar o Filebeat.

      Passo 4 — Instalando e configurando o Filebeat

      O Elastic Stack usa vários transportadores de dados leves chamados Beats para coletar dados de várias fontes e transportá-los para o Logstash ou para o Elasticsearch. Aqui estão os Beats que estão atualmente disponíveis na Elastic:

      • Filebeat: coleta e despacha os arquivos de log.
      • Metricbeat: coleta métricas de seus sistemas e serviços.
      • Packetbeat: coleta e analisa dados de rede.
      • Winlogbeat: coleta log de eventos do Windows.
      • Auditbeat: coleta dados do framework de auditoria do Linux e monitora a integridade do arquivo.
      • Heartbeat: monitora serviços para verificar sua disponibilidade com sonda ativa.

      Neste tutorial, usaremos o Filebeat para encaminhar logs locais para nossa pilha Elastic.

      Instale o Filebeat usando o apt:

      • sudo apt install filebeat

      Em seguida, configure o Filebeat para se conectar ao Logstash. Aqui, vamos modificar o arquivo de configuração de exemplo que vem com o Filebeat.

      Abra o arquivo de configuração do Filebeat:

      • sudo nano /etc/filebeat/filebeat.yml

      Nota: assim como no Elasticsearch, o arquivo de configuração do Filebeat está em formato YAML. Isso significa que a indentação adequada é crucial, então certifique-se de usar o mesmo número de espaços que são indicados nessas instruções.

      O Filebeat suporta inúmeras saídas, mas você geralmente apenas enviará eventos diretamente para o Elasticsearch ou para o Logstash para processamento adicional. Neste tutorial, usaremos o Logstash para realizar processamento adicional nos dados coletados pelo Filebeat. O Filebeat não precisará enviar quaisquer dados diretamente para o Elasticsearch, então vamos desativar essa saída. Para fazer isso, encontre a seção output.elasticsearch e comente as seguintes linhas precedendo-as com um #:

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      Então, configure a seção output.logstash. Descomente as linhas output.logstash: e hosts: ["localhost:5044"] removendo o #. Isso irá configurar o Filebeat para se conectar ao Logstash em seu servidor de pilha Elastic na porta 5044, a porta para a qual especificamos uma entrada do Logstash anteriormente:

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Salve e feche o arquivo.

      A funcionalidade do Filebeat pode ser estendida com módulos do Filebeat. Neste tutorial, usaremos o módulo system, que coleta e analisa logs criados pelo serviço de log de sistema das distribuições comuns do Linux.

      Vamos habilitá-lo:

      • sudo filebeat modules enable system

      Você pode ver uma lista de módulos habilitados e desabilitados executando:

      • sudo filebeat modules list

      Você verá uma lista similar à seguinte:

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik ...

      Por padrão, o Filebeat está configurado para usar caminhos padrão para o syslog e os logs de autorização. No caso deste tutorial, você não precisa alterar nada na configuração. Você pode ver os parâmetros do módulo no arquivo de configuração /etc/filebeat/modules.d/system.yml.

      Em seguida, precisamos configurar os pipelines de ingestão do Filebeat, que analisa os dados de log antes de enviá-los através do logstash para o Elasticsearch. Para carregar o pipeline de ingestão para o módulo system, digite o seguinte comando:

      • sudo filebeat setup --pipelines --modules system

      Em seguida, carregue o modelo de índice no Elasticsearch. Um índice do Elasticsearch é uma coleção de documentos que têm características semelhantes. Os índices são identificados com um nome, que é usado para se referir ao índice ao realizar várias operações dentro dele. O modelo de índice será aplicado automaticamente quando um novo índice for criado.

      Para carregar o modelo use o seguinte comando:

      • sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Index setup finished.

      O Filebeat vem empacotado com painéis de amostra do Kibana que lhe permitem visualizar dados do Filebeat no Kibana. Antes que você possa usar os painéis, você precisa criar o padrão de índice e carregar os painéis no Kibana.

      Conforme os painéis carregam, o Filebeat se conecta ao Elasticsearch para verificar as informações da versão. Para carregar painéis quando o Logstash estiver habilitado, você precisa desativar a saída do Logstash e habilitar a saída do Elasticsearch:

      • sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Você deve receber um resultado similar a este:

      Output

      Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html Loaded machine learning job configurations Loaded Ingest pipelines

      Agora, você pode iniciar e habilitar o Filebeat:

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Se você configurou sua pilha Elastic corretamente, o Filebeat começará a enviar seu syslog e logs de autorização para o Logstash, que então irá carregar esses dados no Elasticsearch.

      Para verificar se o Elasticsearch está realmente recebendo esses dados, consulte o índice do Filebeat com este comando:

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Você deve receber um resultado similar a este:

      Output

      ... { { "took" : 4, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4040, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.7.1-2020.06.04", "_type" : "_doc", "_id" : "FiZLgXIB75I8Lxc9ewIH", "_score" : 1.0, "_source" : { "cloud" : { "provider" : "digitalocean", "instance" : { "id" : "194878454" }, "region" : "nyc1" }, "@timestamp" : "2020-06-04T21:45:03.995Z", "agent" : { "version" : "7.7.1", "type" : "filebeat", "ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0", "hostname" : "june-ubuntu-20-04-elasticstack", "id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32" }, ...

      Se sua saída mostrar 0 total hits, o Elasticsearch não está carregando nenhum log sob o índice que você pesquisou e você precisará revisar sua configuração por erros. Se você recebeu a saída esperada, continue até o próximo passo, no qual veremos como navegar por alguns painéis do Kibana.

      Passo 5 — Explorando painéis do Kibana

      Vamos retornar à interface Web do Kibana que instalamos anteriormente.

      Em um navegador Web, vá até o FQDN ou endereço IP público do seu servidor de pilha Elastic. Se a sessão tiver sido interrompida, você precisará inserir novamente as credenciais que definiu no Passo 2. Depois de fazer login, você deve receber a página inicial do Kibana:

      Kibana Homepage

      Clique no link Discover na barra de navegação à esquerda (você pode ter que clicar no ícone Expand no canto inferior esquerdo para ver os itens do menu de navegação). Na página Discover selecione o padrão de índice pré-definido filebeat-* para ver dados do Filebeat. Por padrão, isso irá lhe mostrar todos os dados de log dos últimos 15 minutos. Você verá um histograma com eventos de log e algumas mensagens de log abaixo:

      Discover page

      Aqui, você pode pesquisar e navegar pelos seus logs e também personalizar seu painel. Neste ponto, porém, não haverá muito lá porque você só está coletando syslogs do seu servidor de pilha Elastic.

      Use o painel esquerdo para navegar até a página Dashboard e pesquise pelos painéis Filebeat System. Uma vez lá, você pode selecionar os painéis de amostra que vêm com o módulo system do Filebeat.

      Por exemplo, você pode visualizar estatísticas detalhadas baseadas em suas mensagens syslog:

      Syslog Dashboard

      Você também pode visualizar quais usuários usaram o comando sudo e quando:

      Sudo Dashboard

      O Kibana tem muitos outros recursos, como gráficos e filtros, para você explorar.

      Conclusão

      Neste tutorial, você aprendeu como instalar e configurar a pilha Elastic para coletar e analisar logs de sistema. Lembre-se que você pode enviar praticamente qualquer tipo de log ou dados indexados para o Logstash usando o Beats, mas os dados tornam-se ainda mais úteis se eles forem analisados e estruturados com um filtro do Logstash, pois isso transforma os dados em um formato consistente que pode ser lido facilmente pelo Elasticsearch.



      Source link

      Como instalar uma pilha ERPNext no Ubuntu 20.04


      O autor selecionou a Software in the Public Interest para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O ERPNext é uma suíte de Planejamento de Recursos Empresariais (ERP) que aproveita o poder e a flexibilidade das tecnologias de código aberto. Ele se destaca no gerenciamento de processos de negócio fundamentais, como finanças, vendas, recursos humanos, fabricação, compras, serviços, necessidades de assistência técnica e muito mais. Entre os benefícios da implementação de um sistema como o ERPNext estão:

      • Melhor produtividade, automatizando processos de negócio repetitivos
      • Melhoria da eficiência de TI através do compartilhamento de um banco de dados para todos os departamentos dentro da empresa
      • Melhor tomada de decisão graças a uma visão integral de como as unidades de negócios se relacionam entre si

      O ERPNext é baseado no Frappe, um framework Web full-stack de aplicativos escrito em Python que aproveita ao máximo o ambiente de tempo de execução Node/JavaScript e usa o MariaDB como seu banco de dados de back-end. Uma das muitas vantagens dos aplicativos baseados no Frappe, como o ERPNext, é o utilitário de linha de comando bench. O CLI do bench economiza tempo dos administradores automatizando tarefas como instalar, atualizar, configurar e gerenciar vários sites do Frappe/ERPNext.

      Neste tutorial, você irá instalar e configurar uma pilha ERPNext em um servidor executando o Ubuntu 20.04. Isso permitirá que você configure sua pilha para vários ambientes de desenvolvimento ou produção dependendo das suas necessidades. Além disso, isso irá prepará-lo para construir uma arquitetura mais complexa e tolerante a falhas.

      Pré-requisitos

      Nota: ao escolher as especificações do seu servidor, tenha em mente que os sistemas ERP consomem muitos recursos. Este guia exige um servidor com 4 GB de RAM, que é suficiente para casos de uso básico. No entanto, os requisitos específicos de hardware podem variar dependendo do número de usuários e do tamanho do seu negócio.

      Passo 1 — Configurando o firewall

      Embora configurar um firewall para o desenvolvimento seja opcional, para a produção, isso é uma prática de segurança obrigatória.

      Você precisará abrir as seguintes portas em seu servidor ERPNext:

      • 80/tcp e 443/tcp para o HTTP e HTTPS respectivamente
      • 3306/tcp para a conexão do MariaDB (recomendado apenas se precisar de acesso remoto ao banco de dados)
      • 143/tcp e 25/tcp para o IMAP e STMP respectivamente
      • 22/tcp para o SSH (se você ainda não tiver ativado o OpenSSH nas configurações do seu UFW)
      • 8000/tcp para testar sua plataforma antes de implantá-la para a produção

      Para abrir várias portas ao mesmo tempo, utilize o seguinte comando:

      • sudo ufw allow 22,25,143,80,443,3306,8000/tcp

      De maneira alternativa, você pode permitir conexões vindas de endereços IP específicos em portas específicas usando este comando:

      • sudo ufw allow from server_IP to any port port_number

      Depois de abrir todas as portas necessárias,o ative o firewall:

      Agora, verifique o status do seu firewall:

      O UFW irá exibir uma lista das suas regras habilitadas. Certifique-se de que as portas necessárias do ERPNext estejam abertas:

      Output

      Status: active To Action From -- ------ ---- 22,25,80,143,443,3306,8000/tcp ALLOW Anywhere 22,25,80,143,443,3306,8000/tcp (v6) ALLOW Anywhere (v6)

      Para obter mais informações sobre a configuração do UFW, consulte nosso guia sobre como configurar um firewall com o UFW no Ubuntu 20.04.

      Configurar um firewall adequado é o primeiro dos dois passos preliminares. Agora, você irá configurar o mapeamento de teclado e a codificação de caracteres no seu servidor.

      Passo 2 — Configurando localidades

      É altamente recomendado que você configure o mapeamento de teclado para o console, bem como a linguagem e a codificação de caracteres no seu host. Isso é necessário para evitar possíveis problemas durante o processo de instalação do ERPNext 12. Observe que essa configuração não tem nada a ver com a linguagem UI na sua plataforma ERPNext em si, mas com a configuração de localidades do sistema.

      Primeiro, atualize seu servidor:

      Agora, configure o keymap, a linguagem e a codificação de caracteres:

      • sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8

      O utilitário localectl é usado pelo Ubuntu 20.04 e outras distribuições do Linux para controlar e alterar as configurações de localidade e de layout de teclado em todo o sistema antes do login do usuário, o que é exatamente o que o ERPNext 12 necessita.

      Você também precisará adicionar as seguintes linhas ao seu arquivo /etc/environment. Use o nano ou seu editor de texto preferido para abrir o arquivo:

      • sudo nano /etc/environment

      Agora, adicione o conteúdo a seguir:

      /etc/environment

      LC_ALL=en_US.UTF-8
      LC_CTYPE=en_US.UTF-8
      LANG=en_US.UTF-8
      

      Salve e feche o arquivo.

      Reinicialize seu servidor para aplicar todas as alterações:

      Espere alguns minutos para que seu servidor seja reinicializado e então use o ssh para entrar novamente em sua instância. Agora, você está pronto para instalar seu banco de dados.

      Passo 3 — Instalando o MariaDB

      Agora, você irá adicionar o MariaDB à sua pilha de servidor. O ERPNext 12 requer o MariaDB 10.2+ para um funcionamento adequado. Como o Ubuntu 20.04 inclui o MariaDB 10.3 em seus repositórios oficiais, você pode instalar esta versão usando o comando apt:

      • sudo apt install mariadb-server

      De maneira alternativa, se preferir uma versão mais recente do MariaDB, siga o Passo 3 do nosso guia sobre como instalar uma pilha ERPNext no Ubuntu 18.04. Isso irá guiá-lo através do assistente de repositório online do MariaDB, que o ajudará a instalar a versão mais recente — MariaDB 10.5.

      Depois de instalar o mariadb-server, instale os seguintes pacotes:

      • sudo apt install python3-mysqldb libmysqlclient-dev

      O ERPNext 12 é um aplicativo Python e, portanto, requer a biblioteca python3-mysqldb para o gerenciamento de banco de dados. O libmysqlclient-dev é necessário para acessar certas funcionalidades de desenvolvedor do MariaDB.

      Em seguida, adicione uma camada extra de segurança ao servidor MariaDB executando o script mysql_secure_installation:

      • sudo mysql_secure_installation

      O script mysql_secure_installation solicitará que você responda a várias perguntas:

      • O primeiro prompt irá perguntar-lhe sobre a senha do root. Como ainda não existe nenhuma senha configurada, pressione ENTER.
      • Em seguida, quando perguntado sobre a alteração da senha do root do MariaDB, responda N. Usar a senha padrão juntamente com a autenticação do Unix é a configuração recomendada para sistemas baseados no Ubuntu, pois a conta root está intimamente relacionada com tarefas de manutenção automatizadas do sistema.
      • As perguntas restantes têm a ver com remover o usuário anônimo do banco de dados, restringir a conta root para fazer login remotamente no localhost, remover o banco de dados de teste e recarregar as tabelas de privilégio. É seguro responder Y a todas essas perguntas.

      Depois de completar o script mysql_secure_installation, o MariaDB será iniciado usando sua configuração padrão. A instalação padrão do ERPNext usa o usuário root do MariaDB’s para todas as operações de banco de dados. Embora essa abordagem possa ser conveniente em configurações com um único servidor, ela não é considerada uma boa prática de segurança. Dessa forma,na próxima seção, você irá aprender como evitar este problema criando um novo usuário com privilégios especiais.

      Como criar um usuário super administrador do MariaDB

      O ERPNext espera usar o usuário root do MariaDB para o gerenciamento de conexões de banco de dados, mas isso nem sempre é ideal. Para superar essa limitação e deixar um usuário não root gerenciar o MariaDB, você criará manualmente um banco de dados com o nome do usuário. Depois disso, será capaz de atribuir privilégios especiais ao novo usuário para que ele conduza as operações de banco de dados do ERPNext.

      Abra o prompt do MariaDB:

      Agora, crie um novo banco de dados com o nome do usuário que você deseja atribuir para as conexões do MariaDB. Este tutorial irá usar sammy, mas sinta-se à vontade para escolher um nome diferente:

      Confirme se o banco de dados foi criado usando esta declaração SQL:

      Você verá um resultado parecido com este:

      Output

      +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sammy | +--------------------+

      Agora, crie o usuário sammy do MariaDB com privilégios semelhantes ao root e então dê a ele uma senha forte da sua escolha. Mantenha a senha em um lugar seguro; você precisará dela mais tarde:

      • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

      Agora, confirme tanto a criação do usuário quanto dos privilégios do novo usuário:

      • SELECT host, user, Super_priv FROM mysql.user;

      Você verá uma saída como esta:

      Output

      +-----------+-------+------------+ | Host | User | Super_priv | +-----------+-------+------------+ | localhost | root | Y | | localhost | mysql | Y | | % | sammy| Y | +-----------+-------+------------+ 3 rows in set (0.001 sec)

      Em seguida, libere os privilégios para aplicar todas as alterações:

      Depois de terminar, saia da sessão:

      Agora que você criou um usuário do banco de dados, precisa apenas ajustar o MariaDB para garantir uma operação adequada do ERPNext 12. Felizmente, a equipe do ERPNext fornece um excelente modelo de configuração que será usado como um ponto de partida para sua implementação. Na próxima seção, você irá aprender como configurar corretamente o banco de dados do MariaDB usando esse modelo.

      Passo 4 — Configurando o MariaDB para o ERPNext

      Com o MariaDB instalado e protegido, é hora de ajustá-lo para as conexões do ERPNext.

      Primeiro, interrompa o mariadb.service:

      • sudo systemctl stop mariadb

      Agora, use o nano ou seu editor de texto favorito para criar um arquivo de configuração do MariaDB chamado mariadb.cnf:

      • sudo nano /etc/mysql/mariadb.conf.d/mariadb.cnf

      Em seguida, adicione o modelo oficial de configuração do ERPNext:

      /etc/mysql/mariadb.conf.d/mariadb.cnf

      [mysqld]
      
      # GENERAL #
      user                           = mysql
      default-storage-engine         = InnoDB
      socket                         = /var/lib/mysql/mysql.sock
      pid-file                       = /var/lib/mysql/mysql.pid
      
      # MyISAM #
      key-buffer-size                = 32M
      myisam-recover                 = FORCE,BACKUP
      
      # SAFETY #
      max-allowed-packet             = 256M
      max-connect-errors             = 1000000
      innodb                         = FORCE
      
      # DATA STORAGE #
      datadir                        = /var/lib/mysql/
      
      # BINARY LOGGING #
      log-bin                        = /var/lib/mysql/mysql-bin
      expire-logs-days               = 14
      sync-binlog                    = 1
      
      # REPLICATION #
      server-id                      = 1
      
      # CACHES AND LIMITS #
      tmp-table-size                 = 32M
      max-heap-table-size            = 32M
      query-cache-type               = 0
      query-cache-size               = 0
      max-connections                = 500
      thread-cache-size              = 50
      open-files-limit               = 65535
      table-definition-cache         = 4096
      table-open-cache               = 10240
      
      # INNODB #
      innodb-flush-method            = O_DIRECT
      innodb-log-files-in-group      = 2
      innodb-log-file-size           = 512M
      innodb-flush-log-at-trx-commit = 1
      innodb-file-per-table          = 1
      innodb-buffer-pool-size        = 5462M
      innodb-file-format             = barracuda
      innodb-large-prefix            = 1
      collation-server               = utf8mb4_unicode_ci
      character-set-server           = utf8mb4
      character-set-client-handshake = FALSE
      max_allowed_packet             = 256M
      
      # LOGGING #
      log-error                      = /var/lib/mysql/mysql-error.log
      log-queries-not-using-indexes  = 0
      slow-query-log                 = 1
      slow-query-log-file            = /var/lib/mysql/mysql-slow.log
      
      # CONNECTIONS #
      
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      bind-address    = 0.0.0.0
      
      [mysql]
      default-character-set = utf8mb4
      
      [mysqldump]
      max_allowed_packet=256M
      

      Salve e feche o arquivo. Para obter informações mais detalhadas sobre essas configurações, revise este arquivo modelo no repositório Github do ERPNext. Ele é um ponto de partida útil para explorar essas opções.

      O arquivo de configuração /etc/mysql/mariadb.conf.d/mariadb.cnf complementa e também substitui alguns valores incluídos na configuração padrão do MariaDB localizada em /etc/mysql/my.cnf. Este arquivo oferece um modelo curado que melhora muito o desempenho de banco de dados para o ERPNext. No entanto, tenha em mente que, embora esse modelo seja um ótimo ponto de partida, nada impede que você melhore o desempenho do MariaDB ainda mais ajustando esses parâmetros para atender às suas necessidades.

      Testando a conexão do MariaDB

      Como o ERPNext depende da conexão de banco de dados para quase todas as suas operações internas, é uma boa ideia testar a conexão antes de continuar.

      Inicie o mariadb.service:

      • sudo systemctl start mariadb

      Para testar a conexão, use o seguinte comando. Lembre-se de substituir sammy e mariadb_password por suas credenciais:

      • mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

      Você verá um resultado mostrando o conteúdo básico de ajuda do MariaDB, bem como diversos parâmetros. Isso significa que sua conexão foi bem sucedida:

      Output

      mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Usage: mysql [OPTIONS] [database] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf ... --ssl-verify-server-cert Verify server's "Common Name" in its cert against hostname used when connecting. This option is disabled by default. -t, --table Output in table format. --tee=name Append everything into outfile. See interactive help (h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default. -u, --user=name User for login if not current user. -U, --safe-updates Only allow UPDATE and DELETE that uses keys. -U, --i-am-a-dummy Synonym for option --safe-updates, -U. -v, --verbose Write more. (-v -v -v gives the table output format). ... max-join-size 1000000 secure-auth FALSE show-warnings FALSE plugin-dir (No default value) default-auth (No default value) binary-mode FALSE connect-expired-password FALSE

      Se precisar fazer qualquer ajuste nas configurações do MariaDB, ou corrigir qualquer erro, lembre-se de recarregar o serviço usando o seguinte comando:

      • sudo systemctl restart mariadb

      Depois de terminar, ative o MariaDB:

      • sudo systemctl enable mariadb

      Agora que você testou a conexão do banco de dados, continue com a instalação do seu aplicativo ERPNext.

      Passo 5 — Configurando o ERPNext 12

      Agora que o banco de dados está pronto, continue configurando seu aplicativo Web ERPNext. Nesta seção, você irá aprender como instalar e configurar todos os componentes necessários pelo ERPNext 12 e então instalar o próprio aplicativo.

      Comece preparando o servidor com todos os pacotes de sistema exigidos pelo ERPNext 12. Instale as dependências do sistema usando o seguinte comando:

      • sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential python3-testresources python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libdate-manip-perl logwatch

      A variável DEBIAN_FRONTEND=noninteractive foi passada para o comando de instalação para evitar os prompts do Postfix. Para informações detalhadas sobre a configuração do Postfix, leia nosso guia sobre Como instalar e configurar o Postfix no Ubuntu 20.04.

      Em seguida, atualize o pip3, que é o gerenciador padrão de pacotes do Python e depois instale as últimas versões de três módulos adicionais do Python:

      • sudo -H python3 -m pip install --upgrade setuptools cryptography psutil

      O setuptools facilita a instalação e atualização dos pacotes do Python, o cryptography adiciona capacidades de criptografia à sua pilha e o psutil auxilia com o monitoramento do sistema. Agora que você instalou todas as dependências globais necessárias, irá instalar todos os serviços e bibliotecas exigidos pelo ERPNext 12.

      Configurando o Node.js e o Yarn

      O ERPNext 12 pode trabalhar com a versão 8+ do ambiente de servidor Node.js. Na verdade, no momento em que este artigo está sendo escrito, o script oficial easy_install do ERPNext usa o Node 8. No entanto, do ponto de vista da segurança, é aconselhável instalar uma versão mais recente porque o Node 8 atingiu seu End Of Life (EOL) em 2020 e, portanto, não receberá mais nenhum patch de segurança. No momento da publicação deste artigo, o Ubuntu 20.04 contém a versão 10.19 do Node.js. Embora esta versão ainda seja mantida, por razões semelhantes (EOL em menos de um ano), é altamente aconselhável evitar seu uso. Para este guia, o Node.js versão 12 LTS será instalado juntamente com os gerenciadores de pacotes npm e yarn correspondentes. Note que o framework Frappe usa o yarn para instalar dependências. Se você decidir usar um método alternativo de instalação, certifique-se de que você tenha a versão 1.12+ do yarn em execução no seu sistema.

      Adicione o repositório NodeSource ao seu sistema:

      • curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

      Agora, você pode inspecionar o conteúdo do script baixado:

      • sudo nano nodesurce_setup.sh

      Assim que estiver satisfeito com o conteúdo do script, execute-o:

      • sudo bash nodesource_setup.sh

      Esse script irá atualizar automaticamente a lista apt. Agora, instale o nodejs em seu servidor:

      Em seguida, instale o yarn globalmente usando o gerenciador de pacotes npm:

      Agora que você instalou o Node, siga adiante para configurar o wkhtmltopdf para sua plataforma.

      O ERPNext usa a ferramenta wkhtmltopdf de código aberto para converter conteúdo HTML em PDF usando o mecanismo de renderização Qt WebKit. Esse recurso é usado principalmente para imprimir faturas, cotações e outros relatórios. No caso do ERPNext 12, uma versão específica do wkhtmltopdf é necessária, a 0.12.5 com o Qt implementado.

      Para instalar o wkhtmltopdf, comece indo para um diretório adequado para baixar o pacote. Neste caso, o /tmp:

      Baixe a versão e o pacote apropriados do wkhtmltopdf para o Ubuntu 20.04 da página do projeto:

      • wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

      Agora, instale o pacote usando a ferramenta dpkg:

      • sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

      Em seguida, copie todos os executáveis relevantes para seu diretório /usr/bin/:

      • sudo cp /usr/local/bin/wkhtmlto* /usr/bin/

      Assim que os arquivos estiverem no lugar, mude suas permissões para torná-los executáveis:

      • sudo chmod a+x /usr/bin/wk*

      Agora que o wkhtmltopdf está instalado corretamente, adicionaremos o Redis à pilha do nosso banco de dados.

      Instalando o Redis

      O ERPNext 12 usa o Redis para melhorar o desempenho do MariaDB. Mais especificamente, o Redis auxilia com o cache.

      Primeiro, instale o Redis a partir do repositório oficial do Ubuntu 20.04:

      • sudo apt install redis-server

      Em seguida, ative o Redis na inicialização:

      • sudo systemctl enable redis-server

      Agora que você adicionou o Redis à sua pilha, vamos dedicar um momento para resumir o que você fez até agora. Até este ponto, você instalou todos os componentes principais exigidos pelo ERPNext 12, que incluem:

      • Um backend de banco de dados MariaDB
      • O ambiente de servidor JavaScript Node.js
      • O gerenciador de pacotes Yarn
      • Um cache banco de dados Redis
      • O gerador de documentos PDF wkhtmltopdf

      Se você estiver instalando o sistema ERP para o desenvolvimento ou para a produção, agora está pronto para o próximo passo, que é a instalação do framework full-stack Frappe e o aplicativo Web ERPNext 12 em si.

      Passo 6 — Instalando o Bench CLI do Frappe

      Agora que você instalou todos os requisitos de pilha do ERPNext, libere a flexibilidade do utilitário de linha de comando bench do Frappe. O bench CLI foi projetado com o propósito de ajudar os usuários no processo de instalar, configurar e gerenciar aplicativos como o ERPNext que são baseados no Frappe Framework. Nas próximas seções, você irá instalar o CLI bench e então usá-lo para completar o processo de configuração do ERPNext 12.

      Certifique-se de que o usuário do Frappe (neste caso sammy) tenha os direitos adequados em seu diretório home:

      • sudo chown sammy -R /home/sammy

      Agora, clone o repositório frappe/bench para seu diretório home. Lembre-se de substituir sammy pelo nome de usuário do seu sistema:

      • git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

      Instale o bench CLI:

      • sudo pip3 install -e /home/sammy/.bench

      Este guia assume que você esteja instalando o ERPNext 12 para cenários de teste/produção e, consequentemente,que você esteja usando a ramificação master. Mas se a sua intenção for desenvolver aplicativos ou módulos do ERPNext personalizados, a ramificação develop pode ser uma opção mais adequada. Para ambos os casos, você está agora preparado para instalar o Frappe Framework. Esse será o passo final antes de instalar o próprio ERPNext.

      Configurando o ambiente do Frappe Framework

      Nesta seção, você irá criar um ambiente do Frappe usando o bench CLI.

      Durante a instalação do Frappe, você pode exceder o limite de inspeção de arquivos do Ubuntu, que por padrão é definido como 8192. Para evitar este problema, defina um limite superior usando o seguinte comando:

      • echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

      O comando tee irá anexar o conteúdo do seu comando echo ao arquivo chamado ao mesmo tempo em que também imprime o resultado em seu console.

      Em seguida, inicialize o Frappe Framework 12. Substitua Sammy pelo nome de usuário do seu sistema:

      • bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

      Durante a execução, um erro sobre seu caminho pode aparecer, juntamente com vários avisos. Deixe o processo continuar até o fim. Depois que ele for finalizado, você verá um resultado semelhante ao seguinte, indicando que seu ambiente foi criado com sucesso:

      Output

      ... Done in 82.23s. INFO:bench.utils:setting up backups no crontab for sammy SUCCESS: Bench /home/sammy/frappe-bench initialized

      Nota: o processo bench init pode ser interrompido se um erro spawn ENOMEM for encontrado. Esse erro é causado quando seu sistema fica sem memória. Você deve corrigir o problema antes de continuar, seja instalando mais memória física ou alocando um espaço SWAP.

      Vamos dar uma olhada no comando usado para criar o ambiente:

      • /home/sammy/frappe-bench é o caminho onde o Frappe Framework, os sites e aplicativos associados serão instalados. Um novo diretório, chamado frappe-bench neste exemplo, será criado para acomodar todos os arquivos necessários.
      • --frappe-path aponta para o repositório do Frappe, que neste caso é o repositório oficial do Github.
      • --frappe-branch é a versão do Frappe a ser instalada. Como você quer instalar o ERPNext 12, a versão escolhida é o Frappe 12.
      • --python é a versão do Python que será usada. O ERPNext 12 requer o Python 3.6+. No entanto, as versões anteriores ainda usam o Python 2.7.

      Para obter mais informações sobre comandos bench CLI, consulte o Manual dos comandos bench.

      A flexibilidade oferecida pelo Frappe Framework vai muito além do uso de ambientes isolados. Você também pode criar sites diferentes e instalar aplicativos neles.

      Passo 7 — Instalando o aplicativo Web ERPNext 12

      Nesta seção, você irá construir um site baseado no Frappe, e então instalar o aplicativo ERPNext 12 nele.

      Vá para o diretório onde o Frappe foi inicializado.

      • cd /home/sammy/frappe-bench

      Antes de continuar, será necessário instalar versões específicas das bibliotecas numpy e pandas do Python no ambiente virtual do Frappe. Instale esses pacotes usando o seguinte comando:

      • ./env/bin/pip install numpy==1.18.5 && ./env/bin/pip install pandas==0.24.2

      Neste momento, a instalação pode parar por cerca de 10 a 20 minutos enquanto exibe esta mensagem:

      Output

      ... Building wheel for pandas (setup.py) ... -

      Isso tem a ver com um bug relacionado ao pandas e o Ubuntu 20.04, que, no momento em que este tutorial está sendo escrito, ainda é relativamente novo. No entanto, os pacotes serão compilados e, assim que forem concluídos, você verá um resultado como este:

      Output

      ... Successfully built pandas Installing collected packages: pandas Successfully installed pandas-0.24.2

      Agora, continue a instalação. Faça o download do ERPNext 12 do seu repositório usando o bench CLI:

      • bench get-app erpnext https://github.com/frappe/erpnext --branch version-12

      Em seguida, crie o novo site, substituindo your_domain pelo domínio que você associou ao IP deste servidor:

      • bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

      Vamos reservar um momento para revisar as opções usadas no comando acima:

      • bench new-site cria um novo site baseado no Frappe Framework.
      • your_domain é o nome para o novo site. Certifique-se de que o DNS do seu domínio tenha um registro A apontando para o IP do seu servidor.
      • erpnext_admin_password é a senha desejada para o usuário Administrator do ERPNext. Mantenha essa senha em um lugar seguro — você precisará dela em breve.
      • mariadb_password é a senha que você criou no início do guia para o usuário sammy do MariaDB.

      Depois disso, instale o aplicativo ERPNext no site:

      • bench --site your_domain install-app erpnext

      Assim que a instalação for concluída, você terá um aplicativo ERPNext 12 em funcionamento. Agora, vamos testá-lo usando um comando bench:

      O comando acima irá iniciar um console de monitoramento em tempo real mostrando várias mensagens sobre o servidor Web e outros serviços. Abra um navegador Web e vá até localhost:8000 (para instalações locais) ou your_domain:8000 (se você estiver usando um servidor remoto). Você verá a tela de login do ERPNext (abordaremos o login e a configuração em um passo posterior, assim que fizermos nosso site ficar pronto para a produção).

      Depois de visitar sua implantação teste, retorne ao seu terminal e pressione CTRL+C. Isso irá parar o ERPNext e sair do console de monitoramento.

      Se seu objetivo principal for criar módulos ou modificar o ERPNext 12, então pode parar aqui. Não há mais componentes necessários para fins de desenvolvimento. No entanto, se o que você precisa é um sistema pronto para a produção que não requer uma inicialização manual, então será necessário instalar e configurar alguns componentes adicionais. Esse é o seu próximo passo.

      Passo 8 — Configurando o ERPNext 12 para a produção

      Embora seu aplicativo ERPNext 12 esteja pronto, o sistema como um todo não está preparado para a produção. Para garantir a confiabilidade e segurança do ERPNext, será necessário habilitar alguns serviços adicionais:

      • O Fail2ban fornece uma camada extra de proteção contra tentativas de força bruta de usuários e bots maliciosos.
      • O Nginx opera principalmente como um proxy Web, redirecionando todo o tráfego da porta 8000 para a porta 80 (HTTP) ou porta 443 (HTTPS)
      • O Supervisor garante que os processos chave do ERPNext estejam em funcionamento constante, reiniciando-os conforme necessário.

      Até este ponto, você instalou e configurou o ERPNext 12 manualmente, o que lhe permitiu personalizar o processo para funcionar em qualquer caso de uso particular. No entanto, para o resto da configuração de produção, aproveite a conveniência do bench CLI e deixe-o automatizar a instalação e configuração desses serviços restantes.

      Certifique-se de estar no diretório de trabalho do Frappe:

      • cd /home/sammy/frappe-bench

      Agora, use o seguinte comando para terminar a configuração do ERPNext 12 para produção:

      • sudo bench setup production sammy --yes

      O comando acima irá instalar e configurar o Nginx, Supervisor e Fail2Ban e definir sammy como proprietário do ambiente de produção.

      Os arquivos de configuração criados pelo comando bench são:

      • Dois arquivos de configuração do Nginx localizados em /etc/nginx/nginx.conf e /etc/nginx/conf.d/frappe-bench.conf
      • Uma prisão de proxy do Fail2Ban localizada em /etc/fail2ban/jail.d/nginx-proxy.conf e um filtro localizado em /etc/fail2ban/filter.d/nginx-proxy.conf

      Essas configurações padrão serão suficientes para este tutorial, mas sinta-se livre para explorar e ajustar esses arquivos para atender às suas necessidades. Pare todos os serviços executando:

      • sudo supervisorctl stop all

      Assim que tudo estiver pronto, reinicie seus serviços:

      • sudo supervisorctl start all

      Agora, você está pronto para testar sua instalação.

      Testando sua instalação do ERPNext 12

      Em primeiro lugar, verifique se os serviços de produção chave estão em execução. Use o seguinte comando systemctl e então canalize-o para o grep:

      • systemctl list-unit-files | grep 'fail2ban|nginx|supervisor'

      Você verá uma saída como esta:

      Output

      fail2ban.service enabled nginx.service enabled supervisor.service enabled

      Depois de confirmar que tudo está funcionando como esperado, você pode testar o ERPNext 12 ao vivo em seu servidor. Abra seu navegador favorito e vá até your_domain, ou onde quer que você esteja hospedando seu aplicativo ERPNext 12.

      Depois de alguns segundos, a tela de login do ERPNext 12 deve aparecer. Use Administrator para o nome de usuário (e-mail) e a senha erpnext_admin_password que você criou anteriormente para a senha.

      Tela de login do ERPNext

      Na próxima tela, você verá um menu suspenso onde pode selecionar o idioma da interface do usuário para o aplicativo:

      Seleção de idiomas

      Após a seleção de idiomas, o ERPNext irá questioná-lo sobre seu país, fuso horário e moeda:

      Selecione sua região

      Depois de completar as informações sobre a sua região, você será capaz de criar seu primeiro usuário do ERPNext. As informações que você fornecer serão usadas como as credenciais de login do usuário.

      Primeiro usuário do ERPNext

      Na próxima tela, você será questionado sobre o que o ERPNext chama de Domains (domínios). Se não tiver certeza sobre qual é o seu domínio, selecione Distribution e clique no botão Next.

      Selecionar seus domínios

      Em seguida, será necessário fornecer um nome e abreviação da empresa.

      Nome da empresa

      Na última tela, o ERPNext irá perguntar o que sua empresa faz, o nome do seu banco, o tipo de gráficos de contas e o período do ano fiscal. Você será capaz de inserir bancos adicionais mais tarde. Por enquanto, preencha todos os campos como quiser e clique no botão Complete Setup.

      Informações financeiras

      Em seguida, você verá uma barra de progresso.

      Configurando o ERPNext

      Assim que o processo de configuração for concluído, o painel principal do ERPNext 12 será exibido.

      Painel do ERPNext 12

      Agora, você terminou de instalar e configurar totalmente um aplicativo ERPNext 12.

      Conclusão

      Agora que você instalou corretamente seu aplicativo ERPNext 12, pode ser desejável iniciar a implementação do sistema para as necessidades do seu negócio. Um bom ponto de partida é clicando no botão Getting Started no painel do ERPNext. O ERPNext irá então ajudá-lo a configurar a plataforma para todas as suas necessidades de negócios e e-commerce.

      Getting Started

      Pode ser que você também queira aumentar a velocidade do ERPNext. Se esse for o caso, então leia sobre o ajuste de desempenho do ERPNext, que irá guiá-lo pelas práticas recomendadas e como depurar problemas relacionados ao desempenho.



      Source link