#安裝zabbix監控首先的先安裝LNMP環境,在這裏我採用事先準備好的腳本進行安裝LNMP環境 腳本內容如下:
#!/bin/bash
# DATE:Wed Jan 17 1# [email protected] 3 #this is a lnmp-install
# The Nginx service is being installed
ROOT_ID=0
ML=/usr/local/src
NGINX_ML=/usr/local/src/nginx-1.12.2
PML=/usr/local/src/php-5.6.27
QD=`netstat -anpt | grep 80 | awk '{print $7}' | cut -d "/" -f2 | cut -d ":" -f1`
ADDR=`ip a | grep eth0$ | awk '{print $2}' | cut -d "/" -f1`
MMM=`netstat -anput | grep mysqld | awk '{print $4}' | cut -d ":" -f4`
MAR=`rpm -qa | grep mariadb`
cd $ML && {
wget http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
mv Centos-7.repo /etc/yum.repos.d/Centos-Base.repo
yum clean all &> /dev/null
yum makecache &> /dev/null
}
if [ $? -eq 0 ]
then
echo "Yum源更新完畢,開始安裝!!!"
else
echo "Yum源error"
exit 1
fi
echo "Yum源配置成功"
if [ "$UID" -eq "$ROOT_ID" ]
then
echo "root用戶運行中" && systemctl stop firewalld && yum install -y gcc gcc-c++ pcre-devel zlib-devel openssl-devel &> /dev/null
else
echo "請使用Root用戶運行"
exit 1
fi
echo "依賴包安裝完成!"
cd $ML || {
echo "進入目錄失敗!!!"
exit 1
}
wget http://nginx.org/download/nginx-1.12.2.tar.gz &> /dev/null && {
tar zxf nginx-1.12.2.tar.gz && groupadd www && useradd -g www www -s /sbin/nologin
}
echo "Nginx包下載成功"
cd $NGINX_ML && {
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www &> /dev/null && make &> /dev/null && make install &> /dev/null
}
if [ $? -eq "0" ]
then
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ;nginx && echo "Nginx啓動成功,請訪問http://$ADDR:80"
else
echo "Nginx啓動失敗!!!"
exit 1
fi
#Start installing MySQL5.7!
echo "開始下載MySQL二進制安裝包,請稍等..."
if [ -z "$MAR" ]
then
echo "開始安裝MySQL"
fi
if [ -n "$MAR" ]
then
rpm -e mariadb-libs --nodeps && echo "卸載mariadb成功!正式安裝MySQL"
fi
cd $ML || {
echo "進入目錄失敗!!!"
exit 1
}
#wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz &> /dev/null && {
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz && {
tar zxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/ && mkdir data && mkdir log && echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile && groupadd mysql && useradd -r -g mysql -s /bin/false mysql
}
cat << EOF >/etc/my.cnf
[client]
socket=/usr/local/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
socket=/usr/local/mysql/mysql.sock
log_error=/usr/local/mysql/log/mysql.err
EOF
if [ ! -d /etc/my.cnf ]
then
chmod 750 data/ && chown -R mysql . && chgrp -R mysql . && bin/mysqld --initialize --user=mysql && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && service mysqld start &> /dev/null
else
echo "錯誤!!!"
fi
if [ $? -eq "0" ]
then
echo "MySQL正式安裝完成殺青!"
else
echo "MySQL安裝失敗!!!"
exit 1
fi
#PHP install sccessy
yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null
if [ $? -eq 0 ]
then
echo "依賴包安裝成功!!!"
else
echo "依賴包安裝失敗!!!"
fi
cd $ML || {
echo "進入目錄失敗!!!"
exit 1
}
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz &> /dev/null && {
tar zxf libmcrypt-2.5.7.tar.gz && cd libmcrypt-2.5.7/ && ./configure --prefix=/usr/local/libmcrypt &> /dev/null && make &> /dev/null && make install &> /dev/null
}
if [ $? -eq 0 ]
then
echo "Libmcrypt安裝成功!"
else
echo "Libmcrypt-ERROR!"
exit 1
fi
# PHP install
cd $ML || {
echo "進入目錄失敗!!!"
exit 1
}
wget http://cn2.php.net/distributions/php-5.6.27.tar.gz &> /dev/null && {
tar zxf php-5.6.27.tar.gz && cd php-5.6.27/ && ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts &> /dev/null
}
if [ $? -eq 0 ]
then
make &> /dev/null && make install &> /dev/null && echo "PHP編譯安裝成功,正在配置請稍等...."
else
echo "PHP安裝失敗"
fi
cd $PML || {
echo "進入目錄失敗!!!"
exit 1
}
cp php.ini-production /etc/php.ini && {
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod +x /etc/init.d/php-fpm && chkconfig --add php-fpm && chkconfig php-fpm on
}
if [ $? -eq 0 ]
then
cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf && echo "複製主配置成功"
else
echo "PHP權限失敗,請重試!"
fi
if [ ! -d /usr/local/php5.6/etc/php-fpm.conf ]
then
sed -i 's#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g' /usr/local/php5.6/etc/php-fpm.conf
sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g' /usr/local/php5.6/etc/php-fpm.conf
sed -i 's/pm.max_children = 5/pm.max_children = 300/g' /usr/local/php5.6/etc/php-fpm.conf
sed -i 's/pm.start_servers = 2/pm.start_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf
sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' /usr/local/php5.6/etc/php-fpm.conf
sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' /usr/local/php5.6/etc/php-fpm.conf
else
echo "NONONO"
fi
if [ $? -eq 0 ]
then
systemctl start php-fpm && echo "PHP啓動成功"
else
echo "啓動PHP失敗"
fi
#配置nginx解析php
if [ ! -d /usr/local/nginx/conf/nginx.conf ]
then
sed -i 's/index index.html index.htm;/index index.php index.html index.htm;/g' /usr/local/nginx/conf/nginx.conf
sed -i 's/# root html;/ root html;/g' /usr/local/nginx/conf/nginx.conf
sed -i 's/# fastcgi_pass 127.0.0.1:9000;/ fastcgi_pass 127.0.0.1:9000;/g' /usr/local/nginx/conf/nginx.conf
sed -i 's/# fastcgi_index index.php;/ fastcgi_index index.php;/g' /usr/local/nginx/conf/nginx.conf
sed -i 's*# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;* fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;*g' /usr/local/nginx/conf/nginx.conf
sed -i 's/# include fastcgi_params;/ include fastcgi.conf;/g' /usr/local/nginx/conf/nginx.conf
sed -i '71d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;70a}' /usr/local/nginx/conf/nginx.conf
sed -i '65d' /usr/local/nginx/conf/nginx.conf && sed -i 'N;64alocation ~ \\.php$ {' /usr/local/nginx/conf/nginx.conf
else
echo "解析PHP失敗!!!"
fi
touch /usr/local/nginx/html/phptest.php
cat << EOF >/usr/local/nginx/html/phptest.php
<?php
phpinfo();
?>
EOF
if [ ! -d /usr/local/nginx/html/phptest.php ]
then
nginx -s reload && systemctl restart php-fpm
else
echo "測試目錄文件失敗"
fi
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &> /dev/null && yum install -y sl &> /dev/null
sl
if [ $? -eq 0 ]
then
echo "LNMP安裝成功,請您訪問http://$ADDR/phptest.php"
else
echo "安裝失敗"
fi
if [ $? -eq 0 ]
then
echo "LNMP安裝成功,請您訪問http://$ADDR/phptest.php"
else
echo "安裝失敗"
fi
###################################################################################################This is a lnmp-install~
以上爲lnmp環境的搭建,不要準備包,全部在線下載,整個過程最多30分鐘,這個只是基本的lnmp環境
如果說要安裝zabbix4.0的話還需要滿足他的先決條件,在這裏我們一步步的來,遇到阻擋了再去安裝。
zabbix4.0的先決條件先貼出來
Pre-requisite | Minimum value | Description |
---|---|---|
PHP version | 5.4.0 | |
PHP memory_limit option | 128MB | In php.ini: memory_limit = 128M |
PHP post_max_size option | 16MB | In php.ini: post_max_size = 16M |
PHP upload_max_filesize option | 2MB | In php.ini: upload_max_filesize = 2M |
PHP max_execution_time option | 300 seconds (values 0 and -1 are allowed) | In php.ini: max_execution_time = 300 |
PHP max_input_time option | 300 seconds (values 0 and -1 are allowed) | In php.ini: max_input_time = 300 |
PHP session.auto_start option | must be disabled | In php.ini: session.auto_start = 0 |
Database support | One of: MySQL, Oracle, PostgreSQL, IBM DB2 | One of the following modules must be installed: mysql, oci8, pgsql, ibm_db2 |
bcmath | php-bcmath | |
mbstring | php-mbstring | |
PHP mbstring.func_overload option | must be disabled | In php.ini: mbstring.func_overload = 0 |
PHP always_populate_raw_post_data option | must be disabled | Required only for PHP versions 5.6.0 or newer. In php.ini: always_populate_raw_post_data = -1 |
sockets | php-net-socket. Required for user script support. | |
gd | 2.0 or higher | php-gd. PHP GD extension must support PNG images (--with-png-dir), JPEG (--with-jpeg-dir) images and FreeType 2 (--with-freetype-dir). |
libxml | 2.6.15 | php-xml or php5-dom |
xmlwriter | php-xmlwriter | |
xmlreader | php-xmlreader | |
ctype | php-ctype | |
session | php-session | |
gettext | php-gettext Since Zabbix 2.2.1, the PHP gettext extension is not a mandatory requirement for installing Zabbix. If gettext is not installed, the frontend will work as usual, however, the translations will not be available. |
下面開始安裝zabbix4.0
軟件包下載地址:https://www.zabbix.com/download_sources
解壓軟件包:
yum install -y net-snmp-devel
tar zxf zabbix-4.0.0.tar.gz
cd zabbix-4.0.0
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
在這裏有可能會發生報錯:
現象1:
configure: error: Not found mysqlclient library
解決:將編譯時的--with-mysql後面跟上數據庫的安裝路徑
1 make && make install
到這裏安裝成功,下面開始配置各項配置文件
1 vim /usr/local/zabbix/etc/zabbix_server.conf
2 DBHost=localhost #默認註釋掉了,直接取消註釋即可
3 DBName=zabbix #數據庫名字
4 DBUser=zabbix #默認是root,我們授權的用戶是zabbix
5 DBPassword=zabbix #密碼我們授權的也是zabbix
下面是數據庫的導入與授權操作
1.先登錄數據庫
在這裏也許你會不知道數據庫該怎麼登錄,因爲你並不知道數據庫密碼
初始密碼獲取方法: cat /usr/local/mysql/log/mysql.err | grep password
黃色框裏面的就是數據庫的初始密碼了
登錄數據庫以後必須更改初密碼,否則無法進行建庫等操作
更改密碼:
1 use mysql;
2 update user set password=password('mysql') where user='root';
3 flush privileges;
4 create database zabbix;
5 grant all on zabbix.* to zabbix@'localhost' identified by 'zabbixmysql';
6 flush privileges;
接下來是導入數據庫:
1 cd /usr/src/zabbix-4.0.0
2 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/schema.sql
3 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/images.sql
4 mysql -uzabbix -pzabbixmysql zabbix < database/mysql/data.sql
下面我們可以寫一個數據庫連通性的測試頁面放到nginx的html目錄下:
1 vim /usr/local/nginx/html/mysqltest.php
1 <?php 2 $link=mysql_connect('localhost','zabbix','zabbix'); 3 if($link) echo "<h1>The database connection was successful!</h1>"; 4 else echo "<h1>The database connection was Fail!!</h1>"; 5 mysql_close(); 6 ?>
瀏覽器訪問nginx的IP後面加上測試文件文件名出先下面內容則代表連接成功:
接下來就是進入zabbix的web界面了,這時候需要把前端文件copy到nginx的HTML目錄下
1 mkdir /usr/local/nginx/html/zabbix 2 cd /usr/src/zabbix-4.0.0/frontends/php/ 3 cp * /usr/local/nginx/html/zabbix/
進入web界面:http://ip/zabbix/
下面是安裝過程遇到的問題
提示不滿足zabbix的先決條件
根據提示去更改php.ini的相關數值,參考上面的先決條件
在這個過程可能會涉及到php模塊的安裝,可以參考php擴展模塊的安裝方法安裝就能完成
php擴展模塊安裝方法:https://www.cnblogs.com/hw226234/p/9777616.html
本文來自我的個人博客:https://www.cnblogs.com/hw226234/