[comment]: # translation:outdated

[comment]: # ({5f151568-af2eaf2f})
# 3 Instalación desde el código fuente

Es posible obtener la versión más reciente de Zabbix si realizamos la compilación desde el
código fuente.

Aquí puede encontrar un tutorial paso a paso de cómo realizar la instalación de 
Zabbix desde el código fuente.

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

[comment]: # ({0040d992-0040d992})
#### - Instalación de los demonios Zabbix

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

[comment]: # ({4ad39588-8cc2c1b1})
##### 1 Descargue el archivo fuente

Vaya a la [página de descarga de Zabbix] (http://www.zabbix.com/download_sources)
y descargue el archivo fuente. Una vez descargado, extraiga las fuentes,
ejecutando:

    $ tar -zxvf zabbix-7.0.0.tar.gz

::: notetip
Ingrese la versión correcta de Zabbix en el comando. Debería
coincidir con el nombre del archivo descargado.
:::

[comment]: # ({/4ad39588-8cc2c1b1})

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

##### 2 Crear la cuenta usuario 

Es necesario tener una cuenta de usuario sin privilegios para todos los 
procesos del demonio Zabbix. Si el demonio Zabbix es iniciado desde 
una cuenta de usuario sin privilegios, los procesos correran como ese usuario.

Sin embargo, si el demonio es iniciado desde una cuenta 'root', los procesos 
cambiarán a ser ejecutados como una cuenta de usuario 'zabbix'. Para crear 
esa cuenta de usuario (en su propio grupo, "zabbix"), 

en sistemas basados en RedHat, ejecutar:

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

en sistemas basados en Debian, ejecutar: 

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

::: noteimportant
Los procesos Zabbix no necesitan un directorio home, por lo que no 
recomendamos crear dicho directorio. Sin embargo, si está usando alguna 
funcionalidad que lo requiera (por ejemplo, guardar las credenciales MySQL en 
`$HOME/.my.cnf`) tendrá la libertad de crearlo utilizando los siguientes
 comandos.\
\

En sistemas basados en RedHat, ejecutar:

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

En sistemas basados en Debian, ejecutar:

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


:::

No se requiere una cuenta de usuario separado para la 
instalación del Zabbix frontend.

Si el Zabbix [server](/manual/concepts/server) y el [agent](/manual/concepts/agent) están 
ejecutandose en la misma máquina, es recomendable utilizar cuentas de usuario diferentes 
tanto para ejecutar el server como para el agent. De lo contrario, si ambos se están ejecutando desde 
el mismo usuario, el agent podrá acceder al archivo de configuración del server y cualquier usuario 
con nivel de Admin en Zabbix facilmente podrá obtener, por ejemplo, la contraseña de la base de datos.

::: noteimportant
Ejecutar Zabbix como `root`, `bin`, o cualquier otra cuenta de usuario con permisos especiales 
es considerado un riesgo de seguridad
:::

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

[comment]: # ({06256db0-06256db0})
##### 3 Crear la base de datos de Zabbix

Es necesario tener una base de datos para los demonios Zabbix [server](/manual/concepts/server) y 
[proxy](/manual/concepts/proxy), así como para el Zabbix Frontend. La base de datos no es 
necesaria para ejecutar el Zabbix [agent](/manual/concepts/agent).

[Aquí puedes encontrar los scripts SQL](/manual/appendix/install/db_scripts) para crear 
el esquema de la base de datos, así como insertar el conjunto de datos. La base de 
datos para el Zabbix proxy necesita solo el esquema mientras que la base de datos para 
el Zabbix server requiere también contar con el conjunto de datos encima del esquema.

Una vez creada la base de datos de Zabbix, proceda con los siguientes pasos 
para poder compilar Zabbix.

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

[comment]: # ({6da4ab01-8ff1b41c})
##### 4 Configurar las fuentes

Se requiere C99 con extensiones GNU para construir el servidor Zabbix, el proxy Zabbix o el agente Zabbix.
Esta versión se puede especificar explícitamente configurando CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

::: noteclassic
Si realiza la instalación desde el [repositorio Git de Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
es necesario ejecutar primero:\

`./bootstrap.sh`
:::

Al configurar las fuentes para un servidor o proxy Zabbix, debe
especificar el tipo de base de datos que se utilizará. Sólo se puede utilizar un tipo de base de datos
compilado con un proceso servidor o  proxy a la vez.

Para ver todas las opciones de configuración admitidas, dentro del 
directorio fuente de Zabbix extraido, ejecute:

    ./configure --help

Para configurar las fuentes para un servidor y agente Zabbix, puede ejecutar
algo como:

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

Para configurar las fuentes para un servidor Zabbix (con PostgreSQL, etc.),
puede ejecutar:

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

Para configurar las fuentes para un proxy Zabbix (con SQLite, etc.), puede
ejecutar:

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

Para configurar las fuentes para un agente Zabbix, puede ejecutar:

    ./configure --enable-agent

o, para el agente 2 de Zabbix:

    ./configure --enable-agent2

::: noteclassic
Un entorno Go configurado con una [versión Go] (https://go.dev/doc/devel/release#policy) soportada es necesario para
construir el agente Zabbix 2. Ver
[go.dev](https://go.dev/doc/install) para las instrucciones de instalación.
:::

Notas sobre las opciones de compilación:

-   Se compilan las utilidades de línea de comandos zabbix\_get y zabbix\_sender
    si se utiliza la opción --enable-agent.
-   Se requieren las opciones de configuración --with-libcurl y --with-libxml2
    para monitoreo de máquinas virtuales; --with-libcurl también es necesario para
    Autenticación SMTP y 
    [métricas](/manual/config/items/itemtypes/zabbix_agent) agente Zabbix `web.page.*`. 
   Tenga en cuenta que se [requiere](/manual/installation/requirements) cURL
    7.20.0 o superior con la opción de configuración --with-libcurl.
-   Zabbix siempre compila con la biblioteca PCRE;
    instalarlo no es opcional. --with-libpcre=\[DIR\] solo permite
    apuntar a un directorio base de instalación específico, en lugar de buscar
    a través de una serie de lugares comunes para los archivos libpcre.
-   Puede utilizar el indicador --enable-static para vincular bibliotecas estáticamente.
    Si planea distribuir archivos binarios compilados entre diferentes servidores,
    debes usar esta bandera para hacer que estos binarios funcionen sin necesidad
    bibliotecas. Tenga en cuenta que --enable-static no funciona en
    [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html).
-   No se recomienda utilizar la opción --enable-static al compilar el
    servidor. Para construir el servidor estáticamente, 
    se necesita una versión estática de cada biblioteca externa. No hay una comprobación
    estricta de eso en el script de configuración.
-   Agregar la ruta opcional al archivo de configuración de MySQL
    --with-mysql=/<ruta\_al\_el\_archivo>/mysql\_config para seleccionar
    la biblioteca cliente MySQL deseada cuando sea necesario utilizar una
    que no se encuentra en la ubicación predeterminada. Es útil cuando hay
    varias versiones de MySQL o MariaDB instaladas.
    junto con MySQL en el mismo sistema.
-   Utilice el indicador --with-oracle para especificar la ubicación de la API de OCI.

::: noteimportant
 Si ./configure falla debido a que faltan bibliotecas o
alguna otra circunstancia, consulte el archivo `config.log` para obtener más información
sobre el error. Por ejemplo, si falta `libssl`, el mensaje inmediato
de error puede ser engañoso:

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

Mientras que `config.log` tiene una descripción más detallada:

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


:::

Ver también:

- [Compilando Zabbix con soporte de 
    cifrado](/manual/encryption#compiling_zabbix_with_encryption_support)
    para soporte de cifrado
-   [Problemas
    conocidos](/manual/installation/known_issues/compilation_issues#compiling_zabbix_agent_on_hp-ux)
    con la compilación del agente Zabbix en HP-UX

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

[comment]: # ({b1519dc7-08edd3dc})
##### 5 Compilar e instalar todo

::: noteclassic
Si se instala desde el [repositorio Git de Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse) 
es necesario ejecutar primero lo siguiente:

`$ make dbschema`  
:::

    make install

Este paso debe ejecutarse con un usuario con los permisos suficientes (por lo general 
'root', o usando `sudo`).

Cuando ejecutamos `make install` los binarios de los demonios serán instalados en /usr/local/sbin 
para (zabbix\_server, zabbix\_agentd, zabbix\_proxy) y /usr/local/bin para los binarios de los 
clientes (zabbix\_get, zabbix\_sender).

::: noteclassic
Para especificar una ubicación distinta a /usr/local, use el parámetro --prefix en el paso 
previo correspondiente a la configuración del código fuente, por ejemplo
--prefix=/home/zabbix. En este caso los binarios del demonio serán instalados 
bajo <prefix>/sbin, mientras las utilidades bajo <prefix>/bin. Las páginas del 
manual serán instaladas debajo de <prefix>/share.
:::

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

[comment]: # ({f36d53db-112b74f7})
##### 6 Revisar y editar archivos de configuración

-   editar el archivo de configuración del Zabbix agent
    **/usr/local/etc/zabbix\_agentd.conf**

Es necesario configurar este archivo en cada equipo con zabbix\_agentd instalado.

De la misma forma es necesario especificar la **dirección IP ** del servidor Zabbix en el archivo.
Todas las conexiones desde otros equipos serán rechazadas.

-   editar el archivo de configuración del servidor Zabbix
    **/usr/local/etc/zabbix\_server.conf**

Se requiere especificar el nombre de la base de datos, así como el usuario y contraseña (en caso de ser necesario)

El resto de los parámetros por defecto se ajustarán a sus necesidades en caso de
tener una instalación pequeña (hasta diez equipos monitoreados). Sin embargo es necesario
cambiar los parámetros por defecto si requiere mejorar el desempeño del servidor Zabbix 
(o proxy). Para más detalles consulte la sección de [ajustes de desempeño](/manual/appendix/performance_tuning).

-   si ha instalado el proxy Zabbix, edite el archivo de configuración 
    **/usr/local/etc/zabbix\_proxy.conf**

Se requiere especificar la dirección IP del servidor y el nombre de equipo del proxy (debe ser reconocido 
por el servidor), así como el nombre de la base de datos, el usuario y contraseña (en caso de 
ser necesario).

::: noteclassic
Usando SQLite es necesario especificar la ubicación completa del archivo de la base 
de datos; usuario DB y contraseña no son requeridos.
:::

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

[comment]: # ({78fd219b-bbdd82ac})
##### 7 Ejecutar los demonios

Ejecute zabbix\_server en el lado del servidor.

    zabbix_server

::: noteclassic
Asegúrese de que su sistema permita la asignación de 36 MB (o un
un poco más) de memoria compartida; de lo contrario, es posible que el servidor no se inicie y 
verá "No se puede asignar memoria compartida para <tipo de caché>". en
el archivo de registro del servidor. Esto puede suceder en FreeBSD, Solaris 8.\
:::

Ejecute zabbix\_agentd en todas las máquinas monitoreadas.

    zabbix_agentd

::: noteclassic
Asegúrese de que su sistema permita la asignación de 2 MB de
memoria compartida; de lo contrario, es posible que el agente no se inicie y verá
"No se puede asignar memoria compartida al recopilador" en el archivo de registro del agente.
Esto puede suceder en Solaris 8.
:::

Si ha instalado el proxy Zabbix, ejecute zabbix\_proxy.

    zabbix_proxy

[comment]: # ({/78fd219b-bbdd82ac})

[comment]: # ({c9f154ca-c9f154ca})
#### - Instalar la interfaz web de Zabbix

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

[comment]: # ({d7606cb6-ed4e56ce})
##### Copiar los archivos PHP

El Zabbix frontend está escrito en PHP, así que para ejecutarlo es necesario contar con 
un servidor web soportado. La instalación se realiza simplemente copiando los archivos PHP
desde el directorio ui al directorio de documentos HTML del servidor web.

Algunas de las ubicaciones comunes para el directorio documentos HTML en servidores 
web Apache incluye:

-   /usr/local/apache2/htdocs (directorio por defecto cuando se instala Apache
    desde el código fuente)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Es altamente recomendable utilizar un subdirectorio en lugar del directorio HTML raíz.
Para crear el subdirectorio y copiar los archivos del Zabbix frontend en el, ejecute
los siguientes comandos, remplazando el directorio actual:

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

Si planea utilizar algún idioma diferente al inglés, vea [Instalación de 
idiomas adicionales para el frontend](/manual/appendix/install/locales) para 
las instrucciones.

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

[comment]: # ({63583cbb-63583cbb})
##### Instalar el frontend

Por favor vea la página [Instalar la interfaz web de Zabbix](/manual/installation/frontend)
para información referente al asistente de instalación del Zabbix frontend.

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

[comment]: # ({new-c8da42bb})
#### - Installing Zabbix agent 2 loadable plugins

Installing Zabbix agent 2 loadable plugins is only required if you want to monitor targets not covered by built-in plugins (e.g., MongoDB servers or clusters, PostgreSQL and its forks, etc.).
See the full list of [loadable plugins](/manual/extensions/plugins#loadable-plugins) and [built-in plugins](/manual/extensions/plugins#built-in-plugins).

::: noteimportant
Before installing a plugin, please check its README file.
It may contain specific requirements and installation instructions.
:::

To install from sources, first [download](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) and extract the loadable plugin source archive.

To compile the plugin, navigate to the extracted plugin directory and run `make`:

    make

::: noteclassic
A [supported Go version](/manual/installation/requirements#agent-2) is required for building Zabbix agent 2.
:::

The plugin executable may be placed anywhere as long as it is loadable by Zabbix agent 2.
Specify the path to the plugin binary in the plugin configuration file, e.g. in postgresql.conf for the [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin) plugin:

    Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

The path to the plugin configuration file must be specified in the Include parameter of the Zabbix agent 2 configuration file:

    Include=/path/to/plugin/configuration/file/postgresql.conf

Proceed to [setup](/manual/extensions/plugins#configuring-plugins) for more details on configuring plugins.

Loadable plugins provided by Zabbix use simple makefiles with the following build targets:

-   `make` - build the plugin
-   `make clean` - delete all files that are created by building the plugin
-   `make check` - run self-tests (requires a real monitoring target, e.g., a PostgreSQL database)
-   `make style` - check Go code style with `golangci-lint`
-   `make format` - format Go code with `go fmt`
-   `make dist` - create a source archive including all dependencies

[comment]: # ({/new-c8da42bb})

[comment]: # ({e7936db4-1a519c06})
#### - Instalación de la puerta de enlace Java

Es necesario instalar Java Gateway solo si desea monitorear 
aplicaciones JMX. La puerta de enlace Java es liviana y no requiere una
base de datos.

Para instalarla desde las fuentes, primero
[descargue](/manual/installation/install#download_the_source_archive) y
extraiga el archivo fuente.

Para compilar la puerta de enlace Java, ejecute el script `./configure` con la
opción `--enable-java`. Es recomendable que especifique la opción `--prefix`
para solicitar una ruta de instalación distinta a la predeterminada /usr/local,
porque la instalación de Java Gateway creará un árbol de directorios completo, no
sólo un único ejecutable.

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

Para compilar y empaquetar la puerta de enlace Java en un archivo JAR, ejecute `make`. Tenga en cuenta
que para este paso necesitará los ejecutables `javac` y `jar` en su
ruta.

    make

Ahora tiene un archivo zabbix-java-gateway-$VERSION.jar en
src/zabbix\_java/bin. Si se siente cómodo ejecutando Java Gateway
desde src/zabbix\_java en el directorio de distribución, entonces puedes
continúe con las instrucciones para configurar y ejecutar la [
puerta de enlace Java](/manual/java/from_sources#overview-of-files).
De lo contrario, asegúrese de tener suficientes privilegios y ejecute "make install".

    make install

Continúe con la [configuración](/manual/concepts/java/from_sources) para obtener más detalles
sobre la configuración y ejecución de la puerta de enlace Java.

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

[comment]: # ({2060a40c-76c01064})
#### - Instalación del servicio web Zabbix

Solo es necesario instalar el servicio web Zabbix si desea utilizar
[informes programados
](/manual/web_interface/frontend_sections/reports/scheduled).

Para instalarlo desde las fuentes, primero
[descargue](/manual/installation/install#download_the_source_archive) y
extraiga el archivo fuente.

Para compilar el servicio web Zabbix, ejecute el script `./configure` con la
opción `--enable-webservice`.

::: noteclassic
Se requiere un entorno configurado de una versión [Go](https://go.dev/doc/install)
1.13+ para crear el servicio web Zabbix.

:::

Ejecute zabbix\_web\_service en la máquina donde está instalado el servicio web:

    zabbix_web_service

Continúe con la [configuración](/manual/appendix/install/web_service) para obtener más detalles
sobre cómo configurar la generación de informes programados.

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

