[comment]: # ({af2eaf2f-af2eaf2f})
# 3 Installazione dai sorgenti

Puoi ottenere la versione più recente di Zabbix compilandola dai sorgenti.

Qui è disponibile una guida passo passo per installare Zabbix dai sorgenti.

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

[comment]: # ({a81f3302-0040d992})
#### Installazione dei daemon di Zabbix

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

[comment]: # ({0f408286-8cc2c1b1})
##### 1 Scarica l'archivio dei sorgenti

Vai alla [pagina di download di Zabbix](http://www.zabbix.com/download_sources#74)
e scarica l'archivio dei sorgenti. Una volta scaricato, estrai i sorgenti
eseguendo:

    tar -zxvf zabbix-7.4.0.tar.gz

::: notetip
Inserisci la versione corretta di Zabbix nel comando. Deve
corrispondere al nome dell'archivio scaricato.
:::

[comment]: # ({/0f408286-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2 Creare un account utente

Tutti i processi daemon di Zabbix vengono eseguiti con utenti di sistema non privilegiati.  
Se un daemon di Zabbix viene avviato da un account utente non privilegiato, continuerà a essere eseguito con quell'utente.

Nella configurazione predefinita, se un daemon viene avviato come `root`, passerà all'account utente `zabbix`, che deve essere presente.
Per creare un utente e un gruppo di sistema `zabbix`, eseguire i comandi elencati di seguito.

Sistema basato su RedHat:

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

Sistema basato su Debian:

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

Non è necessario creare un account utente separato per il frontend di Zabbix.

###### Raccomandazione di sicurezza

Se il [server](/manual/concepts/server) e l'[agent](/manual/concepts/agent) di Zabbix sono in esecuzione sulla stessa macchina, si consiglia di eseguirli con **account utente separati**.
Eseguirli entrambi con lo stesso utente consente all'agent di accedere al file di configurazione del server, il che potrebbe esporre informazioni sensibili, come la password del database, a qualsiasi utente con privilegi di livello Admin in Zabbix.

::: noteimportant
Eseguire Zabbix come `root`, `bin` o qualsiasi altro account con privilegi speciali rappresenta un rischio per la sicurezza. 
:::

###### Directory home (facoltativa)

I processi di Zabbix non richiedono una directory home, quindi in genere non è consigliato crearne una.
Tuttavia, se è necessaria una funzionalità che richiede una directory home (ad esempio, l'archiviazione delle credenziali MySQL in $HOME/.my.cnf), è possibile crearla usando i comandi elencati di seguito. 

Sui sistemi basati su RedHat, eseguire:

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

Sui sistemi basati su Debian, eseguire:

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

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

[comment]: # ({06256db0-06256db0})
##### 3 Crea database Zabbix

Per Zabbix [server](/manual/concepts/server) e
[proxy](/manual/concepts/proxy) demoni, oltre al frontend Zabbix, un
è richiesta la banca dati. Non è necessario per eseguire Zabbix
[agente](/manual/concepts/agente).

SQL [vengono forniti gli script](/manual/appendice/install/db_scripts) per la
creazione dello schema del database e inserimento del dataset. Il Database del 
Proxy Zabbix richiede solo lo schema mentre il database del server Zabbix richiede
anche il set di dati in cima allo schema.

Dopo aver creato un database Zabbix, procedere ai seguenti passaggi di
compilazione Zabbix.

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

[comment]: # ({0383f3a7-8ff1b41c})
##### 4 Configurare le sorgenti

Per compilare Zabbix server, Zabbix proxy o Zabbix agent è richiesto C99 con estensioni GNU.
Questa versione può essere specificata esplicitamente impostando CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

::: noteclassic
Se si installa dal [repository Git di Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse?at=refs%2Fheads%2Frelease%2F7.4),
è necessario eseguire prima:

`./bootstrap.sh`
:::

Quando si configurano le sorgenti per un Zabbix server o proxy, è necessario
specificare il tipo di database da utilizzare. Solo un tipo di database può essere
compilato alla volta con un processo server o proxy.

Per visualizzare tutte le opzioni di configurazione supportate, all'interno della directory sorgente di Zabbix estratta eseguire:

    ./configure --help

Per configurare le sorgenti per un Zabbix server e agent, è possibile eseguire
un comando simile a:

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

Per configurare le sorgenti per un Zabbix server (con PostgreSQL ecc.), è possibile
eseguire:

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

Per configurare le sorgenti per un Zabbix proxy (con SQLite ecc.), è possibile
eseguire:

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

Per configurare le sorgenti per un Zabbix agent, è possibile eseguire:

    ./configure --enable-agent

oppure, per Zabbix agent 2:

    ./configure --enable-agent2

::: noteclassic
Per compilare Zabbix agent 2 deve essere installata una [versione Go supportata](/manual/installation/requirements#agent-2).
:::

Note sulle opzioni di compilazione:

-   `--enable-agent` - compila Zabbix agent, oltre alle utilità da riga di comando [Zabbix get](/manual/concepts/get) e [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` - richiesto per il monitoraggio delle macchine virtuali, l'autenticazione SMTP e gli item `web.page.*` di [Zabbix agent](/manual/config/items/itemtypes/zabbix_agent). Vedere anche: [Requisiti](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - richiesto per il monitoraggio delle macchine virtuali.
-   `--with-libpcre2[=DIR]` - Zabbix viene sempre compilato con la libreria PCRE2; questa opzione consente solo di specificare un percorso di installazione PCRE2 personalizzato.
-   `--with-mysql=/path/to/mysql_config` - specifica il percorso di una particolare configurazione della libreria client MySQL. Utile quando sono installate più versioni di MySQL o MariaDB.
-   `--enable-static` - collega staticamente le librerie (non supportato su [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Usare questa opzione se si prevede di distribuire i binari compilati su sistemi privi delle librerie richieste. Non consigliato quando si compila Zabbix server. Per compilare il server in modo statico, è necessaria una versione statica di ogni libreria esterna. Lo script configure non lo verifica automaticamente.
-   `--with-stacksize=<value>` - imposta la dimensione dello stack per thread in kilobyte (ad esempio, `--with-stacksize=512`). È possibile aumentare questo valore se Zabbix va in crash o si blocca a causa di overflow dello stack (ad esempio, durante la [pre-elaborazione](/manual/config/items/preprocessing) su sistemi con limiti predefiniti bassi per lo stack dei thread).

::: noteimportant
Se `./configure` fallisce a causa di librerie mancanti o altri problemi, controllare il file `config.log` per informazioni dettagliate sull'errore.

Ad esempio, se `libssl` manca, il messaggio di errore immediato può essere fuorviante:

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

In questo caso, `config.log` rivela la causa reale:

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

:::

Vedere anche:

-   [Compilare Zabbix con supporto alla crittografia](/manual/encryption#compiling-zabbix-with-encryption-support)
-   [Problemi di compilazione](/manual/installation/known_issues/compilation_issues) noti

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

[comment]: # ({e8cfa426-08edd3dc})
##### 5 Creare e installare tutto

::: noteclassic
Se si installa da [Zabbix Git repository](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse?at=refs%2Fheads%2Frelease%2F7.4),
è necessario eseguire prima:

`$ make dbschema` 
:::

    make install

Questo passaggio deve essere eseguito da un utente con permessi sufficienti (in genere
'root', oppure usando `sudo`).

L'esecuzione di `make install` installerà per impostazione predefinita i binari del daemon
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) in /usr/local/sbin e
i binari client (zabbix\_get, zabbix\_sender) in /usr/local/bin.

::: noteclassic
Per specificare una posizione diversa da /usr/local, usare una
chiave --prefix nel passaggio precedente di configurazione dei sorgenti, ad esempio
--prefix=/home/zabbix. In questo caso i binari del daemon verranno installati
in <prefix>/sbin, mentre le utility in <prefix>/bin. Le pagine man
verranno installate in <prefix>/share.
:::

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

[comment]: # ({f36d53db-112b74f7})
##### 6 Rivedere e modificare i file di configurazione

- modificare il file di configurazione dell'agente Zabbix
    **/usr/local/etc/zabbix\_agentd.conf**

Devi configurare questo file per ogni host con zabbix\_agentd
installato.

Devi specificare l'**indirizzo IP** del server Zabbix nel file.
Le connessioni da altri host verranno negate.

- modificare il file di configurazione del server Zabbix
    **/usr/local/etc/zabbix\_server.conf**

È necessario specificare il nome del database, l'utente e la password (se utilizzata).

Il resto dei parametri ti andrà bene con i loro valori predefiniti se ne hai
una piccola installazione (fino a dieci host monitorati). Dovresti cambiare i
parametri predefiniti se si desidera massimizzare le prestazioni di Zabbix
server (o proxy) però.

- se hai installato un proxy Zabbix, modifica la configurazione del proxy
    file **/usr/local/etc/zabbix\_proxy.conf**

È necessario specificare l'indirizzo IP del server e il nome host del proxy (deve essere noto
al server), così come il nome del database, l'utente e la password (se
usando qualsiasi).

::: notaclassico
Con SQLite deve essere il percorso completo del file di database
specificato; Utente DB e password non sono richiesti.
:::

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

[comment]: # ({67632a65-bbdd82ac})
##### 7 Avviare i daemon

Esegui zabbix\_server sul lato server.

    zabbix_server

::: noteclassic
Assicurati che il tuo sistema consenta l'allocazione di 36MB (o un
po' di più) di memoria condivisa, altrimenti il server potrebbe non avviarsi e
vedrai "Cannot allocate shared memory for <type of cache>." nel file di log del server.
Questo può accadere su FreeBSD, Solaris 8.
:::

Esegui zabbix\_agentd su tutte le macchine monitorate.

    zabbix_agentd

::: noteclassic
Assicurati che il tuo sistema consenta l'allocazione di 2MB di
memoria condivisa, altrimenti l'agent potrebbe non avviarsi e vedrai
"Cannot allocate shared memory for collector." nel file di log dell'agent.
Questo può accadere su Solaris 8.
:::

Se hai installato Zabbix proxy, esegui zabbix\_proxy.

    zabbix_proxy

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

[comment]: # ({8d29e485-c9f154ca})
#### Installazione dell'interfaccia web di Zabbix

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

[comment]: # ({57b0b3e0-ed4e56ce})
##### Copia dei file PHP

Il frontend di Zabbix è scritto in PHP, quindi per eseguirlo è necessario un webserver con supporto PHP.
L'installazione si esegue semplicemente copiando i file PHP dalla directory ui nella directory dei documenti HTML del webserver.

Le posizioni comuni delle directory dei documenti HTML per i web server Apache includono:

-   /usr/local/apache2/htdocs (directory predefinita quando si installa Apache dai sorgenti)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Si consiglia di usare una sottodirectory invece della root HTML.
Per creare una sottodirectory e copiare i file del frontend di Zabbix al suo interno, eseguire i seguenti comandi, sostituendo <htdocs> con la directory effettiva:

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

Se si prevede di usare una lingua diversa dall'inglese, consultare [Installation of additional frontend languages](/manual/appendix/install/locales) per le istruzioni.

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

[comment]: # ({ae1b267f-63583cbb})
##### Installazione del frontend

Consultare la pagina [Web interface installation](/manual/installation/frontend) per informazioni sulla procedura guidata di installazione del frontend Zabbix.

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

[comment]: # ({8751cf7f-c8da42bb})
#### Installazione dei plugin caricabili di Zabbix agent 2

L'installazione dei plugin caricabili di Zabbix agent 2 è necessaria solo se si desidera monitorare target non coperti dai plugin integrati (ad esempio server o cluster MongoDB, PostgreSQL e i suoi fork, ecc.).
Vedere l'elenco completo dei [plugin caricabili](/manual/extensions/plugins#loadable-plugins) e dei [plugin integrati](/manual/extensions/plugins#built-in-plugins).

::: noteimportant
Prima di installare un plugin, controllarne il file README.
Potrebbe contenere requisiti specifici e istruzioni di installazione.
:::

Per installare dai sorgenti, prima [scaricare](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) ed estrarre l'archivio sorgente del plugin caricabile.

Per compilare il plugin, andare nella directory del plugin estratto ed eseguire `make`:

    make

::: noteclassic
Per compilare i plugin caricabili di Zabbix agent 2 deve essere installata una [versione supportata di Go](/manual/installation/requirements#agent-2).
:::

L'eseguibile del plugin può essere collocato ovunque, purché sia caricabile da Zabbix agent 2.
Specificare il percorso del binario del plugin nel file di configurazione del plugin, ad esempio in postgresql.conf per il plugin [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin):

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

Il percorso del file di configurazione del plugin deve essere specificato nel parametro Include del file di configurazione di Zabbix agent 2:

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

Procedere alla [configurazione](/manual/extensions/plugins#configuring-plugins) per ulteriori dettagli sulla configurazione dei plugin.

I plugin caricabili forniti da Zabbix usano semplici makefile con i seguenti target di build:

-   `make` - compila il plugin
-   `make clean` - elimina tutti i file creati dalla compilazione del plugin
-   `make check` - esegue i self-test (richiede un target di monitoraggio reale, ad esempio un database PostgreSQL)
-   `make style` - verifica lo stile del codice Go con `golangci-lint`
-   `make format` - formatta il codice Go con `go fmt`
-   `make dist` - crea un archivio sorgente includendo tutte le dipendenze

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

[comment]: # ({c72922e4-1a519c06})
#### Installazione di Java gateway

È necessario installare Java gateway solo se si desidera monitorare applicazioni JMX. Java gateway è leggero e non richiede un database.

Per installare dai sorgenti, prima [scaricare](/manual/installation/install#download-the-source-archive) ed estrarre l'archivio dei sorgenti.

Per compilare Java gateway, eseguire lo script `./configure` con l'opzione `--enable-java`. Si consiglia di specificare l'opzione `--prefix` per richiedere un percorso di installazione diverso da quello predefinito /usr/local, perché l'installazione di Java gateway creerà un'intera struttura di directory, non solo un singolo eseguibile.

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

Per compilare e impacchettare Java gateway in un file JAR, eseguire `make`. Si noti che per questo passaggio saranno necessari gli eseguibili `javac` e `jar` nel percorso.

    make

Ora si dispone di un file zabbix-java-gateway-$VERSION.jar in
src/zabbix\_java/bin. Se si preferisce eseguire Java gateway da src/zabbix\_java nella directory di distribuzione, è possibile
procedere con le istruzioni per configurare ed eseguire [Java
gateway](/manual/java/from_sources#overview-of-files).
In caso contrario, assicurarsi di disporre di privilegi sufficienti ed eseguire `make install`.

    make install

Procedere a [configurazione](/manual/concepts/java/from_sources) per ulteriori dettagli sulla configurazione e l'esecuzione di Java gateway.

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

[comment]: # ({a056dfd8-76c01064})
#### Installazione del servizio web di Zabbix

L'installazione del servizio web di Zabbix è necessaria solo se si desidera usare
i [report pianificati](/manual/web_interface/frontend_sections/reports/scheduled).

Per installare dai sorgenti, prima
[scaricare](/manual/installation/install#download-the-source-archive) ed
estrarre l'archivio dei sorgenti.

Per compilare il servizio web di Zabbix, eseguire lo script `./configure` con
l'opzione `--enable-webservice`.

::: noteclassic
Per compilare il servizio web di Zabbix deve essere installata una [versione supportata di Go](/manual/installation/requirements#agent-2).
:::

Eseguire zabbix\_web\_service sulla macchina in cui è installato il servizio web:

    zabbix_web_service

Per ulteriori dettagli sulla configurazione della generazione dei report pianificati, passare a [setup](/manual/appendix/install/web_service).

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

