編譯安裝Zabbix4.0
阿新 • • 發佈:2020-08-06
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預設語言為中文
更新之後,網頁自動重新整理並切換為中文顯示:
- 在[監測]-->[圖形]中的圖形中會出現中文亂碼
- 解決亂碼問題
- 下載微軟雅黑字型
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
- 上傳微軟雅黑字型到zabbix字型存放路徑
scp msyh.ttf [email protected]:/usr/local/nginx/html/zabbix/fonts/
- 修改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');
- 驗證是否解決亂碼問題