编译安装 ZABBIX 3.0 + LAMP

1.前戏:

1.系统:Ubuntu 14.0 或 Debian 7.11

2.准备zabbix和LAMP环境的安装源码包:记住,对于一切安装包最稳妥的途径就是到相应官网上去下载,最好是LTS长期支持的版本,否则,no zuo no die

Zabbix:zabbix-3.0.5.tar.gz

Apache:httpd-2.4.23.tar.gz    //Apache官网

apr:apr-1.5.2.tar.gz    //Apache官网

apr-util:apr-util-1.5.4.tar.gz    //Apache官网

PHP:php-5.4.22.tar.gz

mysql:mysql-boost-5.7.12.tar.gz

boost:boost_1_59_0.tar.gz    //5.7以后开始要求这个boost依赖,在此mysql-boost版本中含有链接,最好是根据里面的下载这种兼容性最好的版本

 

2.过程:

安装Mysql 5.7:

(具体参照前面的博客——关于LNMP编译安装的安装文档)

 

httpd(Apache作为WEB):

配置:

./configure --prefix=/home/stt/server/apache \

--enable-so \

--enable-proxy --enable-cgi \

--enable-info \

--enable-rewrite \

--enable-speling \

--with-included-apr \

--with-pcre \

--enable-mods-shared=most \

--enable-ssl

 

报错情况:

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

解决方案:

将APR和APR-util源码下载,解压放到httpd-2.4.23/srclib里面,并去除版本号

cp -r apr-1.5.2/ httpd-2.4.23/srclib/apr

cp -r apr-util-1.5.4/ httpd-2.4.23/srclib/apr-util

 

编译安装:

make && make install

 

PHP:

配置:

./configure --prefix=/home/stt/server/php \

--with-apxs2=/home/stt/server/apache/bin/apxs \

--with-config-file-path=/home/stt/server/php/etc \

--with-mysql=/home/stt/server/mysql \

--with-libxml-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-zlib-dir \

--with-bz2 \

--with-openssl \

--with-mcrypt \

--enable-soap \

--enable-gd-native-ttf \

--enable-mbstring \

--enable-sockets \

--enable-exif \

--disable-ipv6 \

--enable-bcmath \

--with-mysqli \

--with-gettext

 

报错情况:

configure: error: Cannot find libmysqlclient_r under

解决方案:

编译之前,先处理一下mysql的库,默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可

$ cd /home/stt/server/mysql/lib

$ ln -s libmysqlclient.so.20 libmysqlclient_r.so

 

编译安装:

make && make install

 

安装zabbix:

