# 3 Установка из исходных кодов

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

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

#### - Установка демонов Zabbix

##### 1 Загрузите архив исходных кодов

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

    $ tar -zxvf zabbix-4.2.0.tar.gz

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

##### 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

::: noteimportant
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


:::

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

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

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

##### 3 Создайте базу данных Zabbix

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

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

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

##### 4 Сконфигурируйте исходный код

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

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

    ./configure --help

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

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

::: noteclassic
Для мониторинга виртуальных машин требуются `--with-libcurl`
и `--with-libxml2` опции конфигурации; `--with-libcurl` также требуется
для SMTP аутентификации и `web.page.*` [элементов
данных](/ru/manual/config/items/itemtypes/zabbix_agent) Zabbix агента.
Обратите внимание, что cURL 7.20.0 или более новая
[необходим](/ru/manual/installation/requirements) с опцией конфигурации
`--with-libcurl`.
:::

::: noteimportant
Начиная с версии Zabbix 3.4.0, он всегда должен
быть скомпилирован с PCRE библиотекой. Её установка не является
опциональной. `--with-libpcre=[DIR]` позволяет указать расположение
базовой директории установки, вместо поиска в нескольких стандартных
местах расположения libpcre файлов. 
:::

Для конфигурирования исходных кодов для 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

