為了方便把安裝 Zabbix 的過程整理成自動化一鍵部署指令碼,有興趣可以參考,都是些基本的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

#!/bin/bash
#Zabbix 一鍵部署指令碼
#安裝 zabbix3.0.4, 依賴 php-5.6.25

src_home=`pwd`
echo -n “ 正在配置 iptables 防火牆……”
/etc/init.d/iptables save >> /dev/null
chkconfig iptables off
if [ $? -eq 0 ];then
echo -n “Iptables 防火牆初始化完畢!”
fi

echo -n “ 正在關閉 SELinux……”
setenforce 0 > /dev/null 2>&1
sed -i ‘/^SELINUX=/s/=.*/=disabled/’ /etc/selinux/config
if [ $? -eq 0 ];then
echo -n “SELinux 初始化完畢!”
fi

echo -n “ 正在安裝 nginx yum 源……”
yum -y install wget
wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
if [ $? -eq 0 ];then
echo -n “Nginx yum 源 初始化完畢!”
fi

echo -n “ 正在安裝 epel-release yum 源……”
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
if [ $? -eq 0 ];then
echo -n “epel-release yum 源 初始化完畢!”
fi

echo -n “ 正在安裝 php-5.6.25 的編譯所需相關站群軟體……”
yum -y install make gcc nginx libmcrypt php-mcrypt mysql-server mysql-devel net-snmp-devel libcurl-devel php php-mysql php-bcmath php-mbstring php-gd php-xml bzip2-devel libmcrypt-devel libxml2-devel gd gd-devel libcurl*
if [ $? -eq 0 ];then
echo -n “php-5.6.25 依賴初始化完畢!”
fi

echo -n “ 正在新增 zabbix 使用者……”
useradd -M -s /sbin/nologin zabbix && echo “OK”
echo -n “ 正在啟動 mysqld 服務……”
service mysqld start
if [ $? -eq 0 ];then
echo -n “Mysql 啟動完畢!”
fi

#echo -n “ 正在為 mysql 的 root 使用者設定密碼……”
#mysql_user_root_password=”password”
#mysql_user_zabbix_password=”zabbix”
#mysqladmin -uroot -p password $mysql_user_root_password
echo “ 正在執行 mysql 語句,建立 zabbix 資料庫,授權 zabbix 訪問資料庫”
mysql -e “create database zabbix character set utf8;grant all privileges on zabbix.* to zabbix@’%’ identified by ‘zabbix’;grant all privileges on zabbix.* to zabbix@’127.0.0.1′ identified by ‘zabbix’;grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;flush privileges;”
#echo “ 正在執行 mysql 語句,建立 zabbix 資料庫,授權 zabbix 訪問資料庫”
#mysql -uroot -p”$mysql_user_root_password” -e “create database zabbix character set utf8” && echo “ 建立 zabbix 資料庫完成”
#mysql -uroot -p”$mysql_user_root_password” -e “grant all privileges on zabbix.* to zabbix@localhost identified by ‘$mysql_user_zabbix_password'” && echo “ 授權 zabbix 本地登入資料庫”
#mysql -uroot -p”$mysql_user_root_password” -e “grant all privileges on zabbix.* to zabbix@’%’ identified by ‘$mysql_user_zabbix_password'” && echo “ 授權任何 WordPress 主機本地登入資料庫”

#zabbix 一鍵部署第三方站群軟體包的解壓目錄
echo -n “ 編譯安裝 php-5.6.25…. 可能需要幾分鐘”
tar zxf ${src_homie}/php-5.6.25.tar.gz
cd ${src_home}/php-5.6.25 && ./configure –prefix=/usr/local/php –with-config-file-path=/etc –enable-fpm –with-libxml-dir –with-gd –with-jpeg-dir –with-png-dir –with-freetype-dir –with-iconv-dir –with-zlib-dir –with-mcrypt –enable-soap –enable-gd-native-ttf –enable-mbstring –enable-exif –with-pear –with-curl –enable-bcmath –with-gettext –with-mysqli –enable-sockets
cd ${src_home}/php-5.6.25 && make -j 4 && make install
cd

echo -n “ 正在配置啟動 php-fpm…. 請稍等”
/bin/cp ${src_home}/php-5.6.25/php.ini-production /etc/php.ini
cp ${src_home}/php-5.6.25/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 777 /etc/init.d/php-fpm
cd /usr/local/php/etc/ && cp php-fpm.conf.default php-fpm.conf
cd
service php-fpm start
if [ $? -eq 0 ];then
echo -n “php-fpm 啟動完畢!”
fi

