1. 程式人生 > 實用技巧 >編譯安裝Zabbix4.0

編譯安裝Zabbix4.0

1、LNMP環境搭建

1.1 Nginx環境搭建

# 1.安裝Nginx依賴
yum install -y vim bash-completion lrzsz wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 2.下載Nginx原始碼包
cd /usr/local/src && wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
# 3.解壓
tar xf nginx-1.14.2.tar.gz && cd nginx-1.14.2
# 4.編譯安裝
./configure --prefix=/usr/local/nginx
make && make install
# 5.配置環境變數
echo "export PATH=$PATH:/usr/local/nginx/sbin/" >> /etc/profile
source /etc/profile
# 6.檢查nginx配置
nginx -t
# 7.啟動nginx
nginx
# 8.關閉nginx
nginx -s stop

瀏覽器訪問:http://ip

配置Nginx使用systemctl管理:

vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
[Install]
WantedBy=multi-user.target

# 啟動nginx
systemctl start nginx.service
# 關閉nginx
systemctl stop nginx.service

1.2 PHP原始碼編譯安裝

# 1.安裝PHP依賴
yum -y install epel-release
yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel
# 2.下載PHP原始碼包
cd /usr/local/src/ && wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz'
# 3.解壓
tar -zxf php-5.6.40.tar.gz && cd php-5.6.40
# 4.編譯安裝
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm
make && make install
# 5.生成php.ini配置檔案
cp php.ini-production /usr/local/php/etc/php.ini
# 6.配置環境變數
echo "export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/" >> /etc/profile
source /etc/profile
# 生成php-fpm.conf配置檔案
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  • 編譯引數說明:
--prefix指定php的安裝目錄
--with-config-file-path指定php的配置檔案位置
--with-mysql、--with-mysqli讓php可以操作mysql
--enable-fpm主要是nginx要來呼叫php語言得使用php-fpm

配置PHP使用systemctl管理:

vim /usr/lib/systemd/system/php.servic
[Unit]
Description=php
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target

# 啟動php
systemctl start php.service
# 關閉php
systemctl stop php.service

Nginx配置PHP代理:

  • 編寫一個php檔案
<?php
phpinfo();
?>
  • 修改nginx配置檔案
location / {
  root   html;
  index  index.html index.htm index.php;
}

location ~ \.php$ {
	root           html;
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  $document_root/scripts$fastcgi_script_name;
	include        fastcgi_params;
}
  • 修改配置檔案之後要重啟nginx:
systemctl restart nginx.service

瀏覽器訪問:http://ip/test.php

1.3 MySQL原始碼編譯安裝

# 1.安裝MySQL依賴
yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel
# 2.新增mysql使用者
useradd -s /sbin/nologin mysql
# 3.下載原始碼包
cd /usr/local/src && wget 'https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39.tar.gz'
# 4.解壓
tar -zxvf mysql-5.6.39.tar.gz
cd mysql-5.6.39
# 5.編譯安裝
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1
make && make install
# 6.生成MySQL啟動指令碼
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
# 7.配置環境變數
echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
source /etc/profile
# 8.更新配置檔案
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
datadir=/data/mysql
user=mysql
skip-name-resolve
long_query_time=2
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120

