- 基础环境
强烈建议linux采用centos7.0及以上,对应的数据库为mysql,并和应用部署于同一台服务器。且mysql应安装5.7以上(默认使用innodb作为引擎)。如果安装centos6.7版本,会出现gcc版本较低导致不能编译高版本的mysql,而gcc升级为4.8会很耗时。
zabbix rpm包下载地址:http://repo.zabbix.com/zabbix
mysql版本目前需使用5.7,目前暂不支持8.0版本,即时安装成功后也会报错。
php版本目前需使用5.6,暂不支持7.2版本(代码改版较大,会出现报错)
Linux版本: Centos 7.0
Nginx版本: 1.14.0
Mysql版本: mysql-boost-5.7.22
PHP版本: 5.6.36
Zabbix版本: zabbix 3.4.9
-
前置条件
在部署之前,系统SE服务、firewall服务最好均关闭。且一些基础的依赖包最好提前安装好,依赖包的安装源可以配置为阿里云或网易源,这里采用阿里云的源,具体配置方法参考:https://opsx.alibaba.com/mirror?lang=zh-cn
# Linux SE 服务关闭
[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled
# Linux Firewall 服务关闭
[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
# 安装依赖包
# 采用yum来安装依赖包,需要提前配置好yum源,置方法参考:https://opsx.alibaba.com/mirror
[root@localhost ~]# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre* make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel cmake gcc* ncurses-devel mysql-devel net-snmp-devel freetype-devel libevent-devel
- 安装Nginx
这里使用Nginx主要做HTTP代理服务。
下述命令主要包含了创建用户,下载、配置、编译、安装Nginx,并创建对应的软链接在local目录下。如果以下链接不能下载Nginx,可将其在本地浏览器中下载好再上传到远程服务器。configure后主要参数说明:
--with-http_stub_status_module:支持nginx状态查询
--with-http_ssl_module:支持https
--with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持
--with-pcre:为了支持rewrite重写功能,必须制定pcre
[root@localhost ~]# useradd nginx -s /sbin/nologin -M
[root@localhost ~]# cd /app/soft && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0
[root@localhost ~]# ./configure --prefix=/usr/local/product/nginx-1.14.0 --user=www --group=www --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre
[root@localhost ~]# make && make install
[root@localhost ~]# ln -s /usr/local/product/nginx-1.14.0 /usr/local/nginx
- 安装PHP
下述命令主要包含了PHP的下载、配置、编译、安装,配置软链接到local目录下,拷贝php配置参数到相关目录。
[root@localhost soft]# cd /app/soft && tar -zxvf php-5.6.36.tar.gz && cd php-5.6.36
[root@localhost soft]# ./configure --prefix=/usr/local/product/php-5.6.36 --with-config-file-path=/usr/local/product/php-5.6.36/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
[root@localhost soft]# make && make install
[root@localhost soft]# ln -s /usr/local/product/php-5.6.36 /usr/local/php
[root@localhost soft]# cp php.ini-production /usr/local/php/etc/php.ini
[root@localhost soft]# cd /usr/local/php/etc/ && cp php-fpm.conf.default php-fpm.conf
# 修改php.ini参数(zabbix环境要求):
[root@localhost etc]# vi /usr/local/php/etc/php.ini
---------------------------------
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = PRC
mysqli.default_socket = /var/lib/mysql/mysql.sock
---------------------------------
- 安装MySQL
如果本机原来装有低版本的mysql,则建议卸载后再安装新版本的mysql,或者参照网络教程,采取多版本共存的方式。另也可以采用MariaDB,对mysql数据库全面兼容。
[root@localhost soft]# groupadd mysql && useradd -r -g mysql -d /data -s /sbin/nologin mysql
[root@localhost soft]# chown -R mysql.mysql /data
[root@localhost soft]# cd /app/soft && tar -zxf mysql-boost-5.7.22.tar.gz && cd mysql-5.7.22
[root@localhost soft]# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/product/mysql-5.7.22 \
-DMYSQL_DATADIR=/data/mysql \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/app/soft/mysql-5.7.22/boost \
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all
[root@localhost soft]# make && make install
[root@localhost soft]# ln -s /usr/local/product/mysql-5.7.22 /usr/local/mysql
[root@localhost soft]# cp /app/soft/mysql-5.7.22/support-files/mysql.server /etc/init.d/mysqld
[root@localhost soft]# chmod +x /etc/init.d/mysqld
[root@localhost soft]# mkdir /var/lib/mysql/ && chown -R mysql.mysql /var/lib/mysql
[root@localhost soft]# vi /etc/my.cnf
---------------------------
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
[mysql]
socket=/var/lib/mysql/mysql.sock
---------------------------
# 初始化数据库
[root@localhost soft]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql/
[root@localhost soft]# service mysqld start
[root@localhost soft]# /usr/local/mysql/bin/mysql -u root -p'临时密码'
mysql> alter user 'root'@'localhost' identified by "sql9981nan";
# 创建zabbix数据库及用户
# 5.7版本
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
# 8.0版本
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by "zabbix";
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' with grant option;
- 安装zabbix server
在官网下载页面:https://www.zabbix.com/download,找到Zabbix Sources,下载最新LTS版本Zabbix 3.0 LTS 或者一般最新版本,目前为3.4.9。完成后上传至安装目录,如:/app/soft。
[root@localhost soft]# cd /app/soft && tar zxf zabbix-3.4.9.tar.gz && cd zabbix-3.4.9
[root@localhost soft]# ./configure \
--prefix=/usr/local/zabbix/ \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--enable-java
[root@localhost soft]# make && make install
# 添加zabbix用户;导入数据库建库、配置文件(注意一定要按顺序导入,且当用于安装proxy时,仅需导入第一个即可。)
[root@localhost zabbix]# useradd zabbix -s /sbin/nologin -M
[root@localhost zabbix]# mysql -uroot -psql9981nan zabbix < database/mysql/schema.sql
[root@localhost zabbix]# mysql -uroot -psql9981nan zabbix < database/mysql/images.sql
[root@localhost zabbix]# mysql -uroot -psql9981nan zabbix < database/mysql/data.sql
# 执行数据库分区
# 参见“zabbix_性能调优”中mysql分区环节
- 管理网站配置
配置Nginx运行环境,创建对应的目录;拷贝zabbix安装包内的php文件到对应目录;创建配置参数文件zabbix.conf并添加下述内容。
[root@localhost zabbix]# mkdir -p /app/web/qtopay.zabbix.site
[root@localhost zabbix]# mkdir -p /app/log/zabbix
[root@localhost zabbix]# cp -rp frontends/php/* /app/web/qtopay.zabbix.site/
[root@localhost ~]# cd /usr/local/nginx/conf
[root@localhost ~]# mkdir vhost && cd vhost
[root@localhost ~]# vi zabbix.conf
server {
listen 80;
server_name qtopay.zabbix.site;
access_log /app/log/zabbix/qtopay.zabbix.site.access.log main;
index index.html index.php index.html;
root /app/web/qtopay.zabbix.site;
location /{
try_files $uri $uri/ /index.php?$args;
}
location ~ ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
- 在Nginx安装目录(/usr/local/nginx/)的conf目录下找到nginx.conf文件,并修改其中的部分参数,可参照下述部分进行修改。
[root@localhost conf]# cat nginx.conf
user nginx;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include vhost/*.conf;
……
}
- 编辑zabbix_server.conf配置文件,修改如下参数:
[root@localhost ~]# vi /usr/local/zabbix*/etc/zabbix_server.conf
LogFile=/app/log/zabbix/zabbix_server.log
LogFileSize=10
PidFile=/app/log/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
- 启动各个模块,并添加至启动项
[root@localhost ~]# /usr/local/nginx/sbin/nginx
[root@localhost ~]# /usr/local/php/sbin/php-fpm
[root@localhost ~]# /usr/local/zabbix*/sbin/zabbix_server
[root@localhost ~]# echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
[root@localhost ~]# echo "/usr/local/php/sbin/php-fpm" >>/etc/rc.local
[root@localhost ~]# echo "/etc/init.d/mysqld start" >>/etc/rc.local
[root@localhost ~]# echo "/usr/local/zabbix*/sbin/zabbix_server" >>/etc/rc.local
- 配置环境变量
[root@localhost ~]# vi ~/.bash_profile
---------------------
export MYSQL_HOME="/usr/local/mysql"
export ZABBIX_HOME="/usr/local/zabbix"
export ZABBIX_CFG="/usr/local/zabbix/etc"
export ZABBIX_ALERT="/usr/local/zabbix/share/zabbix"
export PHP_HOME="/usr/local/php"
PATH=$PATH:$HOME/bin:${MYSQL_HOME}/bin:${ZABBIX_HOME}/bin:${ZABBIX_HOME}/sbin:/${PHP_HOME}/sbin:${PHP_HOME}/bin
export PATH
---------------------
- web端初始化配置
使用域名访问时注意添加本地hosts文件,或在域名中配置解析。如对应的访问地址为:qtopay.zabbix.site
web界面初始化配置非常简洁,一路默认值next即可,唯一需要注意有一个步骤会提示下载配置文件zabbix.conf.php,然后保存至指定目录,按提示下载并上传至指定目录,并注意修改文件的属主为nginx:nginx。
初次使用时,默认zabbix管理员登陆账户及密码为:Admin/zabbix - 常见问题
- 中文显示问题
zabbix默认登陆界面是英文显示,zabbix-3.0.6之后的版本可以直接在用户资料界面设置语言为中文。但此时在部分图形展示界面还会出现乱码问题,按照如下操作即可解决。
在本地字体目录(C:\Windows\Fonts)找到“simkai.ttf”(楷体,或其他支持中文的字体亦可。)并将字体上传至服务器指定目录下:/app/web/qtopay.zabbix.site/fonts,完成后执行下述命令:
编辑文件defines.inc.php,将其中“DejaVuSans”字体修改为“simkai”
[root@zabbix ~]# vi /app/web/zabbix.qtopay.com/include/defines.inc.php
// define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name
define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
// define('ZBX_FONT_NAME', 'DejaVuSans');
define('ZBX_FONT_NAME', 'simkai');
- 创建分区表,提高性能
mysql创建分区表后,需记得将housekeeper关闭。
# 导入存储过程脚本
mysql -uzabbix -pzabbix zabbix < partition_call.sql
mysql -uzabbix -pzabbix zabbix < partition_all.sql
# 定时任务调用存储过程脚本
1 1 * * * /usr/local/mysql/bin/mysql -uzabbix -pzabbix zabbix -e "CALL partition_maintenance_all('zabbix');" >> /app/logs/mysql_partition.log
- php报错问题解决
采用5.6版本的php,在进行web页面初始化时,会出现报错信息always_populate_raw_post_data option must be set to -1,这个报错信息可参考文档末端的“参考1”中的解决方案进行解决即可。以下内容添加$current = -1;即可
vi /app/web/zf.zabbix.site/include/classes/setup/CFrontendSetup.php
----------------
public function checkPhpAlwaysPopulateRawPostData() {
$current = ini_get('always_populate_raw_post_data');
$current = -1;
----------------