[comment]: # ({af2eaf2f-af2eaf2f})
# 3. Установка из исходных кодов 

Вы можете получить самую свежую версию Zabbix, скомпилировав её из исходных кодов.

Здесь представлено пошаговое руководство по установке Zabbix из исходных кодов.

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

[comment]: # ({a81f3302-0040d992})
#### Установка демонов Zabbix

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

[comment]: # ({2e98ce22-8cc2c1b1})
##### 1. Загрузите архив исходных кодов

Перейдите на [страницу загрузки Zabbix](https://www.zabbix.com/ru/download_sources#70LTS) и скачайте архив исходных кодов. Как только он будет загружен, распакуйте исходные коды, выполнив:

    tar -zxvf zabbix-7.0.0.tar.gz

::: notetip
Укажите в команде правильную версию Zabbix. Версия должна совпадать с именем загруженного архива.
:::

[comment]: # ({/2e98ce22-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2. Создайте учётную запись пользователя

Все процессы демонов Zabbix запускаются под учётной записью непривилегированного системного пользователя. Если демон Zabbix запущен под учётной записью непривилегированного пользователя, он продолжит работу под этим пользователем.

В конфигурации по умолчанию, если демон запущен как `root`, он переключится на учётную запись пользователя `zabbix`, которая должна существовать.
Чтобы создать системного пользователя и группу `zabbix`, выполните команды, перечисленные ниже.

Системы на основе RedHat:

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

Системах на основе Debian:

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

Для веб-интерфейса Zabbix создавать отдельную учетную запись пользователя не нужно.

###### Рекомендации по безопасности

Если Zabbix [сервер](/manual/concepts/server) и [агент](/manual/concepts/agent) работают на одной машине, то рекомендуется запускать их под **отдельными учётными записями**.
Запуск сервер и агента от имени одного и того же пользователя позволяет агенту получить доступ к файлу конфигурации сервера, что может раскрыть конфиденциальную информацию, например пароль базы данных, любому пользователю уровня Администратора в Zabbix.

::: noteimportant
Запуск Zabbix из-под `root`, `bin` или любой другой учётной записи со специальными правами является риском для безопасности.
:::

###### Домашний каталог (необязательно)

Zabbix процессам не требуется домашний каталог, поэтому его создание обычно не рекомендуется.
Однако, если вы используете некоторый функционал, которому требуется наличие домашнего каталога (например, хранение учётных данных MySQL в `$HOME/.my.cnf`), вы можете создать его с помощью команд, перечисленных ниже.

На системах на основе RedHat, выполните:

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

На системах на основе Debian, выполните:

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

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

[comment]: # ({06256db0-06256db0})
##### 3. Создайте базу данных Zabbix

Для демонов Zabbix [сервера](/manual/concepts/server) и [прокси](/manual/concepts/proxy), а так же для веб-интерфейса Zabbix, требуется база данных. Она не требуется для работы Zabbix [агента](/manual/concepts/agent).

Для создания схемы базы данных и вставки набора данных предоставляются SQL [скрипты](/manual/appendix/install/db_scripts). Для базы данных Zabbix прокси требуется только создание схемы данных, в то время как для Zabbix сервера помимо схемы необходимо также загрузить набор данных поверх схемы.

После создания базы данных Zabbix, перейдите к следующим шагам компиляции Zabbix.

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

[comment]: # ({ecd76a0a-8ff1b41c})
##### 4. Сконфигурируйте исходный код

Для построения Zabbix сервера, Zabbix прокси или Zabbix агента требуется C99 с расширениями GNU.
Эта версия может быть явно указана путём выставления CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

::: noteclassic
При установке из [Zabbix репозитория Git](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse), необходимо сначала выполнить:

`./bootstrap.sh`
:::

При конфигурировании исходного кода Zabbix сервера или прокси вы должны указать используемый тип базы данных. Только один тип базы данных может быть скомпилирован для процессов сервера или прокси единовременно.

Для просмотра всех доступных опций конфигурирования выполните в папке с извлечённым исходным кодом Zabbix:

    ./configure --help

Для конфигурирования исходных кодов для Zabbix сервера и агента вы можете выполнить нечто вроде:

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

Для конфигурирования исходных кодов для Zabbix сервера (с PostgreSQL и т.д.) вы можете выполнить:

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

Для конфигурирования исходных кодов для Zabbix прокси (с SQLite и т.д.) вы можете выполнить:

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

Для конфигурирования исходных кодов для Zabbix агента вы можете выполнить:

    ./configure --enable-agent

или, для Zabbix агента 2:

    ./configure --enable-agent2

::: noteclassic
Для сборки Zabbix агента 2 должна быть установлена [поддерживаемая версия Go](/manual/installation/requirements#агент-2).
:::

Замечания по опциям компиляции:

-   `--enable-agent` — скомпилировать Zabbix агент, а также утилиты командной строки [Zabbix get](/manual/concepts/get) и [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` — требуется для мониторинга виртуальных машин, для SMTP аутентификации и [элементов данных Zabbix агента](/manual/config/items/itemtypes/zabbix_agent) `web.page.*`. Смотрите также: [Требования](/manual/installation/requirements#серверпрокси) (libcurl).
-   `--with-libxml2` — требуется для мониторинга виртуальных машин.
-   `--with-libpcre2=[ДИРЕКТОРИЯ]` — Zabbix всегда компилируется с библиотекой PCRE2; эта опция только позволяет указать пользовательскую директорию с установленной библиотекой PCRE2.
-   `--with-mysql=/путь/к/файлу/mysql_config` — указывает путь к конкретной конфигурации клиентской библиотеки MySQL. Полезно, если установлено несколько версий MySQL или MariaDB.
-   `--with-oracle` — указывает расположение Oracle Call Interface (OCI) API.
-   `--enable-static` — выполнить статическую линковку библиотек (не поддерживается в [Solaris \[en\]](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Используйте это, если вы планируете установить скомпилированные бинарные файлы на системы без необходимых библиотек. Не рекомендуется при сборке сервера. Для статической сборки сервера требуется статическая версия каждой внешней библиотеки. В скрипте конфигурирования отсутствует автоматическая проверка этого.
-   `--with-stacksize=<value>` — устанавливает размер стека для каждого потока в килобайтах (например, `--with-stacksize=512`). Вы можете увеличить это значение, если Zabbix аварийно завершает работу или зависает из-за переполнения стека (например, во время [предобработки](/manual/config/items/preprocessing) в системах с низкими ограничениями по умолчанию на размер стека потоков).

::: noteimportant
 Если `./configure` завершается с ошибкой по причине отсутствующих библиотек или по какой-либо другой причине, пожалуйста, просмотрите файл `config.log` для получения более подробных сведений касательно ошибки.

Например, если отсутствует `libssl`, непосредственное сообщение об ошибке может вводить в заблуждение:

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

В данном случае `config.log` выявит реальную причину:

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


:::

Смотрите также:

-   [Компиляция Zabbix с поддержкой шифрования](/manual/encryption#компиляция-zabbix-с-поддержкой-шифрования)
-   Известные [проблемы с компиляцией](/manual/installation/known_issues/compilation_issues)

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

[comment]: # ({f38586cb-08edd3dc})
##### 5 Сборка и установка всего необходимого

::: noteclassic
Если установка выполняется из [репозитория Zabbix Git](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
сначала необходимо выполнить:

`$ make dbschema` 
:::

    make install

Этот шаг следует выполнять от имени пользователя с достаточными правами (обычно
`root` или с использованием `sudo`).

При выполнении `make install` по умолчанию будут установлены двоичные файлы демона
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) в /usr/local/sbin и
двоичные файлы клиента (zabbix\_get, zabbix\_sender) в /usr/local/bin.

::: noteclassic
Чтобы указать другое расположение вместо `/usr/local`, используйте
ключ `--prefix` на предыдущем шаге настройки исходных кодов, например,
`--prefix=/home/zabbix`. В этом случае двоичные файлы демона будут установлены
в `<prefix>/sbin`, а утилиты — в `<prefix>/bin`. Страницы man
будут установлены в `<prefix>/share`.
:::

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

[comment]: # ({f36d53db-112b74f7})
##### 6. Просмотрите и отредактируйте файлы конфигурации

-   отредактируйте файл конфигурации Zabbix агента **/usr/local/etc/zabbix\_agentd.conf**

Вам нужно сконфигурировать этот файл на каждом узле сети, на котором установлен zabbix\_agentd.

В файле вы должны указать **IP адрес** Zabbix сервера. Подключения с остальных хостов будут отклонены.

-   отредактируйте файл конфигурации Zabbix сервера **/usr/local/etc/zabbix\_server.conf**

Вы должны указать имя базы данных, пользователя и пароль (если используется).

Остальные параметры подойдут со значениями по умолчанию, если у вас небольшая инсталляция (до десятка наблюдаемых узлов сети). Вы должны изменить параметры по умолчанию, если вы хотите увеличить производительность Zabbix сервера (или прокси).

-   если вы установили Zabbix прокси, то отредактируйте файл конфигурации Zabbix прокси **/usr/local/etc/zabbix\_proxy.conf**

Вы должны указать IP адрес сервера и имя прокси (должно быть известно серверу), а также имя базы данных, пользователя и пароль (если используется).

::: noteclassic
В случае SQLite необходимо указать полный путь к файлу базы данных; пользователь и пароль к БД не требуются.
:::

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

[comment]: # ({67632a65-bbdd82ac})
##### 7. Запустите демоны

Запустите zabbix\_server на стороне сервера.

    zabbix_server

::: noteclassic
Удостоверьтесь, что в вашей системе разрешено выделение 36МБ (или немногим больше) разделяемой памяти, в противном случае сервер может не запуститься и вы увидите сообщение: «Cannot allocate shared memory for <type of cache>», — в файле журнала сервера. Такое может случится в FreeBSD, Solaris 8.
:::

Запустите zabbix\_agentd на всех наблюдаемых машинах.

    zabbix_agentd

::: noteclassic
Убедитесь, что ваша система позволяет выделить 2 МБ разделяемой памяти (shared memory), в противном случае агент может не запуститься и вы увидите сообщение: «Cannot allocate shared memory for collector», —  в журнале агента. Такое может произойти в Solaris 8.
:::

Если вы установили Zabbix прокси, запустите zabbix\_proxy.

    zabbix_proxy

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

[comment]: # ({8d29e485-c9f154ca})
#### Установка веб-интерфейса Zabbix

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

[comment]: # ({7ed89806-ed4e56ce})
##### Копирование файлов PHP

Веб-интерфейс Zabbix написан на языке PHP, поэтому для его работы вам потребуется веб-сервер с поддержкой PHP.
Установка производится путем простого копирования PHP файлов из папки ui в папку HTML-документов веб-сервера.

Общепринятые места размещения папки HTML-документов для веб-сервера Apache включают:

-   /usr/local/apache2/htdocs (каталог по умолчанию при установке Apache из исходных кодов)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Рекомендуется использовать подпапку вместо корневой папки HTML.
Чтобы создать подпапку и скопировать в неё файлы веб-интерфейса Zabbix, выполните следующие команды, заменив <htdocs> на реальную директорию:

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

Если вы планируете использовать любой другой язык, отличный от английского, смотрите инструкции по [Установке дополнительных языков для веб-интерфейса](/manual/appendix/install/locales).

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

[comment]: # ({ae1b267f-63583cbb})
##### Установка веб-интерфейса

Пожалуйста, обратитесь к странице [установки веб-интерфейса](/manual/installation/frontend) для получения более подробной информации о мастере установки веб-интерфейса Zabbix.

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

[comment]: # ({8751cf7f-5ea0c792})
#### Установка подгружаемых плагинов Zabbix агента 2

Установка подгружаемых плагинов Zabbix агента 2 требуется только в том случае, если вы хотите отслеживать объекты, не охваченные встроенными плагинами (например, серверы или кластеры MongoDB, PostgreSQL и его производные и т. д.).
Смотрите полный список [подгружаемых плагинов](/manual/extensions/plugins#подгружаемые-плагины) и [встроенных плагинов](/manual/extensions/plugins#встроенные-плагины).

::: noteimportant
Перед установкой плагина, пожалуйста, ознакомьтесь с его файлом README.
Он может содержать особые требования и инструкции по установке.
:::

Для установки из исходных кодов сначала [загрузите](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) и разверните архив исходных кодов загружаемого плагина.

Чтобы скомпилировать плагин, перейдите в каталог извлечённого плагина и запустите `make`:

    make

::: noteclassic
Для сборки подгружаемых плагинов Zabbix агента 2 должна быть установлена [поддерживаемая версия Go](/manual/installation/requirements#агент-2).
:::

Исполняемый файл плагина можно разместить в любом месте, если Zabbix агент 2 может его загрузить.
Укажите путь к исполняемому файлу плагина в файле конфигурации плагина, например, в postgresql.conf для плагина [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin):

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

Путь к файлу конфигурации плагина необходимо указать в параметре Include файла конфигурации Zabbix агента 2:

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

Для получения более подробной информации о настройке плагинов перейдите к разделу [настроек](/manual/extensions/plugins#настройка-плагинов).

Подгружаемые плагины, предоставляемые Zabbix, используют простые make-файлы со следующими целями сборки:

-   `make` — собрать плагин
-   `make clean` — удалить все файлы, созданные при при сборке плагина
-   `make check` — запускать самотестирование (требуется реальная цель мониторинга, например, база данных PostgreSQL)
-   `make style` — проверьте стиль кода Go с помощью `golangci-lint`
-   `make format` — отформатировать код Go с помощью `go fmt`
-   `make dist` — создать архив исходников, включая все зависимости

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

[comment]: # ({3c8ef27d-1a519c06})
#### Установка Java gateway

Java gateway необходимо установить, только если вы хотите мониторить приложения JMX. Java gateway легковесный и не требует наличия базы данных.

Чтобы установить из исходного кода, сначала [загрузите](/manual/installation/install#загрузите-архив-исходных-кодов) и извлеките исходный код из архива.

Чтобы скомпилировать Java gateway, выполните скрипт `./configure` с опцией `--enable-java`. Целесообразно указать опцию `--prefix` для изменения пути установки с /usr/local по умолчанию, так как при установке Java gateway будет создано целое дерево директорий, а не просто один исполняемый файл.

    ./configure --enable-java --prefix=$ПРЕФИКС

Для компиляции и сборки пакета Java gateway в JAR файл выполните `make`. Обратите внимание, для выполнения этого шага вам потребуется наличие выполняемых файлов `javac` и `jar` в известных системе местах.

    make

Теперь у вас имеется zabbix-java-gateway-$ВЕРСИЯ.jar файл в src/zabbix\_java/bin. Если вам удобно запускать Java gateway из src/zabbix\_java в директории с исходными кодами, тогда вам нужно перейти к инструкциям по настройке и запуску [Java gateway](/manual/concepts/java/from_sources#обзор-файлов). В противном случае убедитесь, что у вас имеются достаточные привилегии и выполните `make install`.

    make install

Перейдите на страницу [настройки](/manual/concepts/java/from_sources) Java gateway для получения более подробных сведений о том, как настроить и запустить Java gateway.

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

[comment]: # ({a056dfd8-76c01064})
#### Установка веб-сервиса Zabbix

Установка веб-сервиса Zabbix требуется, только если вы хотите использовать [отчёты по расписанию](/manual/web_interface/frontend_sections/reports/scheduled).

Чтобы установить из исходного кода, сначала [загрузите](/manual/installation/install#загрузите-архив-исходных-кодов) и извлеките исходный код из архива.

Чтобы скомпилировать веб-сервис Zabbix, выполните скрипт `./configure` с опцией `--enable-webservice`.

::: noteclassic
Для сборки веб-сервиса Zabbix должна быть установлена [поддерживаемая версия Go](/manual/installation/requirements#агент-2).
:::

Выполните zabbix\_web\_service на машине, где был установлен веб-сервис:

    zabbix_web_service

Перейдите к [установке](/manual/appendix/install/web_service) для получения более подробных сведений о настройке генерирования Регулярных отчётов.

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