[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
# 9.資料庫初始化
mkdir -pv /data/mysql
chown -R mysql.mysql /data/mysql/
chown -R mysql.mysql /usr/local/mysql/
yum install -y perl-Module-Install
# 初始化過程出現兩個'OK'則初始化成功
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql  --datadir=/data/mysql/
# 10.systemctl管理MySQL
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
[Install]
WantedBy=multi-user.target
# 11.啟動MySQL
systemctl start mysqld
  • 編譯引數說明:
CMACK_INSTALL_PREFIX指定安裝的目錄
MYSQL_DATADIR指定Mysql的資料目錄
  • mysql的安全方式
mysql能限制ip訪問、訪問需要使用者名稱密碼、mysql許可權還能再細分
預設讓127.0.0.1訪問,使用者名稱root,不需要密碼
mysql -uroot -h 127.0.0.1 -A # 登陸
  • 給MySQL設定密碼
mysqladmin -h 127.0.0.1 -u root password 'Vu39hbnx'
mysql -h 127.0.0.1 -uroot -pVu39hbnx -A
  • MySQL授權某ip登入
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.%' IDENTIFIED BY 'Vu39hbnx' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 網路登入MySQL
mysql -h 10.0.0.15 -uroot -pVu39hbnx -A

1.4 LNMP環境驗證

使用者 --> php檔案
使用者 --> nginx --> 127.0.0.1:9000 --> php-fpm --> mysql
  • 編寫一個PHP檔案/usr/local/nginx/html/test_mysql.php
<?php
  $link=mysql_connect("127.0.0.1","root","Vu39hbnx"); 
  if(!$link){
    echo "mysql_connect fail";
  }else{
    echo "mysql_connect success";
  }
?>

瀏覽器訪問:http://ip/test_mysql.php

<?php
header("Content-type:text/html;charset=utf-8");
$server="127.0.0.1";
$username="root";
$password="Vu39hbnx";
echo '開始mysql資料庫連線.<br><br><br>';
$mysqli=new mysqli($server,$username,$password);
if($mysqli)
{
    echo '連線mysql資料庫成功.<br>';
    echo 'You can use \'new mysqli()\' to connect.<br><br>';
    $mysqli->close();
}
if($con1= mysqli_connect($server,$username,$password))
{
    echo '連線mysql資料庫成功.<br>';
    echo 'You can use mysqli_connect() to connect.<br><br>';
    mysqli_close($con1);
}
if($con2=mysql_connect($server,$username,$password)) 
{
    echo '連線mysql資料庫成功.<br>';
     echo 'You can use mysql_connect() to connect.<br><br>';    
     mysql_close($con2);
}
else
{
    die('連線mysql資料庫失敗:' . mysql_error());
}
echo '<br><br><br>';
echo '關閉mysql資料庫連線.';
?>

2、zabbix4.0版本的編譯安裝

  • zabbix的部署原理
zabbix server需要把監控資料入sql資料庫,所以得Mysql環境
zabbix的web是基於php開發的,所以得LNMP環境
部署zabbix server和zabbix web

2.1 zabbix4.0編譯安裝

# 1.安裝依賴
yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
# 2.新增zabbix使用者
useradd -s /sbin/nologin zabbix
# 3.下載原始碼包
cd /usr/local/src/ && wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'
# 4.解壓
tar -zxvf zabbix-4.0.3.tar.gz && cd zabbix-4.0.3
# 5.編譯安裝
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
make  && make install
# 6.配置環境變數
echo "export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/" >> /etc/profile
source /etc/profile
# 7.初始化資料庫
mysql -h 127.0.0.1 -uroot -pVu39hbnx -A
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'Vu39hbnx';
flush privileges;
set names utf8;
use zabbix;
source /usr/local/src/zabbix-4.0.3/database/mysql/schema.sql;
source /usr/local/src/zabbix-4.0.3/database/mysql/data.sql;
source /usr/local/src/zabbix-4.0.3/database/mysql/images.sql;
# 8.配置zabbix server,最主要是配置連線mysql的使用者名稱和密碼
vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=3000
# 9.啟動zabbix-server
chown -R zabbix.zabbix /usr/local/zabbix/
zabbix_server
  • 編譯引數說明
--prefix指定安裝目錄
--enable-server安裝zabbix server
--enable-agent安裝zabbix agent
--with-mysql用mysql來儲存

2.2 zabbix-web安裝

# 建立zabbix-web目錄
mkdir -p /usr/local/nginx/html/zabbix
# 將zabbix-web檔案複製到目錄中
cp -a /usr/local/src/zabbix-4.0.3/frontends/php/* /usr/local/nginx/html/zabbix/

瀏覽器訪問:http://ip/zabbix

2.3 配置web介面

根據檢查需求Fail的地方進行修改

vim /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1

修改完php.ini檔案之後要重啟php:

systemctl restart php.service

然後重新整理網頁:

配置zabbix-web資料庫連線:

下一步,配置Zabbix server details:

詳細配置資訊:

zabbix-web無法建立配置檔案:

  • 根據提示操作
Alternatively, you can install it manually:

1. Download the configuration file  # 下載zabbix-web生成的配置檔案
2. Save it as "/usr/local/nginx/html/zabbix/conf/zabbix.conf.php"  # 將配置檔案放在伺服器`/usr/local/nginx/html/zabbix/conf/`下

scp zabbix.conf.php [email protected]:/usr/local/nginx/html/zabbix/conf/

上傳配置檔案到指定位置之後,重新整理網頁:

完成安裝:

![image-20190604083949002](/Users/mac/Library/Application Support/typora-user-images/image-20190604083949002.png)

2.4登陸Zabbix

  • zabbix-web預設使用者名稱為:Admin
  • zabbix-web預設密碼為:zabbix

  • 禁用本身監控

zabbix預設監控zabbix-server本身,如果不需要的話可以在設定中將zabbix-server本身的監控禁用掉即可:

  • 禁用guset使用者

為了安全起見,我們要將不需要的使用者禁用或者刪除掉,在zabbix中,每一個使用者都必須有一個使用者組,所有的許可權之類的操作都是在使用者組中操作的,無法對單個使用者操作:

  • 修改Admin密碼

zabbix預設使用者名稱密碼大家都知道,為了安全起見也需要修改Admin的密碼:

2.5網頁漢化

zabbix-web預設使用英文,支援切換成中文,但是預設直接切換到中文的話在監控的圖形中會有亂碼的現象,我們需要修改zabbix使用的字型。

  • 切換zabbix-web預設語言為中文

更新之後,網頁自動重新整理並切換為中文顯示:

  • 在[監測]-->[圖形]中的圖形中會出現中文亂碼

  • 解決亂碼問題
  1. 下載微軟雅黑字型
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
  1. 上傳微軟雅黑字型到zabbix字型存放路徑
scp msyh.ttf [email protected]:/usr/local/nginx/html/zabbix/fonts/
  1. 修改zabbix-web網頁字型配置為msyh.ttf
vim /usr/local/nginx/html/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME',           'msyh'); // font file name
define('ZBX_FONT_NAME', 'msyh');
  1. 驗證是否解決亂碼問題