Имеется возможность использования флага --enable-static для статической
линковки библиотек. Если вы планируете распространять скомпилированные
исполняемые файлы на другие сервера, вы должны использовать этот флаг,
чтобы приложения могли работать без требуемых библиотек. Флаг
--enable-static [не работает под ОС
Solaris](http://blogs.sun.com/rie/entry/static_linking_where_did_it).

::: noteimportant
 Использование опции --enable-static не
рекомендуется при сборке сервера.\
\
В случае сборки сервера со статической линковкой у вас должны иметься
статические версии всех необходимых внешних библиотек. 
:::

::: noteclassic
Утилиты командной строки zabbix\_get и zabbix\_sender
компилируются, если использована опция --enable-agent.
:::

::: noteclassic
 Добавьте опциональный путь к файлу конфигурации
MySQL--with-mysql=/<путь\_к\_файлу>/mysql\_config, чтобы выбрать
желаемую библиотеку клиента MySQL, когда имеется необходимость
использовать библиотеку, которая не расположена в месте установки по
умолчанию.

Бывает полезно там, где установлено несколько версий MySQL или MariaDB
установлена вместе с MySQL на одной системе. 
:::

::: noteclassic
Используйте флаг --with-ibm-db2 чтобы указать расположение
CLI API.\
Используйте флаг --with-oracle чтобы указать расположение OCI
API.
:::

Для поддержки шифрования смотрите [Компиляция Zabbix с поддержкой
шифрования](/ru/manual/encryption#компиляция_zabbix_с_поддержкой_шифрования).

##### 5 Соберите и установите всё

::: noteclassic
Если устанавливаете код взятый из SVN, вы должны сначала
выполнить:

`$ 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. В этом случае исполняемые файлы
демонов будут установлены в папку <префикс>/sbin, а утилиты в
папку <префикс>/bin. Страницы помощи будут установлены в папку
<префикс>/share.
:::

##### 6 Просмотрите и отредактируйте файлы конфигурации

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

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

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

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

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

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

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

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

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

##### 7 Запустите демоны

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

    shell> zabbix_server

::: noteclassic
Удостоверьтесь, что в вашей системе разрешено выделение 36МБ
(или немногим больше) разделяемой памяти, в противном случае сервер
может не запуститься и вы увидите "Cannot allocate shared memory for
<type of cache>." в файле журнала сервера. Это может случится в
FreeBSD, Solaris 8.\
Обратитесь к разделу ["Смотрите также"](#смотрите_также) в нижней части
этой страницы, чтобы узнать как настроить разделяемую
память.
:::

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

    shell> zabbix_agentd

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

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

    shell> zabbix_proxy

#### Установка веб-интерфейса Zabbix

##### Копирование файлов PHP

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

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

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

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

    mkdir <htdocs>/zabbix
    cd frontends/php
    cp -a . <htdocs>/zabbix

Если устанавливаете из SVN и планируете использовать любой другой язык,
кроме английского, то вы должны сгенерировать файлы переводов. Для этого
выполните:

    locale/make_mo.sh

Требуется утилита `msgfmt` из пакета gettext.

::: noteclassic
Кроме того, для использования любого другого языка отличного
от английского, этот язык должен быть установлен на веб-сервере.
Обратитесь к разделу ["Смотрите
также"](/ru/manual/web_interface/user_profile#смотрите_также) страницы
"Профиль пользователя", чтобы узнать как установить дополнительные
языки, если они потребуются.
:::

::: noteclassic
В Zabbix 4.2.2 (только) пользователю веб-сервера требуются
права *на запись* к директории `assets`.
:::

##### Установка веб-интерфейса

##### Шаг 1

Откройте URL Zabbix: http://<ip\_или\_имя\_сервера>/zabbix, в
вашем браузере.

Вы должны увидеть первую страницу помощника установки веб-интерфейса.

![](../../../assets/en/manual/installation/install_1_a.png){width="550"}

##### Шаг 2

Убедитесь, что все требования к программному обеспечению выполнены.

![](../../../assets/en/manual/installation/install_2.png){width="550"}

|Требование|Минимальное значение|Описание|
|--------------------|---------------------------------------|----------------|
|*Версия PHP*|5.4.0|<|
|*PHP опция memory\_limit*|128МБ|В php.ini:<br>memory\_limit = 128M|
|*PHP опция post\_max\_size*|16МБ|В php.ini:<br>post\_max\_size = 16M|
|*PHP опция upload\_max\_filesize*|2МБ|В php.ini:<br>upload\_max\_filesize = 2M|
|*PHP опция max\_execution\_time*|300 секунд (значения 0 и -1 разрешены)|В php.ini:<br>max\_execution\_time = 300|
|*PHP опция max\_input\_time*|300 секунд (значения 0 и -1 разрешены)|В php.ini:<br>max\_input\_time = 300|
|*PHP опция session.auto\_start*|должна быть отключена|В php.ini:<br>session.auto\_start = 0.|
|*Поддержка баз данных*|Одна из: MySQL, Oracle, PostgreSQL, IBM DB2|Один из следующих модулей должен быть установлен:<br>mysql, oci8, pgsql, ibm\_db2|
|*bcmath*|<|php-bcmath|
|*mbstring*|<|php-mbstring|
|*PHP опция mbstring.func\_overload*|должна быть отключена|В php.ini:<br>mbstring.func\_overload = 0.|
|*PHP опция always\_populate\_raw\_post\_data*|должна быть равной -1|Требуется только для версий PHP 5.6.0 и новее.<br>В php.ini:<br>always\_populate\_raw\_post\_data = -1|
|*sockets*|<|php-net-socket. Требуется для поддержки пользовательских скриптов.|
|*gd*|2.0.28|php-gd. Расширение PHP GD должно поддерживать PNG изображения (*--with-png-dir*), JPEG (*--with-jpeg-dir*) изображения и FreeType 2 (*--with-freetype-dir*).|
|*libxml*|2.6.15|php-xml или php5-dom|
|*xmlwriter*|<|php-xmlwriter|
|*xmlreader*|<|php-xmlreader|
|*ctype*|<|php-ctype|
|*session*|<|php-session|
|*gettext*|<|php-gettext<br>Начиная с Zabbix 2.2.1, расширение PHP gettext более не является обязательным для установки Zabbix. Если gettext не установлен, веб-интерфейс будет работать как обычно, однако, переводы будут недоступны.|

В списке могут также присутствовать необязательные требования. Если
необязательное требование не удовлетворено, то оно отображается
оранжевым цветом и имеет состояние Предупреждение (Warning). Установка
может продолжаться, если необязательные требования не удовлетворены.

::: noteimportant
Если имеется необходимость изменить пользователя
или группу пользователей Apache, необходимо проверить права доступа к
папке сессий. В противном случае установка Zabbix не сможет
продолжиться.
:::

##### Шаг 3

Укажите информацию для подключения к базе данных. База данных Zabbix
должна быть уже создана.

![](../../../assets/en/manual/installation/install_3.png){width="550"}

##### Шаг 4

Введите подробные сведения о сервере Zabbix.

![](../../../assets/en/manual/installation/install_4.png){width="550"}

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

##### Шаг 5

Просмотрите результат настроек.

![](../../../assets/en/manual/installation/install_5.png){width="550"}

##### Шаг 6

Скачайте файл конфигурации и поместите его в каталог conf/.

![](../../../assets/en/manual/installation/install_6.png){width="550"}

![](../../../assets/en/manual/installation/saving_zabbix_conf.png){width="350"}

::: notetip
В случае, если веб-сервер имеет право на запись в
каталог conf/, файл конфигурации будет сохранен автоматически и можно
будет сразу же перейти к следующему шагу.
:::

##### Шаг 7

Завершение установки.

![](../../../assets/en/manual/installation/install_7.png){width="550"}

##### Шаг 8

Веб-интерфейс Zabbix готов! По умолчанию имя пользователя **Admin**,
пароль **zabbix**.

![](../../../assets/en/manual/quickstart/login.png){width="350"}

Перейти к [началу работы с Zabbix](/ru/manual/quickstart/login).

#### 3 Установка Java gateway

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

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

Чтобы скомпилировать 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](/ru/manual/concepts/java#обзор_файлов_из_поставки_java_gateway).
В противном случае убедитесь, что у вас имеются достаточные привилегии и
выполните `make install`.

    $ make install

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

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

1.  [Как настроить разделяемую память для демонов Zabbix
    \[en\]](http://www.zabbix.org/wiki/How_to/configure_shared_memory)
