[comment]: # aside: 2

[comment]: # ({b7644ee6-af2eaf2f})
# Installation à partir des sources

Vous pouvez obtenir la toute dernière version de Zabbix en la compilant à partir des sources. 
Voir aussi [Obtention du code source de Zabbix](#getting-zabbix-source-code).

Un tutoriel étape par étape pour installer Zabbix à partir des sources est
fourni ici.

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

[comment]: # ({a81f3302-0040d992})
#### Installation des démons Zabbix

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

[comment]: # ({14f3e814-8cc2c1b1})
##### 1 Téléchargez l’archive des sources

Accédez à la [page de téléchargement de Zabbix](http://www.zabbix.com/download_sources#pre-release)
et téléchargez l’archive des sources. Une fois le téléchargement terminé, extrayez les sources
en exécutant :

    tar -zxvf zabbix-8.0.0.tar.gz

::: notetip
Saisissez la version correcte de Zabbix dans la commande. Elle doit
correspondre au nom de l’archive téléchargée.
:::

[comment]: # ({/14f3e814-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2 Créer un compte utilisateur

Tous les processus daemon Zabbix s’exécutent sous des utilisateurs système non privilégiés.  
Si un daemon Zabbix est démarré depuis un compte utilisateur non privilégié, il continuera à s’exécuter sous cet utilisateur.

Dans la configuration par défaut, si un daemon est démarré en tant que `root`, il basculera vers le compte utilisateur `zabbix`, qui doit donc exister.
Pour créer un utilisateur système et un groupe `zabbix`, exécutez les commandes indiquées ci-dessous.

Système basé sur RedHat :

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

Système basé sur Debian :

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

Il n’est pas nécessaire de créer un compte utilisateur distinct pour le frontend Zabbix.

###### Recommandation de sécurité

Si le [server](/manual/concepts/server) et l’[agent](/manual/concepts/agent) Zabbix s’exécutent sur la même machine, il est recommandé de les exécuter sous **des comptes utilisateur distincts**.
Le fait d’exécuter les deux sous le même utilisateur permet à l’agent d’accéder au fichier de configuration du serveur, ce qui pourrait exposer des informations sensibles, comme le mot de passe de la base de données, à tout utilisateur de niveau Admin dans Zabbix.

::: noteimportant
Exécuter Zabbix en tant que `root`, `bin` ou tout autre compte disposant de privilèges spéciaux constitue un risque de sécurité. 
:::

###### Répertoire personnel (facultatif)

Les processus Zabbix n’ont pas besoin d’un répertoire personnel ; sa création n’est donc généralement pas recommandée.
Cependant, si vous avez besoin d’une fonctionnalité nécessitant un répertoire personnel (par exemple, pour stocker les identifiants MySQL dans $HOME/.my.cnf), vous pouvez le créer à l’aide des commandes indiquées ci-dessous. 

Sur les systèmes basés sur RedHat, exécutez :

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

Sur les systèmes basés sur Debian, exécutez :

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

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

[comment]: # ({06256db0-06256db0})
##### 3 Créer la base de données Zabbix

Pour les démons Zabbix [server](/manual/concepts/server) et
[proxy](/manual/concepts/proxy), ainsi que pour le frontend Zabbix, une
base de données est requise. Elle n’est pas nécessaire pour exécuter l’
[agent](/manual/concepts/agent) Zabbix.

Des [scripts SQL sont fournis](/manual/appendix/install/db_scripts) pour
créer le schéma de la base de données et insérer le jeu de données. La base de données du proxy Zabbix
nécessite uniquement le schéma, tandis que la base de données du serveur Zabbix requiert
également le jeu de données en plus du schéma.

Après avoir créé une base de données Zabbix, passez aux étapes suivantes de
la compilation de Zabbix.

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

[comment]: # ({40504a3b-8ff1b41c})
##### 4 Configurer les sources

C99 avec les extensions GNU est requis pour compiler le serveur Zabbix, le proxy Zabbix ou l'agent Zabbix.
Cette version peut être spécifiée explicitement en définissant CFLAGS="-std=gnu99" :

    export CFLAGS="-std=gnu99"

::: noteclassic
Si vous installez depuis le [dépôt Git Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
il est nécessaire d'exécuter d'abord :

`./bootstrap.sh`
:::

Lors de la configuration des sources pour un serveur Zabbix ou un proxy Zabbix, vous devez
indiquer le type de base de données à utiliser. Un seul type de base de données peut être
compilé avec un processus de serveur ou de proxy à la fois.

Pour voir toutes les options de configuration prises en charge, exécutez dans le répertoire
des sources Zabbix extraites :

    ./configure --help

Pour configurer les sources pour un serveur Zabbix et un agent Zabbix, vous pouvez exécuter
une commande comme :

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

Pour configurer les sources pour un serveur Zabbix (avec PostgreSQL, etc.), vous pouvez
exécuter :

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

Pour configurer les sources pour un proxy Zabbix (avec SQLite, etc.), vous pouvez
exécuter :

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

Pour configurer les sources pour un agent Zabbix, vous pouvez exécuter :

    ./configure --enable-agent

ou, pour Zabbix agent 2 :

    ./configure --enable-agent2

::: noteclassic
Une [version de Go prise en charge](/manual/installation/requirements#agent-2) doit être installée pour compiler Zabbix agent 2.
:::

Remarques sur les options de compilation :

-   `--enable-agent` - compile l'agent Zabbix, ainsi que les utilitaires en ligne de commande [Zabbix get](/manual/concepts/get) et [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` - requis pour la supervision des machines virtuelles, l'authentification SMTP et les [éléments Zabbix agent](/manual/config/items/itemtypes/zabbix_agent) `web.page.*`. Voir aussi : [Exigences](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - requis pour la supervision des machines virtuelles.
-   `--with-libpcre2[=DIR]` - Zabbix est toujours compilé avec la bibliothèque PCRE2 ; cette option permet uniquement de spécifier un chemin d'installation PCRE2 personnalisé.
-   `--with-mysql=/path/to/mysql_config` - spécifie le chemin vers une configuration particulière de bibliothèque cliente MySQL. Utile lorsque plusieurs versions de MySQL ou MariaDB sont installées.
-   `--enable-static` - lie les bibliothèques statiquement (non pris en charge sur [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Utilisez cette option si vous prévoyez de distribuer des binaires compilés sur des systèmes ne disposant pas des bibliothèques requises. Non recommandé lors de la compilation du serveur Zabbix. Pour compiler le serveur statiquement, une version statique de chaque bibliothèque externe est requise. Le script configure ne vérifie pas cela automatiquement.
-   `--with-stacksize=<value>` - définit la taille de pile par thread en kilo-octets (par exemple, `--with-stacksize=512`). Vous pouvez augmenter cette valeur si Zabbix se bloque ou se fige en raison de débordements de pile (par exemple, lors du [prétraitement](/manual/config/items/preprocessing) sur des systèmes avec de faibles limites par défaut de pile de thread).

::: noteimportant
Si `./configure` échoue en raison de bibliothèques manquantes ou d'autres problèmes, veuillez consulter le fichier `config.log` pour obtenir des informations détaillées sur l'erreur.

Par exemple, si `libssl` est manquante, le message d'erreur immédiat peut être trompeur :

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

Dans ce cas, `config.log` révèle la cause réelle :

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

:::

Voir aussi :

-   [Compiler Zabbix avec la prise en charge du chiffrement](/manual/encryption#compiling-zabbix-with-encryption-support)
-   Problèmes de [compilation](/manual/installation/install/sources#compilation-issues) connus

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

[comment]: # ({f38586cb-08edd3dc})
##### 5 Construire et installer l'ensemble

::: noteclassic
Si l'installation se fait depuis le [dépôt Git Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
il est nécessaire d'exécuter d'abord :

`$ make dbschema` 
:::

    make install

Cette étape doit être exécutée par un utilisateur disposant de permissions suffisantes (généralement
`root`, ou en utilisant `sudo`).

L'exécution de `make install` installera par défaut les binaires du démon
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) dans /usr/local/sbin et
les binaires client (zabbix\_get, zabbix\_sender) dans /usr/local/bin.

::: noteclassic
Pour spécifier un emplacement différent de `/usr/local`, utilisez une
clé `--prefix` à l'étape précédente de configuration des sources, par exemple
`--prefix=/home/zabbix`. Dans ce cas, les binaires du démon seront installés
dans `<prefix>/sbin`, tandis que les utilitaires seront installés dans `<prefix>/bin`. Les pages de manuel seront installées dans `<prefix>/share`.
:::

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

[comment]: # ({f36d53db-112b74f7})
##### 6 Vérifier et modifier les fichiers de configuration

-   modifiez le fichier de configuration de l'agent Zabbix
    **/usr/local/etc/zabbix\_agentd.conf**

Vous devez configurer ce fichier pour chaque hôte sur lequel zabbix\_agentd
est installé.

Vous devez spécifier l'**adresse IP** du serveur Zabbix dans le fichier.
Les connexions provenant d'autres hôtes seront refusées.

-   modifiez le fichier de configuration du serveur Zabbix
    **/usr/local/etc/zabbix\_server.conf**

Vous devez spécifier le nom de la base de données, l'utilisateur et le mot de passe (le cas échéant).

Le reste des paramètres conviendra avec leurs valeurs par défaut si vous avez
une petite installation (jusqu'à dix hôtes supervisés). Vous devriez toutefois modifier les
paramètres par défaut si vous souhaitez maximiser les performances du serveur Zabbix
(ou du proxy).

-   si vous avez installé un proxy Zabbix, modifiez le fichier de configuration
    du proxy **/usr/local/etc/zabbix\_proxy.conf**

Vous devez spécifier l'adresse IP du serveur et le nom d'hôte du proxy (qui doit être connu
du serveur), ainsi que le nom de la base de données, l'utilisateur et le mot de passe (le cas
échéant).

::: noteclassic
Avec SQLite, le chemin complet vers le fichier de base de données doit être
spécifié ; l'utilisateur et le mot de passe de la base de données ne sont pas requis.
:::

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

[comment]: # ({67632a65-bbdd82ac})
##### 7 Démarrer les daemons

Exécutez zabbix\_server du côté serveur.

    zabbix_server

::: noteclassic
Assurez-vous que votre système autorise l'allocation de 36 Mo (ou un
peu plus) de mémoire partagée, sinon le serveur risque de ne pas démarrer et vous
verrez "Cannot allocate shared memory for <type of cache>." dans le
fichier journal du serveur. Cela peut se produire sur FreeBSD, Solaris 8.
:::

Exécutez zabbix\_agentd sur toutes les machines surveillées.

    zabbix_agentd

::: noteclassic
Assurez-vous que votre système autorise l'allocation de 2 Mo de
mémoire partagée, sinon l'agent risque de ne pas démarrer et vous verrez
"Cannot allocate shared memory for collector." dans le fichier journal de l'agent.
Cela peut se produire sur Solaris 8.
:::

Si vous avez installé Zabbix proxy, exécutez zabbix\_proxy.

    zabbix_proxy

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

[comment]: # ({8d29e485-c9f154ca})
#### Installation de l’interface web Zabbix

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

[comment]: # ({57b0b3e0-ed4e56ce})
##### Copie des fichiers PHP

L'interface web de Zabbix est écrite en PHP ; un serveur web prenant en charge PHP est donc nécessaire pour l'exécuter.
L'installation consiste simplement à copier les fichiers PHP du répertoire ui vers le répertoire des documents HTML du serveur web.

Les emplacements courants des répertoires de documents HTML pour les serveurs web Apache incluent :

-   /usr/local/apache2/htdocs (répertoire par défaut lors de l'installation d'Apache à partir des sources)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Il est recommandé d'utiliser un sous-répertoire plutôt que la racine HTML.
Pour créer un sous-répertoire et y copier les fichiers de l'interface web de Zabbix, exécutez les commandes suivantes en remplaçant <htdocs> par le répertoire réel :

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

Si vous prévoyez d'utiliser une autre langue que l'anglais, consultez [Installation de langues supplémentaires pour l'interface web](/manual/appendix/install/locales) pour obtenir des instructions.

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

[comment]: # ({ae1b267f-63583cbb})
##### Installation de l’interface web

Veuillez consulter la page [Installation de l’interface web](/manual/installation/frontend) pour obtenir des informations sur l’assistant d’installation de l’interface web de Zabbix.

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

[comment]: # ({97a2e459-c8da42bb})
#### Installation des plugins chargeables de Zabbix agent 2

L'installation des plugins chargeables de Zabbix agent 2 n'est nécessaire que si vous souhaitez surveiller des cibles non couvertes par les plugins intégrés (par exemple, des serveurs ou des clusters MongoDB, PostgreSQL et ses dérivés, etc.).
Consultez la liste complète des [plugins chargeables](/manual/concepts/agent2/loadable-plugins) et des [plugins intégrés](/manual/concepts/agent2/built-in-plugins).

::: noteimportant
Avant d'installer un plugin, veuillez consulter son fichier README.
Il peut contenir des exigences spécifiques et des instructions d'installation.
:::

Pour installer depuis les sources, commencez par [télécharger](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) et extraire l'archive source du plugin chargeable.

Pour compiler le plugin, accédez au répertoire du plugin extrait et exécutez `make` :

    make

::: noteclassic
Une [version de Go prise en charge](/manual/installation/requirements#agent-2) doit être installée pour compiler les plugins chargeables de Zabbix agent 2.
:::

L'exécutable du plugin peut être placé n'importe où, à condition qu'il puisse être chargé par Zabbix agent 2.
Spécifiez le chemin vers le binaire du plugin dans le fichier de configuration du plugin, par exemple dans postgresql.conf pour le plugin [PostgreSQL](/manual/concepts/agent2/agent2_params_plugin/postgresql_plugin) :

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

Le chemin vers le fichier de configuration du plugin doit être spécifié dans le paramètre Include du fichier de configuration de Zabbix agent 2 :

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

Passez à la [configuration](/manual/concepts/agent2/configuring-plugins) pour plus de détails sur la configuration des plugins.

Les plugins chargeables fournis par Zabbix utilisent des makefiles simples avec les cibles de compilation suivantes :

-   `make` - compiler le plugin
-   `make clean` - supprimer tous les fichiers créés lors de la compilation du plugin
-   `make check` - exécuter les auto-tests (nécessite une vraie cible de surveillance, par exemple une base de données PostgreSQL)
-   `make style` - vérifier le style du code Go avec `golangci-lint`
-   `make format` - formater le code Go avec `go fmt`
-   `make dist` - créer une archive source incluant toutes les dépendances

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

[comment]: # ({760e992b-1a519c06})
#### Installation de Java gateway

Il est nécessaire d’installer Java gateway uniquement si vous souhaitez surveiller des applications JMX. Java gateway est léger et ne nécessite pas de base de données.

Pour installer à partir des sources, commencez par [télécharger](/manual/installation/install/sources#download-the-source-archive) et extraire l’archive des sources.

Pour compiler Java gateway, exécutez le script `./configure` avec l’option `--enable-java`. Il est recommandé de spécifier l’option `--prefix` afin de demander un chemin d’installation autre que le chemin par défaut /usr/local, car l’installation de Java gateway créera toute une arborescence de répertoires, et pas seulement un seul exécutable.

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

Pour compiler et empaqueter Java gateway dans un fichier JAR, exécutez `make`. Notez que pour cette étape, vous aurez besoin des exécutables `javac` et `jar` dans votre chemin.

    make

Vous disposez maintenant d’un fichier zabbix-java-gateway-$VERSION.jar dans src/zabbix\_java/bin. Si l’exécution de Java gateway depuis src/zabbix\_java dans le répertoire de distribution vous convient, vous pouvez alors passer aux instructions de configuration et d’exécution de [Java gateway](/manual/java/from_sources#overview-of-files). Sinon, assurez-vous de disposer de privilèges suffisants et exécutez `make install`.

    make install

Passez à la [configuration](/manual/concepts/java/from_sources) pour plus de détails sur la configuration et l’exécution de Java gateway.

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

[comment]: # ({1849c64a-76c01064})
#### Installation du service web Zabbix

L'installation du service web Zabbix n'est requise que si vous souhaitez utiliser les [rapports planifiés](/manual/web_interface/frontend_sections/reports/scheduled).

Pour l'installer à partir des sources, commencez par [télécharger](/manual/installation/install/sources#download-the-source-archive) et extraire l'archive des sources.

Pour compiler le service web Zabbix, exécutez le script `./configure` avec l'option `--enable-webservice`.

::: noteclassic
Une [version de Go prise en charge](/manual/installation/requirements#agent-2) doit être installée pour compiler le service web Zabbix.
:::

Exécutez zabbix\_web\_service sur la machine où le service web est installé :

    zabbix_web_service

Passez à la [configuration](/manual/appendix/install/web_service) pour plus de détails sur la configuration de la génération des rapports planifiés.

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

[comment]: # ({786834b2-e88f42af})
#### Obtention du code source de Zabbix

Il existe plusieurs façons d’obtenir le code source de Zabbix :

-   Vous pouvez [télécharger](https://www.zabbix.com/download_sources#pre-release) les
    versions stables publiées depuis le site officiel de Zabbix
-   Vous pouvez [télécharger](https://www.zabbix.com/developers) les compilations nightly
    depuis la page développeur du site officiel de Zabbix
-   Vous pouvez obtenir la dernière version de développement depuis le système de dépôt
    de code source Git :
    -   L’emplacement principal du dépôt complet est
        <https://git.zabbix.com/scm/zbx/zabbix.git>
    -   La branche master et les versions prises en charge sont également mises en miroir sur Github à l’adresse
        <https://github.com/zabbix/zabbix>

Un client Git doit être installé pour cloner le dépôt. Le paquet officiel
du client Git en ligne de commande s’appelle généralement **git** dans les
distributions. Pour l’installer, par exemple, sur Debian/Ubuntu, exécutez :

    sudo apt-get update
    sudo apt-get install git

Pour récupérer l’ensemble du code source de Zabbix, placez-vous dans le répertoire
où vous souhaitez enregistrer le code, puis exécutez :

    git clone https://git.zabbix.com/scm/zbx/zabbix.git

[comment]: # ({/786834b2-e88f42af})

[comment]: # ({0104663d-7ceec24f})
#### Problèmes de compilation

Voici les problèmes connus concernant la compilation de Zabbix à partir des sources. Pour tous les autres cas, consultez la page [Problèmes connus](/manual/installation/known_issues).

[comment]: # ({/0104663d-7ceec24f})

[comment]: # ({568e5f9a-c904d9ff})
##### Bibliothèque dans un emplacement non standard

Zabbix vous permet de spécifier une bibliothèque située dans un emplacement non standard. Dans l’exemple ci-dessous, Zabbix exécutera `curl-config` depuis l’emplacement non standard spécifié et utilisera sa sortie pour déterminer la bonne version de libcurl à utiliser.

    $ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Cela fonctionnera si c’est la seule version de libcurl installée sur le système, mais ce ne sera pas forcément le cas si une autre version de libcurl est installée dans un emplacement standard (par le gestionnaire de paquets, par exemple). C’est notamment le cas lorsque vous avez besoin d’une version plus récente de la bibliothèque pour Zabbix et de l’ancienne pour d’autres applications.

Par conséquent, spécifier un composant dans un emplacement non standard ne fonctionnera pas toujours si le même composant existe également dans un emplacement standard.

Par exemple, si vous utilisez une version plus récente de libcurl installée dans `/usr/local` alors que le paquet libcurl est toujours installé, Zabbix peut sélectionner la mauvaise version et la compilation échouera :

    usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
    /tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
    collect2: error: ld returned 1 exit status

Ici, la fonction `curl_easy_header()` n’est pas disponible dans l’ancienne bibliothèque `/usr/lib/x86_64-linux-gnu/libcurl.so`, mais elle est disponible dans la plus récente `/usr/local/lib/libcurl.so`.

Le problème vient de l’ordre des options de l’éditeur de liens, et une solution consiste à spécifier le chemin complet vers la bibliothèque dans une variable LDFLAGS :

    $ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Notez l’option `-Wl,--no-as-needed`, qui peut être nécessaire sur certains systèmes (voir aussi : options d’édition de liens par défaut sur les systèmes [basés sur Debian](https://wiki.debian.org/ToolChain/DSOLinking)).

[comment]: # ({/568e5f9a-c904d9ff})

[comment]: # ({44720e40-78889065})
##### Taille de pile trop petite sur certains systèmes

Si Zabbix plante ou se fige en raison de débordements de pile, vous pouvez augmenter la taille de pile par thread à l’aide de l’option `--with-stacksize` lors de la [configuration des sources](/manual/installation/install/sources#configure-the-sources).
Ce problème peut survenir sur les systèmes dont les limites par défaut de pile de thread sont faibles, en particulier pendant le [prétraitement](/manual/config/items/preprocessing), où plusieurs threads sont créés.

L’exemple suivant définit la taille de pile à 512 Ko par thread :

```bash
./configure --enable-server --with-mysql --with-stacksize=512
```

Vous pouvez vérifier les limites de pile des threads du système à l’exécution à l’aide de la commande `ulimit -s` sur les systèmes basés sur Linux.

[comment]: # ({/44720e40-78889065})
