# 4 从源代码安装

你可以通过源代码编译，获得最新版本的Zabbix。

本页面提供从源代码安装Zabbix的详细教程。

#### - 安装Zabbix守护进程

##### 1 下载源代码归档

前往 [Zabbix download page](http://www.zabbix.com/download.php)
并下载源代码归档。当下载完毕后，执行下列命令解压缩源代码：

    $ tar -zxvf zabbix-3.4.0.tar.gz

<note
tip>在命令行中输入正确的Zabbix版本号。版本号必须和下载的归档包文件名相同。
:::

##### 2 创建用户账户

对于所有Zabbix的守护进程，需要一个无特权的用户。如果Zabbix守护进程以一个无特权的用户账户启动，那么它会使用该用户运行。

然而，如果一个守护进程以‘root’用户启动，它会切换为‘zabbix’用户账户，且这个用户必须存在。在Linux系统中，可以使用下面命令建立一个用户（该用户属于自己的用户组，“zabbix”）：

    groupadd zabbix
    useradd -g zabbix zabbix

对于Zabbix前端的安装，不需要使用单独的用户账户。

如果Zabbix [server](/manual/concepts/server) 和
[agent](/manual/concepts/agent)
运行在同一台计算机上，建议使用不同的账户运行Server和Agent。否则，如果两个进程使用了同一个用户，Agent就可以访问Server的配置文件，并可轻易地读取Zabbix中任何管理员级别的用户，比如数据库密码。

<note
important>使用`root`，`bin`或其他特殊权限的账户运行Zabbix是一个安全风险。
:::

##### 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数据库后，可以开始对Zabbix进行编译。

##### 4 配置源代码

当配置Zabbix
server或者proxy的源代码时，需要指定所使用的数据库类型。每个Zabbix
server或者proxy进程在同一时间内只能使用一种数据库类型。

如果需要查看所有支持的配置选项，可在解压缩后的Zabbix源代码目录中，运行下列命令：

    ./configure --help

如果需要为Zabbix server和agent配置源代码，可以按下列格式运行命令：

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

::: noteclassic
自Zabbix 3.0.0版本起，SMTP认证需要--with-libcurl
配置选项，同时要求cURL 7.20.0或者更改版本。\\\\自Zabbix
2.2.0版本起，虚拟机监控需 --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

你可以使用 --enable-static
开关静态连接类库。如果你打算在不同的服务器之间分发已编译的二进制文件，你必须使用这个标签以使得这些二进制文件在不依赖于所需要的类库的情况下也可常运行。请注意
--enable-static [在 Solaris
系统下无效](http://blogs.sun.com/rie/entry/static_linking_where_did_it)。

::: noteimportant
 不建议在搭建Zabbix server时使用 --enable-static
选项。// //

为了静态搭建Zabbix
server，你必须拥有每个所需的外部类库的静态版本。配置脚本中不提供这些类库的严格检查。

:::

::: noteclassic
命令行工具 zabbix\_get 和 zabbix\_sender 只有在
--enable-agent 选项启用时才会被编译。
:::

::: noteclassic

如果MySQL客户端类库不再默认的位置，需要在MySQL的配置文件中添加可选路径
--with-mysql=/<文件路径>/mysql\_config 。

这可以有效解决，一个系统上安装了多个版本的MySQL或者MariaDB的情况。

:::

::: noteclassic
使用 --with-ibm-db2 开关以指定CLI API的位置。\
使用 --with-oracle 开关以指定OCI API的位置。
:::

如需要使用加密，可以参照
[使用加密方式编译Zabbix](/manual/encryption#compiling_zabbix_with_encryption_support)。

##### 5 安装组件

::: noteclassic
如果从SVN安装，需要先运行下列命令:

`$ 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下。
:::

##### 6 查看和编辑配置文件

-   在下列路径编辑Zabbix Agent的配置文件
    **/usr/local/etc/zabbix\_agentd.conf**

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

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

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

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

::: noteclassic
如果使用SQLite，必须指定数据库文件的全路径。数据库用户名和密码不是必填项。
:::

如果进行小规模部署（最多10台被监控主机），其余的参数你可以使用默认设置。如果你需要最大化Zabbix
server（或者Zabbix proxy）的性能，你需要更改其他默认参数。可参考
[性能调优](/manual/appendix/performance_tuning) 章节以了解详细信息。

-   如果你已经安装了Zabbix proxy，可以在下列路径编辑proxy的配置文件
    **/usr/local/etc/zabbix\_proxy.conf**

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

::: noteclassic
如果使用SQLite，必须指定数据库文件的全路径。数据库用户名和密码不是必填项。
:::

##### 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的共享内存，否则agent可能无法启动。你会在agent的日志文件中看到"Cannot
allocate shared memory for collector."的提示。这可能会在Solaris
8发生。
:::

如果你已经安装了Zabbix proxy，启动zabbix\_proxy。

    shell> zabbix_proxy

#### - 安装Zabbix web界面

##### 复制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 (Fedora, RHEL, CentOS)
-   /var/www (Debian, Ubuntu)

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

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

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

    locale/make_mo.sh

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

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

##### 安装前端

##### 第一步

在你的浏览器中，打开Zabbix URL： http://<服务器IP或主机名>/zabbix

你可以看到前端安装向导的第一个页面。

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

##### 第二步

确认满足所有的软件安装前置条件。

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

|前置条件                                       最低要|描述|<|
|------------------------------------------------------------|------|-|
|*PHP 版本*                                     5|4.0|<|
|*PHP memory\_limit 选项*                       1|8MB                                                      位|php.ini:<br>memory\_limit = 128M|
|*PHP post\_max\_size 选项*                     1|MB                                                       位|php.ini:<br>post\_max\_size = 16M|
|*PHP upload\_max\_filesize 选项*               2|B                                                        位|php.ini:<br>upload\_max\_filesize = 2M|
|*PHP max\_execution\_time 选项*                3|0 秒 (值允许为0和-1)                                     位于 php.|ni:<br>max\_execution\_time = 300|
|*PHP max\_input\_time 选项*                    3|0 秒 (值允许为0和-1)                                     位于 php.|ni:<br>max\_input\_time = 300|
|*PHP session.auto\_start 选项*                 必|禁用                                                   In ph|.ini:<br>session.auto\_start = 0|
|*数据库支持*                                   以下任选|一：IBM DB2, MySQL, Oracle, PostgreSQL, SQLite   必须安装下列模块中的一|：<br>ibm\_db2, mysql, oci8, pgsql, sqlite3|
|*bcmath*|<|php-bcmath|
|*mbstring*|<|php-mbstring|
|*PHP mbstring.func\_overload 选项*             必|禁用                                                   位于 ph|.ini:<br>mbstring.func\_overload = 0|
|*PHP always\_populate\_raw\_post\_data 选项*   必|禁用                                                   只适用于|HP 5.6.0 或更高的版本。<br>位于 php.ini:<br>always\_populate\_raw\_post\_data = -1|
|*sockets*|<|php-net-socket. 用于支持用户脚本。|
|*gd*|2.0或更高                                                  ph|-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*状态。即使存在不满足的可选前置条件，安装仍可以继续进行。

<note
important>如果需要更改Apache的用户或者用户组，需要验证对会话目录的权限。否则Zabbix安装可能无法继续。
:::

##### 第三步

输入连接数据库的详细信息。Zabbix数据库必须是已经创建好的。

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

##### 第四步

输入Zabbix Server的详细信息。

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

##### 第五步

检查设置信息。

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

##### 第六步

下载配置文件，将它放置在Web服务器HTML文档子目录（即你复制Zabbix
PHP文件的目录）的conf/路径下。

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

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

<note
tip>如果Web服务器用户对conf/目录有写入权限，配置文件将会自动保存，并且直接继续下一步操作。
:::

##### 第七步

完成安装。

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

##### 第八步

Zabbix前端已经就绪！默认的用户名是**Admin**，密码是**zabbix**。

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

前往 [开始使用Zabbix](/manual/quickstart/login).

### 查看其他

1.  [如何为Zabbix守护进程配置共享内存](http://www.zabbix.org/wiki/How_to/configure_shared_memory)