配置:(根据官网的要求配置参数,当然,不一定一模一样,比如agent客户端就不必要

./configure --prefix=/home/stt/server/zabbix \

--enable-server \

--enable-agent \

--with-mysql=/home/stt/server/mysql/bin/mysql_config \

--enable-ipv6 \

--with-net-snmp \

--with-libcurl --with-libxml2

 

报错情况:

configure: error: Not found Net-SNMP library

解决方案:

apt-get install -y libsnmp-dev snmp

 

安装:make install

 

3.高潮:

修改配置文件:(关于LAMP和zabbix的具体配置日后再在博客上持续发布,现在只谈环境的编译安装

修改Apache参数:

重要配置部分

    在AddType字段处加入参数:

        <IfModule mime_module>
                TypesConfig conf/mime.types
                AddType application/x-compress .Z
                AddType application/x-gzip .gz .tgz
                AddType application/x-httpd-php .php
                AddType application/x-httpd-php-source .phps

</IfModule>

    加入php可以作为首页:

        <IfModule dir_module>
                DirectoryIndex index.php index.html    //php文件放在后面,会先解释index.html,除非你的Apache ROOT根目录下没有html文件
        </IfModule>

 

细节配置 — 可忽略

Listen 8080    //监听端口,因为1024以内的端口都是需要超级管理员root的权限去开启的,不修改就会在你启动Apache服务的时候报错

<IfModule unixd_module>
        User stt    
        Group stt
</IfModule>

ServerAdmin you@example.com
ServerName javazabbix.java.com:8080

DocumentRoot "/home/stt/server/apache/htdocs/zabbix"
<Directory "/home/stt/server/apache/htdocs/zabbix">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

 

修改PHP参数:

        在GUI 上面有必要修改php参数vim /home/stt/server/php/etc/php.ini 根据GUI上面的提示修改max_input 和timezone的参数,这是ZABBI服务的要求。

php.ini配置文件修改:(根据zabbix官方文档对PHP的最低配置要求为准,否则在打开zabbix setup页面就会有相应的红叉×

max_execution_time = 300

memory_limit = 128M

post_max_size = 16M

upload_max_filesize = 2M

max_input_time = 300

always_populate_raw_post_data = -1

date.timezone = Asia/Shanghai

 

测试LAMP功能:

到这里基本的LAMP+ZABBIX环境已经搭建完成,理论上是可以完成对php页面的支持。这里可以测试一下php能否和mysql通信

启动服务进行测试:

启动mysql

启动httpd(就是Apache服务)

 

在页面放置的位置编写一个php能否连接mysql的测试页

 

cd /home/stt/server/apache/htdocs/ ;vim index.php

<?php

$conn=mysql_connect('localhost','root','123456');

if ($conn)

echo "connect mysql Success......";

else

echo "Failusr.....";

?>

 

 

(很明显,我是直接通过IP访问的,域名需要自己去绑定IP,在此不多扯)

配置MySQL的zabbix用户权限:

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';

mysql> flush privileges;

mysql>quit;

 

导入zabbix数据:(注意导入顺序,如果是package的,就不需要顾虑这点,因为三合一了

cd zabbix-3.0.5/database/mysql

mysql -u zabbix -p<password> < schema.sql

mysql -u zabbix -p<password> < images.sql  

mysql -u zabbix -p<password> < data.sql

 

修改zabbix参数:

vim zabbix_server.conf

DBHost=localhost    //注意下面我再讨论中发现的问题

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

 

##############################

讨论:为什么不用LNMP?

        其实理论上是可以的,只是一直有道坎迈不过,就是zabbix对nginx的兼容性。当访问zabbix setup页面的时候,总是会停留在第一步的页面,点击Next Step无反应。检查各服务的日志后会发现问题报错的唯有MySQL上面,zabbix一直在报错 [Note] Aborted connection 16830 to db: 'zabbix' user: 'zabbix' host: 'localhost' (Got timeout reading communication packets) ,问题显然出现在zabbix对MySQL的连接上 。但是当我进入MySQL中查询连接数 show full processlist; 的时候会发现,zabbix请求的进程已经连接到MySQL中了,所以肯定不是连接不上数据库的问题。

        经我查找,有友友这么解决:直接修改zabbix根目录下的conf/zabbix.conf.php.example :

<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = 'localhost';
$DB['PORT']                             = '0';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                             = 'zabbix';
$DB['PASSWORD']                 = '';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']                   = '';

$ZBX_SERVER                             = 'localhost';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = '';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;

 

解释:

        复制一份zabbix.conf.php.example文件为zabbix.conf.php,因为zabbix.conf.php.example在WEB页面而设置后会生成zabbix.conf.php这样的页面,所以我们可以直接通过手动修改该配置页面,就可以直接访问zabbix的登录页了。但事实上,我并没有成功。我发现WEB页面会提示MySQL失去连接。

        现在谈到一个问题,当我在LAMP中进行zabbix的WEB页面配置时发现,如果配置MySQL的地址为localhost,则不能成功进入下一步设置,页面会提示MySQL连接失败,但是我改为127.0.0.1就可以成功连接并完成zabbix的所有setup页面配置。由此我在这点联想到:在LNMP环境中手动修改配置文件不成功的原因是否也是如此。By the way,肯定有人疑问:服务器中一文件 /etc/hosts 会解释 localhost 到 127.0.0.1 中,为毛使用 locahost 不行呢?并且,我在 zabbix_server.conf 配置DB MySQL 的地址是localhost,而在 WEB setup 页面中配置的DB MySQL 的地址在 localhost 和 127.0.0.1 中只有 127.0.0.1 正常连接,并且WEB页面中配置的和配置文件中添加的DB 地址不一样。这个问题嘛,我也的确没有去研究,希望能有人给我解答,毕竟我也是个小白。然而,我在此和大家说明一点,在 MySQL 中,貌似由版本5.0开始,(有些版本) '%' 不包括localhost,要单独对 @'localhost' 进行赋值。对用了 % 则代表了所有的 host 都能远程访问该 MySQL 。

        其中 MySQL 官方文档有说明:% 并不包括 localhost ,此处配置 % 远程其他 host 有权限访问,那么在 MySQL 的配置文件中 my.cnf,也需要做一些配置,将 bind_address=0.0.0.0 或者直接屏蔽掉此项。

        当主机填写为 localhost 时 MySQL 会采用 unix domain socket连接

        当主机填写为 127.0.0.1 时 MySQL 会采用tcp方式连接

        经搜查表明 MySQL 设计到的很多应用,比如wordpress这些默认访问localhost的应用,都会不可用,需要更改 host 为 127.0.0.1 才行。

转载于:https://my.oschina.net/u/2607319/blog/794344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值