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

Vous pouvez obtenir la toute dernière version de Zabbix en la compilant à partir des sources.

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

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

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

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

[comment]: # ({0f408286-8cc2c1b1})
##### 1 Télécharger l'archive source

Accédez à la [page de téléchargement de Zabbix](http://www.zabbix.com/download_sources#74)
et téléchargez l'archive source. Une fois téléchargée, extrayez les sources
en exécutant :

    tar -zxvf zabbix-7.4.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]: # ({/0f408286-8cc2c1b1})

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

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

Dans la configuration par défaut, si un démon est démarré en tant que `root`, il basculera vers le compte utilisateur `zabbix`, qui doit être présent.
Pour créer un utilisateur et un groupe système `zabbix`, exécutez les commandes 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 séparé pour l'interface Zabbix.

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

Si le [serveur](/manual/concepts/server) Zabbix et l'[agent](/manual/concepts/agent) s'exécutent sur la même machine, il est recommandé de les faire fonctionner sous des **comptes utilisateur distincts**.
Les exécuter tous 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, telles que le mot de passe de la base de données, à tout utilisateur disposant des droits Admin dans Zabbix.

::: noteimportant
Exécuter Zabbix en tant que `root`, `bin` ou tout autre compte disposant de droits spéciaux présente un risque de sécurité. 
:::

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

Les processus Zabbix n'ont pas besoin d'un répertoire personnel, donc en créer un n'est généralement pas recommandé.
Cependant, si vous avez besoin d'une fonctionnalité qui requiert un répertoire personnel (par exemple, le stockage des identifiants MySQL dans $HOME/.my.cnf), vous pouvez le créer à l'aide des commandes 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 [serveur](/manual/concepts/server) et [proxy](/manual/concepts/proxy), tout comme pour l'interface Web, une base de données est nécessaire. Cela n’est pas nécessaire pour l'[agent](/manual/concepts/agent) Zabbix.

Des [scripts SQL sont fournis](/manual/appendix/install/db_scripts) pour créer le schéma de base de données et insérer l'ensemble de données. La base de données du proxy Zabbix n'a besoin que du schéma tandis que la base de données du serveur Zabbix requiert également l'ensemble de données au-dessus du schéma.

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

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

[comment]: # ({0383f3a7-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?at=refs%2Fheads%2Frelease%2F7.4),
il est nécessaire d'exécuter d'abord :

`./bootstrap.sh`
:::

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

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

    ./configure --help

Pour configurer les sources pour un serveur Zabbix et un agent, vous pouvez exécuter par exemple :

    ./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 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 surveillance des machines virtuelles, l'authentification SMTP et les [éléments d'agent Zabbix](/manual/config/items/itemtypes/zabbix_agent) `web.page.*`. Voir aussi : [Exigences](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - requis pour la surveillance des machines virtuelles.
-   `--with-libpcre2[=DIR]` - Zabbix compile toujours 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 la bibliothèque cliente MySQL. Utile lorsque plusieurs versions de MySQL ou MariaDB sont installées.
-   `--enable-static` - lie les bibliothèques de manière statique (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 à des systèmes ne disposant pas des bibliothèques requises. Déconseillé lors de la compilation du serveur Zabbix. Pour compiler le serveur de manière statique, 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 la pile par thread en kilo-octets (par exemple, `--with-stacksize=512`). Vous pouvez augmenter cette valeur si Zabbix plante ou se fige en raison de débordements de pile (par exemple, lors du [prétraitement](/manual/config/items/preprocessing) sur des systèmes dont les limites par défaut de pile de thread sont faibles).

::: 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/known_issues/compilation_issues) connus

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

[comment]: # ({e8cfa426-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?at=refs%2Fheads%2Frelease%2F7.4),
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
sous <prefix>/sbin, tandis que les utilitaires seront installés sous <prefix>/bin. Les pages de manuel
seront installées sous <prefix>/share.
:::

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

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

##### 6 Examiner et modifier les fichiers de configuration

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

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

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

-   éditez 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 (si vous en utilisez un).

Le reste des paramètres devrait vous convenir avec leurs valeurs par défaut si vous avez une petite installation (jusqu'à dix hôtes surveillés). Vous devrez cependant modifier les paramètres par défaut si vous souhaitez optimiser les performances du serveur Zabbix (ou du proxy).

-   Si vous avez installé un proxy Zabbix, éditez 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 (si vous en utilisez un).

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

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

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

Exécutez zabbix\_server 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 Zabbix est écrite en PHP, donc pour l'exécuter, un serveur web prenant en charge PHP est nécessaire.
L'installation se fait simplement en copiant 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 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 de l'interface](/manual/appendix/install/locales) pour obtenir les instructions.

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

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

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

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

[comment]: # ({8751cf7f-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/extensions/plugins#loadable-plugins) et des [plugins intégrés](/manual/extensions/plugins#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 à partir des 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 prise en charge de Go](/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.
Indiquez le chemin vers le binaire du plugin dans le fichier de configuration du plugin, par exemple dans postgresql.conf pour le plugin [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/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 section [configuration](/manual/extensions/plugins#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]: # ({/8751cf7f-c8da42bb})

[comment]: # ({c72922e4-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#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`
pour 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 exécutable unique.

    ./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 vous êtes à l'aise avec l'exécution de Java gateway
depuis src/zabbix\_java dans le répertoire de distribution, 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 d'avoir les privilèges suffisants et exécutez `make install`.

    make install

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

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

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

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

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

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

::: noteclassic
Une [version prise en charge de Go](/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

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

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

