# 4 Instalação a partir dos fontes

Você pode instalar o Zabbix a partir de seu código fonte.

Um passo a passo sobre como instala-lo a partir de seus fontes será
fornecido aqui.

#### - Instalando os daemons do Zabbix

##### 1 Baixe o pacote com o código fonte

Acesse a página de [download](http://www.zabbix.com/download.php) do
Zabbix e efetue o download do arquivo de fontes. Uma vez baixado,
extraia os fontes conforme a seguir:

    $ tar -zxvf zabbix-3.0.0.tar.gz

::: notetip
Entre com a versão correta do Zabbix no comando, a
versão faz parte do nome do arquivo (Ex. 3.0.1 = zabbix-3.0.1.tar.gz,
3.0.0 = zabbix-3.0.0.tar.gz).
:::

##### 2 Crie a conta do usuário Zabbix

Para todos os processos daemons do Zabbix é necessária a existência de
um usuário comum (sem privilégios de root) para a sua execução. Se um
daemon do Zabbix for iniciado com um usuário sem privilégios de root,
continuará sendo executado com as permissões do mesmo.

Por outro lado, se um daemon do Zabbix for iniciado por uma conta com
privilégio de `root`, o daemon fará com que o permissionamento seja
alterado para o usuário 'zabbix', que deve estar presente no ambiente.
Para criar o usuário do Zabbix em ambientes Linux, execute:

    groupadd zabbix
    useradd -g zabbix zabbix

Não é necessário criar uma segunda conta de usuário para executar a
instalação da interface web.

Se o Zabbix [Server](/pt/manual/concepts/server) e o Zabbix
[Agent](/pt/manual/concepts/agent) estiverem na mesma máquina é
recomendável que estejam rodando com usuários diferentes. De outra
forma, com os dois sendo executados com o mesmo usuário, o agente poderá
acessar o arquivo de configuração do Zabbix Server e informações
sensíveis (como o usuário e senha do banco de dados do Zabbix) poderão
ser facilmente recuperadas.

::: noteimportant
Executando o Zabbix como o `root`, `bin`, ou outra
conta com privilégios especiais pode ser um risco à
segurança.
:::

##### 3 Criar o banco de dados do Zabbix

Para os daemons do Zabbix [Server](/ptmanual/concepts/server) e
[Proxy](/pt/manual/concepts/proxy), assim como a interface web, é
necessário um banco de dados. Para a execução do Zabbix
[agent](/pt/manual/concepts/agent), não é necessário.

São fornecidos os [scripts SQL](/pt/manual/appendix/install/db_scripts)
para criar o esquema de banco de dados e popular os dados iniciais. É
importante ressaltar que para o Zabbix Server é necessário criar o
esquema e popular os dados, para o Zabbix Proxy só é necessário criar o
esquema de banco de dados.

Após criar o banco de dados do Zabbix, proceda com os passos a seguir
para compila-lo.

##### 4 Configurando os fontes

Para configurar os fontes para a compilação do Zabbix Server ou Zabbix
Proxy é necessário que se defina qual tipo de banco de dados será
utilizado. Os binários serão compilados para um SGDB específico.

Para ver todas as opções suportadas, dentro do diretório com os fontes
do Zabbix execute:

    ./configure --help

Para configurar os fontes do Zabbix Server e Zabbix Agent você precisa
rodar algo parecido com o exemplo abaixo (neste caso com o suporte ao
MySQL):

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

<​note><​nowiki>​--with-libcurl</​nowiki>​ este
parâmetro é necessário para adicionar o suporte a envio de e-mail (SMTP)
autenticado (​versão 7.20.0 ou superior do cURL) . Suportado desde o
Zabbix 3.0.0.\
Os parâmetros <​nowiki>​--with-libcurl</​nowiki>​ e
<​nowiki>​--with-libxml2</​nowiki>​ são necessários para o
suporte à monitoração de máquinas virtuais, suportado desde o Zabbix
2.2.0.</​note

Para configurar os fontes com o PostgreSQL, você pode executar algo
parecido com:

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

Para configurar os fontes com o SQLite, você pode executar algo parecido
com:

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

Para configurar o Zabbix Agent somente você pode rodar o comando a
seguir:

    ./configure --enable-agent

Você pode utilizar o parâmetro --enable-static para associar
estaticamente com bibliotecas específicas. Se você planeja distribuir os
binários compilados entre servidores diferetnes, você deverá utilizar
este parâmetro para que o binário funcione sem as bibliotecas
necessárias. Observe que --enable-static [esta função não funcionará no
Solaris](http://blogs.sun.com/rie/entry/static_linking_where_did_it).

::: noteimportant
 O uso do parâmetro --enable-static não é uma
opção recomendável.// //

Para construir o servidor de forma estática você deverá possuir as
versões estáticas de cada biblioteca externa necessária. Não serão
feitas verificações pelo script de configuração. 
:::

::: noteclassic
Os utilitários de linha de comando `zabbix_get` e
`zabbix_server` serão gerados se o parâmetro --enable-agent for
utilizada.
:::

::: noteclassic
Utilize o parâmetro --with-ibm-db2 ou --with-oracle para
especificar a localização da biblioteca de cliente.\\\\
:::

Para habilitar o suporte a criptografia veja [Compilando o Zabbix com
suporte a
criptografia](/pt/manual/encryption?&#compiling_zabbix_with_encryption_support).

##### 5 Gerar e instalar tudo

::: noteclassic
Se você estiver instalando a partir do SVN, será necessário
primeiro executar:

`$ make dbschema` 
:::

    make install

Este passo deve ser executado por um usuário com privilégios suficientes
(nomalmente o root ou através do `sudo`).

Ao executar o `make install` serão instalados os binários dos daemons
(`zabbix_server`, `zabbix_agentd`, `zabbix_proxy`) no diretório
/usr/local/sbin e os binários de linha de comando (`zabbix_get`,
`zabbix_sender`) em /usr/local/bin.

::: noteclassic
Para definir um local diferente do que /usr/local, utilize o
parâmetro --prefix no passo anterior (configuração), por exemplo
--prefix=/home/zabbix. Neste caso os binários dos daemons serão
instalados em <prefix>/sbin, enquanto os utilitários em
<prefix>/bin. O manual será instalado em
<prefix>/share.
:::

##### 6 Revisando e editando os arquivos de configuração

-   Configurar o Zabbix Agent **/usr/local/etc/zabbix\_agentd.conf**

Você precisa configurar este arquivo em cada host com o `zabbix_agentd`
instalado.

Você precisa informar o **endereço IP** do Zabbix Server no arquivo.
Conexões a partir de outros hosts serão negadas.

-   Configurar o Zabbix Server **/usr/local/etc/zabbix\_server.conf**

Você precisa informar o **nome do banco de dados, usuário e senha** (se
existir).

::: noteclassic
Caso o banco de dados seja um SQLite deverá ser informado o
caminho completo para o arquivo de dados; Usuário e senha não são
necessários.
:::

Os demais parâmetros podem ser deixados em seus valores padrão se você
possuir uma instalação pequena (até dez hosts monitorados). Se
necessário você poderá alterar os parâmetros para melhorar a performance
do Zabbix Server ou Zabbix Proxy. Veja a sessão sobre
[tuning](/pt/manual/appendix/performance_tuning) para mais detalhes.

-   Configuração (caso exista) do Zabbix Proxy
    **/usr/local/etc/zabbix\_proxy.conf**

Você deverá informar o **endereço IP do Zabbix Server**, o **nome do
proxy** (que deverá ser cadastrado no Zabbix Server), **nome do banco de
dados** e seu usuário e senha (caso existam).

::: noteclassic
Caso o banco de dados seja um SQLite (normalmente a melhor
opção para o Zabbix Proxy) deverá ser informado o caminho completo para
o arquivo de dados; Usuário e senha não são necessários.
:::

##### 7 Iniciando os daemons

Execute o comando `zabbix_server` no servidor que hospedará o serviço.

    shell> zabbix_server

::: noteclassic
Certifique-se que o seu sistema permita a alocação de 36MB
(ou um pouco mais) de memória compartilhada, de outra forma o Zabbix
Server não será iniciado e apresentará a mensagem "Cannot allocate
shared memory for <type of cache>." no arquivo de log do Zabbix
Server (normalmente /tmp/zabbix\_server.log). Isso poderá ocorrer em
FreeBSD, Solaris 8.\
Veja a sessão ["Veja também"](#see_also) ao final desta página para
informações sobre configuração de memória compartilhada.
:::

Execute o comando `zabbix_agentd` em todos os servidores monitorados.

    shell> zabbix_agentd

::: noteclassic
Certifique-se que o seu sistema permita a alocação de 2MB de
memória compartilhada, de outra forma o Zabbix Agent não será iniciado e
apresentará a mensagem "Cannot allocate shared memory for collector." no
arquivo de log do Zabbix Agent (normalmente /tmp/zabbix\_agentd.log).
Isso poderá ocorrer em FreeBSD, Solaris 8.
:::

Se seu ambiente possuir um proxy, execute o comando `zabbix_proxy` no
servidor que hospeda o serviço.

    shell> zabbix_proxy

#### - Instalando a interface web do Zabbix

##### Copiando os arquivos PHP

A interface web do Zabbix é escrita em PHP, então é necessário um
servidor web com suporte à esta linguagem. A instalação será concluída
simplesmente copiando os arquivos PHP de frontends/php para o diretório
de documentos HTML.

A localização do diretório de HTML do Apache pode variar em função da
distribuição utilizada a seguir apresentamos alguns locais comuns:

-   /usr/local/apache2/htdocs (diretório padrão quando se instala o
    Apache a partir de seu código fonte)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Fedora, RHEL, CentOS)
-   /var/www (Debian, Ubuntu)

É uma boa prática utilizar um subdiretório ao invés do diretório raiz do
HTML. Para criar um subdiretório e copiar os arquivos da interface web
do Zabbix, execute os comandos a seguir substituindo a tag
<htdocs> pelo caminho correto para o seu caso:

    mkdir <htdocs>/zabbix
    cd frontends/php
    cp -a . <htdocs>/zabbix

Caso você esteja instalando o Zabbix a partir do SVN e precisar utilizar
qualquer outro idioma que não o Inglês você irá precisar gerar os
arquivos de tradução também. Os passos a seguir executam esta tarefa:

    locale/make_mo.sh

A ferramenta `msgfmt` do pacote `gettext` é necessária.

::: noteclassic
Adicionalmente, para utilizar qualquer outro idioma que não
o Inglês, o arquivo de localização precisará ser instalado no servidor
web. Veja a sessão ["Veja
também"](/manual/web_interface/user_profile#see_also) no tópico de
"Perfil de usuário" para informações de instalação, se
necessário.
:::

##### Instalando a interface web

##### Passo 1

No seu navegador, abra a URL para o servidor que hospeda a interface web
do Zabbix: http://<server\_ip\_or\_name>/zabbix

Você deverá estar visualizando a primeira tela do assistente de
configuração da interface web.

![](../../../assets/en/manual/installation/install_1.png){width="550"}

##### Passo 2

Certifique-se que todos os pré-requisitos foram atendidos.

![](../../../assets/en/manual/installation/install_2.png){width="550"}

|Pré-requisito|Versão mínima|Descrição|
|--------------|---------------|-----------|
|*PHP - Versão*|5.4.0|<|
|*PHP - Opção memory\_limit*|128MB|No php.ini:<br>memory\_limit = 128M|
|*PHP - Opção post\_max\_size*|16MB|No php.ini:<br>post\_max\_size = 16M|
|*PHP - Opção upload\_max\_filesize*|2MB|No php.ini:<br>upload\_max\_filesize = 2M|
|*PHP - Opção max\_execution\_time*|300 segundos (valores permitidos: 0 e -1)|No php.ini:<br>max\_execution\_time = 300|
|*PHP - Opção max\_input\_time*|300 segundos (valores permitidos: 0 e -1)|No php.ini:<br>max\_input\_time = 300|
|*PHP - Opção session.auto\_start*|precisa estar inativo|No php.ini:<br>session.auto\_start = 0.|
|*Suporte a banco de dados*|Um destes: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite|Um dos módulos deverá estar instalado:<br>ibm\_db2, mysql, oci8, pgsql, sqlite3|
|*bcmath*|<|php-bcmath|
|*mbstring*|<|php-mbstring|
|*PHP - Opção mbstring.func\_overload*|precisa estar desabilitado|No php.ini:<br>mbstring.func\_overload = 0.|
|*PHP - Opção always\_populate\_raw\_post\_data*|Valor obrigatório: -1|Necessário apenas para versão do PHP superior a 5.6.0.<br>No php.ini:<br>always\_populate\_raw\_post\_data = -1|
|*sockets*|<|php-net-socket. Necessário para o suporte a script de usuário.|
|*gd*|2.0 ou superior|php-gd. Extensão PHP GD precisa suportar imagens PNG (*--with-png-dir*), JPEG (*--with-jpeg-dir*) images e FreeType 2 (*--with-freetype-dir*).|
|*libxml*|2.6.15|php-xml ou php5-dom|
|*xmlwriter*|<|php-xmlwriter|
|*xmlreader*|<|php-xmlreader|
|*ctype*|<|php-ctype|
|*session*|<|php-session|
|*gettext*|<|php-gettext<br>Desde o Zabbix 2.2.1, a extensão PHP gettext não é um requisito obrigatório. Se gettext não estiver instalado a interface web irá funcionar, entretanto, a tradução de idiomas não estará funcional.|

Pré-requisitos opcionais poderão estar presentes na lista. Um
pré-requisito opcional será apresentado na cor laranja e terá o estado
de *Alerta*. A falha neste tipo de parâmetro não bloqueia o assistente
de configuração.

::: noteimportant
Se for necessária a alteração de permissionamento
do usuário ou grupo de usuários do Apache, estas permissões deverão ser
verificadas manualmente sob pena da configuração não
continuar.
:::

##### Passo 3

Informe os detalhes de conexão com o banco de dados do Zabbix. O banco
já deverá ter sido criado.

![](../../../assets/en/manual/installation/install_3.png){width="550"}

##### Passo 4

Informe os dados do Zabbix Server.

![](../../../assets/en/manual/installation/install_4.png){width="550"}

##### Passo 5

Revisão de configurações.

![](../../../assets/en/manual/installation/install_5.png){width="550"}

##### Passo 6

Baixe o arquivo de configuração gerado e o instale dentro do diretório
**conf/** que existe no local para onde você copiou os arquivos PHP do
Zabbix.

![](../../../assets/en/manual/installation/install_6.png){width="550"}

![](../../../assets/en/manual/installation/saving_zabbix_conf.png){width="350"}

::: notetip
Se o servidor web (Apache ou outro) tiver permissão de
gravação ao diretório **conf/** o assistente de configuração já irá
criar o arquivo para você.
:::

##### Passo 7

Finalizar a instalação.

![](../../../assets/en/manual/installation/install_7.png){width="550"}

##### Passo 8

A interface web do Zabbix está pronta para uso! O usuário e senha padrão
são: **Admin** / **zabbix**.

![](../../../assets/en/manual/quickstart/login.png){width="350"}

Pode ser útil a leitura da documentação: [guia rápido do
Zabbix](/pt/manual/quickstart/login).

### Veja também

1.  [Como configurar memória compartilhada para os daemons do
    Zabbix](http://www.zabbix.org/wiki/How_to/configure_shared_memory)