#zabbix 編譯安裝
echo -n “ 正在匯入 zabbix 資料到 mysql 資料庫中….”
tar zxf ${src_home}/zabbix-3.0.4.tar.gz
mysql -uzabbix -pzabbix zabbix < ${src_homie}/zabbix-3.0.4/database/mysql/schema.sql mysql -uzabbix -pzabbix zabbix < ${src_homie}/zabbix-3.0.4/database/mysql/images.sql mysql -uzabbix -pzabbix zabbix < ${src_homie}/zabbix-3.0.4/database/mysql/data.sql if [ $? -eq 0 ];then echo -n "zabbix資料匯入啟動完畢!" fi echo -n "正在安裝zabbix編譯依賴站群軟體包.... 可能需要幾分鐘" yum -y install net-snmp-devel curl-devel javacc java-1.8* echo -n "編譯安裝Zabbix-server.... 可能需要幾分鐘" cd ${src_home}/zabbix-3.0.4 && ./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-net-snmp --with-libcurl --enable-java --with-mysql make -j 4 && make install echo -n "正在製作Zabbix-server啟動指令碼...." echo -e "zabbix-agent 10050/tcp #ZabbixAgentnzabbix-agent 10050/udp #Zabbix Agentnzabbix-trapper 10051/tcp #ZabbixTrappernzabbix-trapper 10051/udp #Zabbix Trapper" >> /etc/services
cp ${src_home}/zabbix-3.0.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
cp ${src_home}/zabbix-3.0.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
cd

chmod 777 /etc/init.d/zabbix_*
sed -i ‘/BASEDIR=/s/$//zabbix/’ /etc/init.d/zabbix_server
sed -i ‘/BASEDIR=/s/$//zabbix/’ /etc/init.d/zabbix_agentd

echo -n “ 正在配置 zabbix 配置檔案….”
cd /usr/local/zabbix/etc
sed ‘/# DBHost=localhost/aDBHost=localhost’ zabbix_server.conf -i
sed ‘/# DBPassword=/aDBPassword=zabbix’ zabbix_server.conf -i
sed ‘/# EnableRemoteCommands=0/aEnableRemoteCommands=1’ zabbix_agentd.conf -i
sed ‘/# ListenPort=10050/aListenPort=10050’ zabbix_agentd.conf -i
sed ‘/# User=zabbix/aUser=zabbix’ zabbix_agentd.conf -i
sed ‘/# AllowRoot=0/aAllowRoot=1’ zabbix_agentd.conf -i
sed ‘/# UnsafeUserParameters=0/aUnsafeUserParameters=1’ zabbix_agentd.conf -i
if [ $? -eq 0 ];then
echo -n “zabbix 配置完畢!”
fi

echo -n “ 正在啟動 zabbix_server and zabbix_agent….”
service zabbix_server start
service zabbix_agentd start
chkconfig zabbix_server on
chkconfig zabbix_agentd on
cd

echo -n “ 正在配置 nginx 反代 zabbix….”
cp -r ${src_home}/zabbix-3.0.4/frontends/php /usr/share/nginx/html/zabbix
cd /etc/nginx/conf.d/ && mv default.conf default.conf.bak
cp ${src_home}/zabbix.conf /etc/nginx/conf.d/
echo -n “ 配置完成,正在啟動 nginx web server….”
service nginx start
if [ $? -eq 0 ];then
echo -n “Nginx 啟動完畢!”
fi

echo -n “ 正在進行最後的 zabbix Install ,php 引數修改…..”
sed ‘/^post_max_size =/s/=.*/= 16M/’ /etc/php.ini -i
sed ‘/^max_execution_time =/s/=.*/= 300/’ /etc/php.ini -i
sed ‘/^max_input_time =/s/=.*/= 300/’ /etc/php.ini -i
sed -i ‘/^;date.timezone/adate.timezone = Asia/Shanghai’ /etc/php.ini
sed -i ‘/^;always_populate_raw_post_data.*/aalways_populate_raw_post_data = -1’ /etc/php.ini
sed -i ‘/^mysqli.default_socket =/s/=.*/= /var/lib/mysql/mysql.sock/’ /etc/php.ini
echo -n “ 正在重新啟動 php 服務…..”
/etc/init.d/php-fpm restart
echo -n “ 正在初始化 zabbix Server….”
cp ${src_home}/zabbix.conf.php /usr/share/nginx/html/zabbix/conf/
echo -n “ 正在做最後的 Zabbix Server 重啟…..”
/etc/init.d/zabbix_server restart
if [ $? -eq 0 ];then
echo -n “Zabbix Server 啟動完畢!”
fi

echo -n “ 正在解決 zabbix server 亂碼問題, 請你耐心等待…..”
cd /usr/share/nginx/html/zabbix/fonts && mv DejaVuSans.ttf DejaVuSans.ttf.bak
cp ${src_home}/msyh.ttf .
cd ../include/ && sed -i ‘s/DejaVuSans/msyh/g’ defines.inc.php
cd
echo -n “ 恭喜你,Zabbix 部署到此完成,如有問題,請參照指令碼單獨解決!!!”
echo -e -n “ 後續的操作:1 、透過 http://ip/zabbix 訪問你的 zabbix Web 頁面, 下一步…. 一直到底。 2 、你可能需要配置 Nginx 域名, 透過域名訪問 Zabbix Server…. 3 、你需要自己自定義或者使用系統自帶 WordPress 模板,新增 WordPress 主機等等….”

指令碼跑完沒報錯,在你的瀏覽器裡輸入:http://172.16.2.21/zabbix/ 應該可以看到下面的頁面: