[comment]: # ({af2eaf2f-af2eaf2f})
# 3 Instalação a partir do código-fonte

Você pode obter a versão mais recente do Zabbix compilando a partir do código-fonte.

Um tutorial passo a passo para instalar o Zabbix a partir do código-fonte é fornecido aqui.

[comment]: # ({/af2eaf2f-af2eaf2f})

[comment]: # ({a81f3302-0040d992})
#### Instalando os daemons do Zabbix

[comment]: # ({/a81f3302-0040d992})

[comment]: # ({2e98ce22-8cc2c1b1})
##### 1 Baixe o arquivo de origem

Acesse a [página de download do Zabbix](http://www.zabbix.com/download_sources#70LTS)
e baixe o arquivo de origem. Após o download, extraia os arquivos de origem,
executando:

    tar -zxvf zabbix-7.0.0.tar.gz

::: notetip
Digite a versão correta do Zabbix no comando. Ela deve
corresponder ao nome do arquivo baixado.
:::

[comment]: # ({/2e98ce22-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2 Criar conta de usuário

Todos os processos do daemon do Zabbix são executados sob usuários de sistema sem privilégios.
Se um daemon do Zabbix for iniciado a partir de uma conta de usuário sem privilégios, ele continuará sendo executado como esse usuário.

Na configuração padrão, se um daemon for iniciado como `root`, ele mudará para a conta de usuário `zabbix`, que deve estar presente.
Para criar um usuário e grupo de sistema `zabbix`, execute os comandos listados abaixo.

Sistema baseado em RedHat:

    groupadd --system zabbix
    useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Sistema baseado em Debian:

    addgroup --system --quiet zabbix
    adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Não é necessário criar uma conta de usuário separada para o frontend do Zabbix.

###### Recomendação de segurança

Se o [server](/manual/concepts/server) e o [agent](/manual/concepts/agent) do Zabbix forem executados na mesma máquina, recomenda-se executá-los sob **contas de usuário separadas**.
Executar ambos como o mesmo usuário permite que o agent acesse o arquivo de configuração do server, o que pode expor informações confidenciais—como a senha do banco de dados—para qualquer usuário com nível de Admin no Zabbix.

::: noteimportant
Executar o Zabbix como `root`, `bin` ou qualquer outra conta com direitos especiais é um risco de segurança.
:::

###### Diretório home (opcional)

Os processos do Zabbix não exigem um diretório home, portanto, geralmente não é recomendada a criação de um.
No entanto, se você precisar de uma funcionalidade que exija um diretório home (por exemplo, armazenar credenciais do MySQL em $HOME/.my.cnf), você pode criá-lo usando os comandos listados abaixo.

Em sistemas baseados em RedHat, execute:

    mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
    chown zabbix:zabbix /usr/lib/zabbix

Em sistemas baseados em Debian, execute:

    mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
    chown zabbix:zabbix /var/lib/zabbix

[comment]: # ({/65663a59-87e1101d})

[comment]: # ({06256db0-06256db0})
##### 3 Criar o banco de dados do Zabbix

Para os daemons do Zabbix [server](/manual/concepts/server) e
[proxy](/manual/concepts/proxy), assim como para o frontend do Zabbix, é
necessário um banco de dados. Ele não é necessário para executar o
[agent](/manual/concepts/agent) do Zabbix.

[Scripts SQL são fornecidos](/manual/appendix/install/db_scripts) para
criar o esquema do banco de dados e inserir o conjunto de dados. O banco
de dados do proxy Zabbix precisa apenas do esquema, enquanto o banco de
dados do server Zabbix requer também o conjunto de dados além do esquema.

Tendo criado um banco de dados Zabbix, prossiga para as etapas seguintes
de compilação do Zabbix.

[comment]: # ({/06256db0-06256db0})

[comment]: # ({ecd76a0a-8ff1b41c})
##### 4 Configurar os fontes

É necessário C99 com extensões GNU para compilar o Zabbix server, o Zabbix proxy ou o Zabbix agent.
Essa versão pode ser especificada explicitamente definindo CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

::: noteclassic
Se estiver instalando a partir do [repositório Git do Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
é necessário executar primeiro:

`./bootstrap.sh`
:::

Ao configurar os fontes para um Zabbix server ou proxy, você deve
especificar o tipo de banco de dados a ser usado. Apenas um tipo de banco de dados pode ser
compilado com um processo de server ou proxy por vez.

Para ver todas as opções de configuração suportadas, dentro do diretório
dos fontes extraídos do Zabbix execute:

    ./configure --help

Para configurar os fontes para um Zabbix server e agent, você pode executar
algo como:

    ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Para configurar os fontes para um Zabbix server (com PostgreSQL etc.), você
pode executar:

    ./configure --enable-server --with-postgresql --with-net-snmp

Para configurar os fontes para um Zabbix proxy (com SQLite etc.), você pode
executar:

    ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Para configurar os fontes para um Zabbix agent, você pode executar:

    ./configure --enable-agent

ou, para o Zabbix agent 2:

    ./configure --enable-agent2

::: noteclassic
Uma [versão do Go suportada](/manual/installation/requirements#agent-2) deve estar instalada para compilar o Zabbix agent 2.
:::

Observações sobre as opções de compilação:

-   `--enable-agent` - compila o Zabbix agent, bem como os utilitários de linha de comando [Zabbix get](/manual/concepts/get) e [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` - necessário para monitoramento de máquinas virtuais, autenticação SMTP e [items](/manual/config/items/itemtypes/zabbix_agent) `web.page.*` do Zabbix agent. Veja também: [Requisitos](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - necessário para monitoramento de máquinas virtuais.
-   `--with-libpcre[=DIR]` - o Zabbix sempre compila com a biblioteca PCRE; esta opção permite apenas especificar um caminho de instalação personalizado para o PCRE.
-   `--with-mysql=/path/to/mysql_config` - especifica o caminho para uma configuração específica da biblioteca cliente MySQL. Útil quando várias versões do MySQL ou MariaDB estão instaladas.
-   `--with-oracle` - especifica o local da API Oracle Call Interface (OCI).
-   `--enable-static` - vincula bibliotecas estaticamente (não suportado no [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Use isso se você planeja distribuir binários compilados para sistemas sem as bibliotecas necessárias. Não é recomendado ao compilar o Zabbix server. Para compilar o server estaticamente, é necessária uma versão estática de cada biblioteca externa. O script configure não verifica isso automaticamente.
-   `--with-stacksize=<value>` - define o tamanho da pilha por thread em kilobytes (por exemplo, `--with-stacksize=512`). Você pode aumentar esse valor se o Zabbix travar ou congelar devido a estouros de pilha (por exemplo, durante o [pré-processamento](/manual/config/items/preprocessing) em sistemas com limites padrão baixos de pilha por thread).

::: noteimportant
Se `./configure` falhar devido à ausência de bibliotecas ou outros problemas, verifique o arquivo `config.log` para obter informações detalhadas sobre o erro.

Por exemplo, se `libssl` estiver ausente, a mensagem de erro imediata pode ser enganosa:

    checking for main in -lmysqlclient... no
    configure: error: Not found mysqlclient library

Nesse caso, o `config.log` revela a causa real:

    /usr/bin/ld: cannot find -lssl
    /usr/bin/ld: cannot find -lcrypto

:::

Veja também:

-   [Compilando o Zabbix com suporte a criptografia](/manual/encryption#compiling-zabbix-with-encryption-support)
-   Problemas conhecidos de [compilação](/manual/installation/known_issues/compilation_issues)

[comment]: # ({/ecd76a0a-8ff1b41c})

[comment]: # ({1d0f465e-08edd3dc})
##### 5 Compile e instale tudo

::: noteclassic
Se estiver instalando a partir do [repositório Git do Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
é necessário executar primeiro:

`$ make dbschema` 
:::

    make install

Esta etapa deve ser executada como um usuário com permissões suficientes (comumente
'root', ou usando `sudo`).

Executar `make install` irá, por padrão, instalar os binários dos daemons
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) em /usr/local/sbin e
os binários dos clientes (zabbix\_get, zabbix\_sender) em /usr/local/bin.

::: noteclassic
Para especificar um local diferente de /usr/local, use a
chave --prefix na etapa anterior de configuração das fontes, por exemplo
--prefix=/home/zabbix. Neste caso, os binários dos daemons serão instalados
em <prefix>/sbin, enquanto as utilidades em <prefix>/bin. As páginas de manual
serão instaladas em <prefix>/share.
:::

[comment]: # ({/1d0f465e-08edd3dc})

[comment]: # ({f36d53db-112b74f7})
##### 6 Revise e edite os arquivos de configuração

-   edite o arquivo de configuração do agent Zabbix
    **/usr/local/etc/zabbix\_agentd.conf**

Você precisa configurar este arquivo para cada host com o zabbix\_agentd instalado.

Você deve especificar o **endereço IP** do server Zabbix no arquivo.
Conexões de outros hosts serão negadas.

-   edite o arquivo de configuração do server Zabbix
    **/usr/local/etc/zabbix\_server.conf**

Você deve especificar o nome do banco de dados, usuário e senha (se estiver usando algum).

O restante dos parâmetros será adequado para você com seus valores padrão se você tiver uma instalação pequena (até dez hosts monitorados). No entanto, você deve alterar os parâmetros padrão se quiser maximizar o desempenho do server (ou proxy) Zabbix.

-   se você instalou um proxy Zabbix, edite o arquivo de configuração do proxy
    **/usr/local/etc/zabbix\_proxy.conf**

Você deve especificar o endereço IP do server e o hostname do proxy (deve ser conhecido pelo server), bem como o nome do banco de dados, usuário e senha (se estiver usando algum).

::: noteclassic
Com o SQLite, o caminho completo para o arquivo do banco de dados deve ser especificado; usuário e senha do banco de dados não são necessários.
:::

[comment]: # ({/f36d53db-112b74f7})

[comment]: # ({67632a65-bbdd82ac})
##### 7 Inicie os daemons

Execute o zabbix\_server no lado do servidor.

    zabbix_server

::: noteclassic
Certifique-se de que seu sistema permite a alocação de 36MB (ou um
pouco mais) de memória compartilhada, caso contrário, o servidor pode não iniciar e você
verá "Cannot allocate shared memory for <type of cache>." no
arquivo de log do servidor. Isso pode acontecer no FreeBSD, Solaris 8.
:::

Execute o zabbix\_agentd em todas as máquinas monitoradas.

    zabbix_agentd

::: noteclassic
Certifique-se de que seu sistema permite a alocação de 2MB de
memória compartilhada, caso contrário, o agent pode não iniciar e você verá
"Cannot allocate shared memory for collector." no arquivo de log do agent.
Isso pode acontecer no Solaris 8.
:::

Se você instalou o Zabbix proxy, execute o zabbix\_proxy.

    zabbix_proxy

[comment]: # ({/67632a65-bbdd82ac})

[comment]: # ({8d29e485-c9f154ca})
#### Instalando a interface web do Zabbix

[comment]: # ({/8d29e485-c9f154ca})

[comment]: # ({7ed89806-ed4e56ce})
##### Copiando arquivos PHP

O frontend do Zabbix é escrito em PHP, portanto, para executá-lo, é necessário um servidor web com suporte a PHP.
A instalação é feita simplesmente copiando os arquivos PHP do diretório ui para o diretório de documentos HTML do servidor web.

Os locais comuns dos diretórios de documentos HTML para servidores web Apache incluem:

-   /usr/local/apache2/htdocs (diretório padrão ao instalar o Apache a partir do código-fonte)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

É sugerido usar um subdiretório em vez da raiz HTML.
Para criar um subdiretório e copiar os arquivos do frontend do Zabbix para ele, execute os seguintes comandos, substituindo <htdocs> pelo diretório real:

    mkdir <htdocs>/zabbix
    cd ui
    cp -a . <htdocs>/zabbix

Se planeja usar qualquer outro idioma além do inglês, consulte [Instalação de idiomas adicionais do frontend](/manual/appendix/install/locales) para obter instruções.

[comment]: # ({/7ed89806-ed4e56ce})

[comment]: # ({ae1b267f-63583cbb})
##### Instalando o frontend

Consulte a página [Instalação da interface web](/manual/installation/frontend) para obter informações sobre o assistente de instalação do frontend do Zabbix.

[comment]: # ({/ae1b267f-63583cbb})

[comment]: # ({8751cf7f-5ea0c792})
#### Instalando plugins carregáveis do agent 2 do Zabbix

A instalação de plugins carregáveis do agent 2 do Zabbix só é necessária se você quiser monitorar alvos não cobertos pelos plugins nativos (por exemplo, servidores ou clusters MongoDB, PostgreSQL e seus forks, etc.).
Veja a lista completa de [plugins carregáveis](/manual/extensions/plugins#loadable-plugins) e [plugins nativos](/manual/extensions/plugins#built-in-plugins).

::: noteimportant
Antes de instalar um plugin, verifique o arquivo README.
Ele pode conter requisitos específicos e instruções de instalação.
:::

Para instalar a partir do código-fonte, primeiro [baixe](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) e extraia o arquivo de origem do plugin carregável.

Para compilar o plugin, navegue até o diretório extraído do plugin e execute `make`:

    make

::: noteclassic
Uma [versão suportada do Go](/manual/installation/requirements#agent-2) deve estar instalada para compilar plugins carregáveis do agent 2 do Zabbix.
:::

O executável do plugin pode ser colocado em qualquer lugar, desde que seja carregável pelo agent 2 do Zabbix.
Especifique o caminho para o binário do plugin no arquivo de configuração do plugin, por exemplo, em postgresql.conf para o plugin [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin):

    Plugins.PostgreSQL.System.Path=/caminho/para/executavel/zabbix-agent2-plugin-postgresql

O caminho para o arquivo de configuração do plugin deve ser especificado no parâmetro Include do arquivo de configuração do agent 2 do Zabbix:

    Include=/caminho/para/arquivo/de/configuracao/do/plugin/postgresql.conf

Prossiga para a [configuração](/manual/extensions/plugins#configuring-plugins) para mais detalhes sobre como configurar plugins.

Plugins carregáveis fornecidos pelo Zabbix usam makefiles simples com os seguintes alvos de compilação:

-   `make` - compila o plugin
-   `make clean` - exclui todos os arquivos criados pela compilação do plugin
-   `make check` - executa autotestes (requer um alvo real de monitoramento, por exemplo, um banco de dados PostgreSQL)
-   `make style` - verifica o estilo do código Go com `golangci-lint`
-   `make format` - formata o código Go com `go fmt`
-   `make dist` - cria um arquivo de origem incluindo todas as dependências

[comment]: # ({/8751cf7f-5ea0c792})

[comment]: # ({3c8ef27d-1a519c06})
#### Instalando o Java gateway

É necessário instalar o Java gateway somente se você quiser monitorar aplicações JMX. O Java gateway é leve e não requer um banco de dados.

Para instalar a partir do código-fonte, primeiro [baixe](/manual/installation/install#download-the-source-archive) e extraia o arquivo-fonte.

Para compilar o Java gateway, execute o script `./configure` com a opção `--enable-java`. É recomendável especificar a opção `--prefix` para definir um caminho de instalação diferente do padrão /usr/local, porque a instalação do Java gateway criará toda uma árvore de diretórios, e não apenas um único executável.

    ./configure --enable-java --prefix=$PREFIX

Para compilar e empacotar o Java gateway em um arquivo JAR, execute `make`. Observe que, para esta etapa, você precisará dos executáveis `javac` e `jar` em seu path.

    make

Agora você tem um arquivo zabbix-java-gateway-$VERSION.jar em src/zabbix\_java/bin. Se você se sentir à vontade para executar o Java gateway a partir de src/zabbix\_java no diretório de distribuição, então pode prosseguir para as instruções de configuração e execução do [Java gateway](/manual/java/from_sources#overview-of-files). Caso contrário, certifique-se de ter privilégios suficientes e execute `make install`.

    make install

Prossiga para a [configuração](/manual/concepts/java/from_sources) para mais detalhes sobre como configurar e executar o Java gateway.

[comment]: # ({/3c8ef27d-1a519c06})

[comment]: # ({a056dfd8-76c01064})
#### Instalando o serviço web do Zabbix

A instalação do serviço web do Zabbix só é necessária se você quiser usar
[relatórios
agendados](/manual/web_interface/frontend_sections/reports/scheduled).

Para instalar a partir do código-fonte, primeiro
[baixe](/manual/installation/install#download-the-source-archive) e
extraia o arquivo-fonte.

Para compilar o serviço web do Zabbix, execute o script `./configure` com a
opção `--enable-webservice`.

::: noteclassic
Uma [versão do Go compatível](/manual/installation/requirements#agent-2) deve estar instalada para compilar o serviço web do Zabbix.
:::

Execute o zabbix\_web\_service na máquina em que o serviço web está instalado:

    zabbix_web_service

Prossiga para a [configuração](/manual/appendix/install/web_service) para mais detalhes
sobre como configurar a geração de relatórios agendados.

[comment]: # ({/a056dfd8-76c01064})

