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

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

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

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

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

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

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

Перейдите на [страницу загрузки Zabbix](http://www.zabbix.com/download_sources#74)
и загрузите исходный архив. После загрузки распакуйте исходные файлы,
выполнив:

    tar -zxvf zabbix-7.4.0.tar.gz

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

[comment]: # ({/0f408286-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]: # ({0383f3a7-8ff1b41c})
##### 4 Настройка исходных кодов

Для сборки Zabbix server, Zabbix proxy или Zabbix agent требуется C99 с расширениями GNU.
Эту версию можно явно указать, задав CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

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

`./bootstrap.sh`
:::

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

Чтобы увидеть все поддерживаемые параметры конфигурации, в каталоге
распакованных исходных кодов Zabbix выполните:

    ./configure --help

Чтобы настроить исходные коды для Zabbix server и agent, можно выполнить
примерно такую команду:

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

Чтобы настроить исходные коды для Zabbix server (с PostgreSQL и т. д.),
можно выполнить:

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

Чтобы настроить исходные коды для Zabbix proxy (с SQLite и т. д.),
можно выполнить:

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

Чтобы настроить исходные коды для Zabbix agent, можно выполнить:

    ./configure --enable-agent

или, для Zabbix agent 2:

    ./configure --enable-agent2

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

Примечания по параметрам компиляции:

-   `--enable-agent` - компилирует Zabbix agent, а также командные утилиты [Zabbix get](/manual/concepts/get) и [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` - требуется для мониторинга виртуальных машин, аутентификации SMTP и элементов данных `web.page.*` [Zabbix agent](/manual/config/items/itemtypes/zabbix_agent). См. также: [Требования](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - требуется для мониторинга виртуальных машин.
-   `--with-libpcre2[=DIR]` - Zabbix всегда компилируется с библиотекой PCRE2; этот параметр позволяет только указать пользовательский путь установки PCRE2.
-   `--with-mysql=/path/to/mysql_config` - указывает путь к определенной конфигурации клиентской библиотеки MySQL. Полезно, когда установлено несколько версий MySQL или MariaDB.
-   `--enable-static` - статически связывает библиотеки (не поддерживается в [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Используйте этот параметр, если планируете распространять скомпилированные двоичные файлы для систем без необходимых библиотек. Не рекомендуется при сборке Zabbix server. Чтобы собрать server статически, требуется статическая версия каждой внешней библиотеки. Скрипт configure не проверяет это автоматически.
-   `--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#compiling-zabbix-with-encryption-support)
-   Известные [проблемы компиляции](/manual/installation/known_issues/compilation_issues)

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

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

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

`$ 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]: # ({/e8cfa426-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]: # ({57b0b3e0-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]: # ({/57b0b3e0-ed4e56ce})

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

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

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

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

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

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

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

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

    make

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

Исполняемый файл плагина можно разместить в любом месте, если он может быть загружен Zabbix agent 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 agent 2:

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

Перейдите к разделу [настройка](/manual/extensions/plugins#configuring-plugins) для получения дополнительных сведений о настройке плагинов.

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

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

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

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

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

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

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

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

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

    make

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

    make install

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

[comment]: # ({/c72922e4-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})

