[comment]: # translation:outdated

[comment]: # ({4b5e073c-af2eaf2f})
# 3 从源代码包安装

您可以通过从源代码编译来获取最新版本的 Zabbix。

这里提供了从源代码安装 Zabbix 的具体步骤。

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

[comment]: # ({1f14b2c6-0040d992})
#### 1 安装 Zabbix 守护进程

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

[comment]: # ({6c7f313f-991c886c})
##### 1 下载源代码存档

转到 [Zabbix download page](http://www.zabbix.com/download_sources)
下载源代码存档。待下载完毕后，执行以下命令解压缩源代码存档：

    $ tar -zxvf zabbix-5.0.0.tar.gz

::: notetip
请在命令中输入正确的 Zabbix 版本。
它必须与下载的存档的名称匹配。
:::

[comment]: # ({/6c7f313f-991c886c})

[comment]: # ({691d8dff-87e1101d})
##### 2 创建用户账户

对于所有 Zabbix 守护进程，需要一个非特权用户。 如果从非特权用户帐户启动
Zabbix 守护程序，它将以该用户身份运行。

然而，如果一个守护进程以“root”启动，它会切换到“zabbix”用户，且这个用户必须存在。在
Linux
系统中，可以使用下面命令建立一个用户（该用户属于自己的用户组，“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

<note
important>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 [server](/manual/concepts/server) 和
[agent](/manual/concepts/agent)
运行在相同的机器上，建议使用不同的用户运行来 Zabbix server 和 agent。
否则，如果两者都作为同一用户运行，则 Zabbix agent 可以访问 Zabbix server
配置文件，并且可以轻松检索到 Zabbix
中的任何管理员级别的用户，例如，数据库密码。

::: noteimportant
以 `root` 、`bin` 或其他具有特殊权限的账户运行
Zabbix 是非常危险的。
:::

[comment]: # ({/691d8dff-87e1101d})

[comment]: # ({1f28bcdb-06256db0})
##### 3 创建 Zabbix 数据库

对于 Zabbix [server](/manual/concepts/server) 和
[proxy](/manual/concepts/proxy) 守护进程以及 Zabbix
前端，必须需要一个数据库。但是 Zabbix [agent](/manual/concepts/agent)
并不需要。

SQL [脚本](/manual/appendix/install/db_scripts) 用于创建数据库 schema
和插入 dataset。Zabbix proxy 数据库只需要数据库 schema，而 Zabbix server
数据库在建立数据库 schema 后，还需要 dataset。

当创建数据库后，继续执行编译 Zabbix 的步骤。

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

[comment]: # ({ba4a22e8-65b18666})
##### 4 配置源代码

当配置 Zabbix server 或者 proxy
的源代码时，需要指定所使用的数据库类型。一次只能使用 Zabbix server 或
Zabbix proxy 进程编译一种数据库类型。

如果要查看所有受支持的配置选项，请在解压缩的 Zabbix 源代码目录中运行：

    ./configure --help

如果要配置 Zabbix server 和 Zabbix proxy 的源代码，您可以运行以下内容：

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

如果要配置 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

有关编译选项的注意事项：

-   如果使用--enable-agent选项，则会编译命令行实用程序zabbix\_get和zabbix\_sender
-   虚拟机监视需要--with-libcurl和--with-libxml2配置选项；
    SMTP验证和web.page也需要--with-libcurl。\*
    Zabbix代理[项目](/zh/manual/config/items/itemtypes/zabbix_agent)。
    请注意，使用--with-libcurl配置选项[需要](/zh/manual/installation/requirements)cURL
    7.20.0或更高版本
-   Zabbix始终使用PCRE库进行编译（从3.4.0版开始）； 安装它不是可选的。
    --with-libpcre =
    \[DIR\]仅允许指向特定的基本安装目录，而不是在多个常用位置中搜索libpcre文件
-   您可以使用--enable-static标志来静态链接库。
    如果计划在不同的服务器之间分发编译的二进制文件，则必须使用此标志来使这些二进制文件在没有必需的库的情况下工作。
    请注意，-enable-static在[Solaris](http://blogs.sun.com/rie/entry/static_linking_where_did_it)中不起作用
-   在构建服务器时，不建议使用--enable-static选项。
    为了静态构建服务器，您必须具有所需的每个外部库的静态版本。
    在配置脚本中没有对此进行严格检查
-   当需要使用不在默认位置的库时，在MySQL配置文件--with-mysql = /
    <path\_to\_the\_file> /
    mysql\_config中添加可选路径，以选择所需的MySQL客户端库。
    当在同一系统上安装了多个版本的MySQL或与MySQL一起安装了MariaDB时，此功能很有用
-   使用--with-oracle标志可以指定OCI API的位置
-   编译Zabbix代理2需要Go版本1.13或更高版本。有关安装说明，请参阅[golang.org](https://golang.org/doc/install)

<note
important>如果./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以支持加密](/zh/manual/encryption)
-   [在HP-UX上编译Zabbix
    agent的已知问题](/zh/manual/installation/known_issues)

[comment]: # ({/ba4a22e8-65b18666})

[comment]: # ({11eb1832-08edd3dc})
##### 5 安装

::: noteclassic
如果从 git 安装，需要先运行以下命令：

`$ make dbschema` 
:::

    make install

这步需要使用一个拥有足够权限的用户来运行 (如 'root'，或者使用 sudo)。

运行 `make install` 将使用在 /usr/local/sbin
下的守护进程二进制文件（zabbix\_server, zabbix\_agentd,
zabbix\_proxy）和在 /usr/local/bin 下的客户端二进制文件进行默认安装。

::: noteclassic
 如需要指定 /usr/local
以外的位置，可在之前的配置源代码的步骤中使用 --prefix，例如
--prefix=/home/zabbix。在这个案例中，守护进程的二进制文件会被安装在
<prefix>/sbin 下，工具会安装在 <prefix>/bin
下。帮助文件会安装在 <prefix>/share 下。
:::

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

[comment]: # ({6ce7573a-112b74f7})
##### 6 查看和编辑配置文件

-   在此编辑 Zabbix agent 的配置文件
    **/usr/local/etc/zabbix\_agentd.conf**

您需要为每台安装了 zabbix\_agentd 的主机配置这个文件。

您必须在这个文件中指定 Zabbix server 的 **IP 地址**
。若从其他主机发起的请求会被拒绝。

-   在此编辑 Zabbix server 的配置文件
    **/usr/local/etc/zabbix\_server.conf**

您必须指定数据库的名称、用户和密码（如果使用的话）。

如果您进行小型环境部署（最多十个受监控主机），其余参数的默认值将适合您的环境。
如果要最大化 Zabbix server（或 proxy）的性能，则应更改默认参数。
详见[性能调整](/manual/appendix/performance_tuning)。

-   如果您安装了 Zabbix proxy，请在此编辑 proxy 的配置文件
    **/usr/local/etc/zabbix\_proxy.conf**

您必须指定 Zabbix server 的 IP 地址和 Zabbix proxy 主机名（必须被 Zabbix
server 识别），同时也要指定数据库的名称、用户和密码（如果使用的话）。

::: noteclassic
使用 SQLite
必须指定数据库文件的完整路径；数据库用户和密码不是必须的。
:::

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

[comment]: # ({00569b92-bbdd82ac})
##### 7 启动守护进程

在 Zabbix server 端运行 zabbix\_server：

    shell> zabbix_server

::: noteclassic
值得注意的是，确保您的系统允许分配
36MB（或更多）的共享内存，否则 Zabbix server 将无法启动，并会在 Zabbix
server 日志文件中看到 "Cannot allocate shared memory for <type of
cache>." 这样的报错信息。这可能会发生在 FreeBSD 和 Solaris 8 上。\
详见本页底部的 ["另请参阅"](#see_also)
部分，了解如何配置共享内存。.
:::

在受监控的主机上运行 zabbix\_agentd：

    shell> zabbix_agentd

::: noteclassic
值得注意的是，请确保您的系统允许分配 2MB 的共享内存，否则
Zabbix agent 可能会无法运行，并会在 Zabbix agent 日志文件中看到 "Cannot
allocate shared memory for collector." 这样的报错信息。这可能会发生在
Solaris 8 上。
:::

如果您安装了 Zabbix proxy，请运行 zabbix\_proxy：

    shell> zabbix_proxy

[comment]: # ({/00569b92-bbdd82ac})

[comment]: # ({92d5446a-c9f154ca})
#### 2 安装 Zabbix web 界面

请参阅[Web界面安装](/zh/manual/installation/frontend)页面以获取有关Zabbix
web安装向导的信息

[comment]: # ({/92d5446a-c9f154ca})

[comment]: # ({181654c6-ed4e56ce})
##### 复制 PHP 文件

Zabbix 前端是 PHP 编写的，所以必须运行在支持 PHP 的 Web
服务器上。只需要简单的从 frontends/php 路径下复制 PHP 文件到 Web
服务器的 HTML 文档目录，即可完成安装。

Apache Web 服务器的 HTML 文档目录通常包括：

-   /usr/local/apache2/htdocs （从源代码安装 Apache 的默认目录）
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL, CentOS)

建议使用子目录替代 HTML 根目录。可以使用下列命令，以创建一个子目录并复制
Zabbix 的前端文件到这个目录下（注意替换为实际的目录）：

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

如果准备从 git
安装英语以外的语言，您必须生成翻译文件。可以运行下列命令：

    locale/make_mo.sh

需要来自 gettext 安装包的 `msgfmt` 组件。

::: noteclassic
此外，使用英语以外的语言，需要在 Web
服务器上安装该语言对应的 locale 。详见“用户文件”页面中的
["另请参阅"](/manual/web_interface/user_profile#see_also)
板块，以寻找如何安装它（如果需要的话）。
:::

[comment]: # ({/181654c6-ed4e56ce})

[comment]: # ({c56e690e-63583cbb})
##### 安装前端

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

[comment]: # ({88a681bc-1a519c06})
#### 3安装JAVA GATEWAY

仅当您要监视JMX应用程序时才需要安装Java gateway。 Java
gateway是轻量级的，不需要数据库

要从源代码安装，请首先[下载](/zh/manual/installation/install)并解压缩源归档文件

要编译Java gateway，请使用--enable-java选项运行./configure脚本。
建议您指定--prefix选项来请求默认的/ usr /
local以外的安装路径，因为安装Java
gateway会创建整个目录树，而不仅仅是一个可执行文件

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

要将Java gateway编译并打包到JAR文件中，请运行make。
请注意，对于此步骤，您将在路径中需要javac和jar可执行文件

    $ make

现在，您在src / zabbix\_java / bin中有一个zabbix-java-gateway- $
VERSION.jar文件。 如果您可以从分发目录中的src / zabbix\_java运行Java
gateway，那么可以继续阅读有关配置和运行[Java
gateway](/zh/manual/concepts/java)的说明。
否则，请确保您具有足够的特权并运行make install

    $ make install

继续[安装](/zh/manual/concepts/java/from_sources)，了解关于配置和运行Java
gateway的更多细节

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

