Shell——zabbix源码安装

本文介绍了一个脚本,用于在CentOS 7上快速安装和配置Zabbix 5.0,包括Nginx、PHP和MySQL,以及zabbix_server和zabbix_agent的部署,适合运维人员简化部署流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

脚本简介

  1. 基于运维统一脚本中,9、监控服务下的Zabbix选项
  2. 使用yum安装(yum仓库)基础软件,系统版本Centos7
  3. 使用Centos7构建lnmp环境,然后通过脚本实现zabbix5.0的安装部署

脚本注解

  1. 该脚本为了在新安装的Centos7服务器上快速完成zabbix服务的安装部署(使用方式需要自行查看)

脚本结构

  1. base_install.sh
    • 脚本涉及lnmp、zabbix环境的相关操作,通过函数进行封装后通过下面两个脚本调用
    • 其中lnmp环境的编译安装时,添加了监控模块vts,可通过http://ip:port/status可访问基础面板
  2. start_zabbix_server.sh
    • zabbix server 端,通过调用上边的定义的函数,实现zabbix server+zabbix agent的构架
  3. start_zabbix_agentd.sh
    • zabbix agent端,通过调用上边的定义的函数,采用同类型的yum仓库安装,实现zabbix agent的构架
    • 离线安装包(rpm),为准备,如若需要,自行下载rpm下载,需要先找一台可联网的机器执行当前agent的脚本(装配yum源,版本需要与源码包的版本保持一致)
    • 如果不想安装agent,则可以执行安装yum源
#添加yum
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#重新加载yum仓库
yum makecache
  1. 模板中包含CentOS-Base.repo nginx.conf php.ini zabbix_server.conf文件
    • CentOS-Base.repo == 阿里云yum源文件
    • nginx.conf == 添加vts模块的nginx配置文件
    • php.ini == 符合zabbix使用的php-fpm
    • zabbix_server.conf == zabbix server的主配置文件(可自行修改端口,agent服务端地址)

注意事项

  1. 因为该脚本是从运维统一脚本(Run)拆分得来的,所有该脚本建议是测试环境使用,第一次使用的时候建议使用虚拟机或者云主机
  2. 有些场景可能会出现问题,但是新装的Centos7.5,7.6这两个系统版本本人亲测无误,其他的机器未过多的涉及
  3. 执行 start_zabbix_server.sh脚本时
    • 采用的是源码包+rpm安装的(依赖包),所以如果服务器无法连接外网的情况下,需要提前准备好基础依赖包,需要根据不同的系统版本进行实测方可下载(自行解决)
    • 源码包下载地址见:https://blog.youkuaiyun.com/qq_44246980/article/details/124528778
    • 也可以使用官网下载(自行查找

修改脚本

  1. 根据脚本内容上方写的变量,尤其是start_zabbix_agent.sh中zabbix_server_ip="192.168.1.123"这个是服务端zabbix的地址,需要根据实际情况修改
  2. 其他的变量自行根据实际情况修改,如果不想修改,则可下载安装包,然后新建目录,把所有的安装包存放到template/zabbix目录下,然后修改一下agent的地址即可
  3. 脚本中提示信息已存放相关安装包的下载地址
#判断模板目录文件是否存在
pd_template(){
  cd ${template}
  for name in ${tar_name}
    do
     if [ ! -f ${name} ];then
         info1 "${name} 不存在"
         zabbix_help ${name}
         continue
    fi
  done
  info "离线安装包已提前存放在百度网盘中"
  info "链接:https://pan.baidu.com/s/1CbgVKboTbFbqnEsDD-X-zw "
  info "提取码:ekj7" 
  
}

执行方式

sh start_zabbix_server.sh
#安装服务端时,因为需要php环境,所以编译时需要消耗大量时间,测试是采用2C4G,安装服务端用了大约30分钟
#日志写入到文件中,需要手动查看(屏幕中会提示日志路径^~^)
sh start_zabbix_agent.sh
#联网直接yum安装,无需多言
安装完成后,简单配置后的界面

在这里插入图片描述

模板配置

CentOS-Base.repo
  1. 文件内容较多,建议自行下载,然后保存到template/zabbix目录下
curl http://mirrors.aliyun.com/repo/Centos-7.repo > template/zabbix/CentOS-Base.repo
#相对路径,自行更改
nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;

    keepalive_timeout  65;
    vhost_traffic_status_zone;

    log_format access '[$time_local] $remote_addr $status $request_time $upstream_response_time '   
                  '$body_bytes_sent "$request" "$http_referer" $upstream_addr '          
                  '$http_x_real_ip "$http_x_forwarded_for"  $http_user_agent" $request_filename ';

 server {
        listen       80;
        server_name  localhost;
        #access_log  logs/host.access.log  main;
        root  /usr/local/nginx/html;

        location / {
                index   index.php index.html;

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
          }

        access_log logs/zabbix.access.log access;

        location /status {
                 vhost_traffic_status_display;
                 vhost_traffic_status_display_format html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
              root   html;
        }
    }
}

php.ini
[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = -1
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 32M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
date.timezone = Asia/Shanghai
[filter]
[iconv]
[imap]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = On
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.sid_bits_per_character = 5
[Assertion]
zend.assertions = 1
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[dba]
[opcache]
[curl]
[openssl]

zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
StartPollers=10
StartTrappers=30
CacheSize=256M
TrendCacheSize=256M
ValueCacheSize=256M
Timeout=10
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

脚本内容

start_zabbix_server.sh
#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
#                                   定义变量                                #
#################################################################################
basepath=$(cd `dirname $0`; pwd)
envs="bcbx"
name="zabbix"
dir="/opt/images/tmp"
log_dir="${basepath}/log"
####################
#离线安装lnmp(物理) #
####################
#源码包名称
lnmp_nginx_name="nginx-1.19.9.tar.gz"
lnmp_nginx_dir="nginx-1.19.9"
lnmp_nginx_vts="nginx-module-vts-master.zip"
lnmp_vts_dir="nginx-module-vts-master"
lnmp_php72_name="php-7.2.29.tar.gz"
lnmp_php72_dir="php-7.2.29"
lnmp_log="lnmp"

#工作目录 
lnmp_mariadb_worker="/var/lib/mysql"
zabbix_worker="/usr/local/zabbix"
nginx_dir="/usr/local/nginx"
vts_dir="/usr/local" 
######################
#离线安装zabbix(物理)
zabbix_server_name="zabbix-5.0.22.tar.gz"
zabbix_server_dir="zabbix-5.0.22"
zabbix_log="zabbix"
#agentd配置文件路径
agentd_conf_dir="/etc/zabbix/zabbix_agentd.conf"
zabbix_server_ip="106.15.78.83"
agent_hostname="node01"
source ${basepath}/base_install.sh
template="${basepath}/template/zabbix" #模板目录,离线安装包目录
tar_name=`echo "${lnmp_nginx_name} ${lnmp_nginx_vts} ${lnmp_php72_name} ${zabbix_server_name} nginx.conf php.ini zabbix_server.conf"`


#################################################################################

#判断模板目录文件是否存在
pd_template(){
  cd ${template}
  for name in ${tar_name}
    do
     if [ ! -f ${name} ];then
         info1 "${name} 不存在"
         zabbix_help ${name}
         continue
    fi
  done
  info "离线安装包已提前存放在百度网盘中"
  info "链接:https://pan.baidu.com/s/1CbgVKboTbFbqnEsDD-X-zw "
  info "提取码:ekj7" 
  
}


#安装zabbix环境
run(){
  #创建临时构建镜像目录
  info4
  mkdir_tmp_dir 
  #拷贝源码包
  info4
  copy_files 

  #lnmp环境的日志
  log_dir_tmp="$(cd ${log_dir}/${lnmp_log}; pwd)"
  #zabbix环境的日志
  zabbix_log_tmp="$(cd ${log_dir}/${zabbix_log}; pwd)"
  #安装lnmp基础环境
  lnmp_install
  #启动lnmp基础环境
  start_lnmp
  #安装zabbix基础环境
  info4
  install_zabbix
}
pd_template
run


start_zabbix_agnet.sh
#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
#                                   加载函数配置                                #
#################################################################################
basepath=$(cd `dirname $0`; pwd)
envs="bcbx"
name="zabbix"
dir="/opt/images/tmp"
log_dir="${basepath}/log"
######################
#离线安装zabbix(物理)
zabbix_server_name="zabbix-5.0.22.tar.gz"
zabbix_server_dir="zabbix-5.0.22"
zabbix_log="zabbix"
#agentd配置文件路径
agentd_conf_dir="/etc/zabbix/zabbix_agentd.conf"
zabbix_server_ip="106.15.78.83"
agent_hostname="node01"
source ${basepath}/base_install.sh

#################################################################################
#安装zabbix环境
run(){
  #zabbix环境的日志
  [ -d ${log_dir}/${zabbix_log}/agentd ] || mkdir -p  ${log_dir}/${zabbix_log}/agentd
  zabbix_log_tmp="$(cd ${log_dir}/${zabbix_log}; pwd)"
  info4
  

  [ $? -eq 0 ] && info2 "创建临时构建目录: 【${zabbix_log_tmp}/agentd】success"

  #安装zabbix基础环境
  info4
  install_zabbix_agentd
}
run

base_install.sh
#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
#                                   定义变量                                    #
#################################################################################
info(){
  echo -e "\033[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`\033[0m" "\033[36m$1\033[0m "
}
info1(){
  echo -e "\033[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`\033[0m" "\033[91m$1\033[0m "
}
info2(){
  echo -e "\033[32m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`\033[0m" "\033[36m$1\033[0m "
}
info3(){
 echo -e "\033[36m----------------------------------------------------------------------------\033[0m" 
}
info4(){
 echo -e "\033[34m+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\033[0m"
}
info5(){
  echo -e "\033[91m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`\033[0m" "\033[34m$1\033[0m "
}
##########################################################################################
#创建临时构建镜像目录
mkdir_tmp_dir(){
  if [ -d ${dir}/${tmp_dir} ] && [ -d ${log_dir}/${lnmp_log} ] && [ -d ${log_dir}/${zabbix_log} ] ;then
      rm -rf ${dir}/${tmp_dir}
      rm -rf ${log_dir}/${lnmp_log}
      rm -rf ${log_dir}/${zabbix_log}
      info1 "删除临时构建目录: 【${dir}/${tmp_dir}】success"
       #创建临时目录
       mkdir_tmp_dir
   else
     mkdir -p ${dir}/${tmp_dir}
     mkdir -p ${log_dir}/${lnmp_log}
     mkdir -p ${log_dir}/${zabbix_log}
  info2 "创建临时构建目录: 【${dir}/${tmp_dir}】success"
  fi
}

#拷贝包
copy_files(){
  for i in ${tar_name}
    do
      cp  ${template}/${i} ${dir}/${tmp_dir} -r
    done
  info2  "源码包拷贝到指定目录下: ${dir}/${tmp_dir}"
  info2 "名称是:${tar_name}"
  #cp ${tar_dir} ${dir}/${tmp_dir}
}

#构建lnmp基础环境
#使用system管理nginx
add_nginx_service(){
echo "[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT ${MAINPID}
[Install]
WantedBy=multi-user.target
" > /usr/lib/systemd/system/nginx.service
}
install_nginx(){
  local  log_name="nginx" rpm_install=`rpm -qa |egrep "^make|^gcc|^unzip|^tar|^net-tools|^openssl" |wc -l`
  cd ${dir}/${tmp_dir} 
    if [ ${rpm_install} -ne 8 ];then
         info "安装${log_name}基础依赖包,请等待"
       yum -y install make gcc unzip  openssl openssl-devel net-tools tar > ${log_dir}/${lnmp_log}/yum_install_${log_name}.log
    fi
    #解压
    tar -xf ${dir}/${tmp_dir}/${lnmp_nginx_name} -C  ${dir}/${tmp_dir}
     [ $? -eq 0 ] && info "${lnmp_nginx_name} 解压成功,解压到${dir}/${tmp_dir}"
    if [ -d ${vts_dir}/${lnmp_vts_dir} ];then
       rm -rf  ${vts_dir}/${lnmp_vts_dir}
       unzip -d ${vts_dir}  ${dir}/${tmp_dir}/${lnmp_nginx_vts} >${log_dir}/${lnmp_log}/unzip_vts.log
    else
       unzip -d ${vts_dir}  ${dir}/${tmp_dir}/${lnmp_nginx_vts} >${log_dir}/${lnmp_log}/unzip_vts.log
    fi
     
     [ $? -eq 0 ] && info "${lnmp_nginx_vts} 解压成功,解压到${vts_dir}/${lnmp_vts_dir}"
     
     #源码编译安装nginx
     if [ -d ${vts_dir} ] && [ -d ${dir}/${tmp_dir}/${lnmp_nginx_dir} ];then
     info "源码编译安装,请等待!!!"
     info1 "日志查看:${log_dir_tmp}"
     cd ${dir}/${tmp_dir}/${lnmp_nginx_dir} 
     ./configure  --prefix=${nginx_dir} --with-http_ssl_module --with-http_stub_status_module --add-module=${vts_dir}/${lnmp_vts_dir} > ${log_dir}/${lnmp_log}/configure_nginx.log 
      [ $? -eq 0 ] && info2 "configure 执行成功,编译中,请等待!!!"
      make > ${log_dir}/${lnmp_log}/make_${log_name}.log  
      [ $? -eq 0 ] && info2 "make 执行成功,编译安装中,请等待!!!"
      make install  > ${log_dir}/${lnmp_log}/make_install_${log_name}.log 
      if [ $? -eq 0 ];then 
        info2 "${lnmp_nginx_dir} install success"
          cp ${dir}/${tmp_dir}/nginx.conf ${nginx_dir}/conf/nginx.conf
          add_nginx_service
        info2 "nginx 环境安装成功"
      fi
     else
       info1 "${vts_dir}or${dir}/${tmp_dir}/${lnmp_nginx_dir} not found"
       exit 0
    fi
}

install_mariadb(){
   local rpm_install=`rpm -qa |egrep "^mariadb" |wc -l`
  cd ${dir}/${tmp_dir} 
  if [ ${rpm_install} -ne 4 ];then
       info1 "正在安装mariadb数据库服务, 请等待!!!"
       yum -y install mariadb-server mariadb > ${log_dir}/${lnmp_log}/yum_mariadb.log
       info2 "mariadb install success"
  elif [ ${rpm_install} -eq 4 ];then 
      info "\033[37m mariadb already success\033[0m"
  fi
}


install_php(){
  local php_dir="/usr/local/php72" log_name="php"
  local rpm_install=`rpm -qa |egrep "^systemd-devel|^libxml2-devel|^libjpeg-devel|^libpng-devel|^libpng|^freetype-devel" |wc -l`
  cd ${dir}/${tmp_dir} 
    if [ ${rpm_install} -ne 5  ];then
      info "安装${log_name}基础依赖包,请等待"
       yum -y install systemd-devel  libxml2-devel libjpeg-devel libcurl-dev libpng-devel libpng freetype-devel> ${log_dir}/${lnmp_log}/yum_install_${log_name}.log
    elif [ ${rpm_install} -eq 3 ];then 
      info "\033[37m PHP dependency package already success\033[0m"
    fi
    #解压
    tar -xf ${dir}/${tmp_dir}/${lnmp_php72_name} -C  ${dir}/${tmp_dir}
     [ $? -eq 0 ] && info "${lnmp_php72_name} 解压成功,解压到${dir}/${tmp_dir}/${lnmp_php72_dir}"
     
     #源码编译安装php
     info "${lnmp_php72_name}源码编译安装,请等待!!!"
     info1 "日志查看:${log_dir_tmp}"
     cd ${dir}/${tmp_dir}/${lnmp_php72_dir} 
     ./configure  --prefix=${php_dir} --enable-mbstring --with-openssl --enable-ftp --with-gd --with-jpeg-dir=/usr  \
         --with-png-dir=/usr --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr \
         --with-zlib --with-libxml-dir=/usr       --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd \
         --with-zlib      --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ \
         --enable-soap --enable-pcntl --enable-cli --with-curl --enable-bcmath  --with-gettext\
       > ${log_dir}/${lnmp_log}/configure_${log_name}.log 
      [ $? -eq 0 ] && info2 "configure 执行成功,编译中,日志:${log_dir_tmp}/configure_${log_name}.log ,请等待!!!"
      make > ${log_dir_tmp}/make_${log_name}.log  
     [ $? -eq 0 ] && info2 "make 执行成功,编译安装中,日志:${log_dir_tmp}/make_${log_name}.log,请等待!!!"
      make install  > ${log_dir_tmp}/make_install_${log_name}.log 
      if [ $? -eq 0 ];then 
        info2 "${lnmp_php72_dir} 编译安装成功,日志:${log_dir_tmp}/make_install_${log_name}.log "
        info3
        info "修改php的配置文件"
           cp ${dir}/${tmp_dir}/${lnmp_php72_dir}/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php72-fpm.service 
           cd ${php_dir}/etc/ 
             cp php-fpm.conf.default php-fpm.conf 
           cd ${php_dir}/etc/php-fpm.d/ 
             cp www.conf.default www.conf 
             cp ${dir}/${tmp_dir}/php.ini ${php_dir}/lib/php.ini
             sed -i '/pid/s/\;//' ${php_dir}/etc/php-fpm.conf 
             sed -i '/error_log/s/\;//' ${php_dir}/etc/php-fpm.conf  
             sed -i '/^user/s/nobody/nginx/' ${php_dir}/etc/php-fpm.d/www.conf 
             sed -i '/^group/s/nobody/nginx/' ${php_dir}/etc/php-fpm.d/www.conf 
             info2 "php72 install success"
             useradd -s /sbin/nologin nginx 
             info2 "php 环境安装成功"
      fi
}
init_zabbix(){
  info "开始初始化数据库,并导入数据库表结构"
    mysqladmin -u root password "123456"
    mysql -uroot -p123456 -e 'create database zabbix character set utf8 collate utf8_bin;'  
    mysql -uroot -p123456 -e 'grant all privileges on zabbix.* to zabbix@"localhost" identified by "zabbix";'
   #Initial architecture and data
   cd ${dir}/${tmp_dir}/${zabbix_server_dir}/database/mysql/
   mysql -uzabbix -pzabbix zabbix < schema.sql
   mysql -uzabbix -pzabbix zabbix < images.sql 
   mysql -uzabbix -pzabbix zabbix < data.sql 
}

install_zabbix(){
  local zabbix_dir="${zabbix_worker}" log_name="zabbix"
  local rpm_install=`rpm -qa |egrep "^make|^gcc|^unzip|^tar|^net-tools|^openssl" |wc -l`
  cd ${dir}/${tmp_dir} 
    if [ ${rpm_install} -eq 8 ];then
     info "安装${log_name}基础依赖包,请等待"
       yum -y install mysql-devel libcurl libevent sysvinit-tools libevent-devel fping curl-devel libxml2  libxml2-devel > ${zabbix_log_tmp}/yum_zabbix.log
    fi
    #解压
     tar -xf ${dir}/${tmp_dir}/${zabbix_server_name} -C  ${dir}/${tmp_dir}
     [ $? -eq 0 ] && info "${zabbix_server_name} 解压成功,解压到${dir}/${tmp_dir}"
    
     #源码编译安装zabbix
     if [ -d ${dir}/${tmp_dir}/${zabbix_server_dir} ];then
     info "源码编译安装,请等待!!!"
     info1 "日志查看:${zabbix_log_tmp}"
      if [[ `cat /etc/passwd| awk  -F: '{print $1}'|grep ^zabbix$` != zabbix ]];then
          groupadd --system zabbix
          useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitor" zabbix 
      fi

     cd ${dir}/${tmp_dir}/${zabbix_server_dir} 
     ./configure --prefix=${zabbix_dir} --enable-server --enable-agent --with-mysql --with-libcurl --with-libxml2 \
     > ${log_dir}/${lnmp_log}/configure_${log_name}.log 
      [ $? -eq 0 ] && info2 "日志:${zabbix_log_tmp}/configure_${log_name}.log,configure 执行成功,编译中"
      make > ${zabbix_log_tmp}/make_${log_name}.log  
      [ $? -eq 0 ] && info2 "日志:${zabbix_log_tmp}/make_${log_name}.log,make 执行成功,编译安装中 "
      make install  > ${zabbix_log_tmp}/make_install_${log_name}.log 

      if [ $? -eq 0 ];then 
        info2 "日志:${log_dir_tmp}/make_install_${log_name}.log ,${zabbix_server_dir} install success,"
        info3
        info "修改${log_name}的配置文件"
        cp ${dir}/${tmp_dir}/${zabbix_server_dir}/misc/init.d/fedora/core/zabbix_server /etc/init.d/ 
        cp ${dir}/${tmp_dir}/${zabbix_server_dir}/misc/init.d/fedora/core/zabbix_agentd  /etc/init.d/
        cp ${dir}/${tmp_dir}/zabbix_server.conf ${zabbix_dir}/etc/zabbix_server.conf 
        sed -i '/BASEDIR/s#/usr/local#/usr/local/zabbix#'  /etc/init.d/zabbix_server
        sed -i '/BASEDIR/s#/usr/local#/usr/local/zabbix#'  /etc/init.d/zabbix_agentd
        cd ${dir}/${tmp_dir}/${zabbix_server_dir}
         cp -rp ui/* ${nginx_dir}/html
         if [[ `cat /etc/passwd| awk  -F: '{print $1}'|grep ^nginx$` != nginx ]];then
             useradd -s /sbin/nologin nginx
             chown -R nginx:nginx ${nginx_dir}/html
        fi
         Active=`systemctl status mariadb|grep  "Active"|awk '{print $2}'`
          if [  $Active == "active" ];then
              #init mariadb
              info "清理之前导入的数据库库信息"
              rm -rf ${lnmp_mariadb_worker}/*
              systemctl restart mariadb
              init_zabbix
                 if [ $? -eq 0 ];then
                    info "${log_name} init success"
                    systemctl daemon-reload
                       /etc/init.d/zabbix_server restart
                       /etc/init.d/zabbix_agentd restart
                 else
                       info1 "${log_name} init fail"
                 fi
            else
                 info1 "mariadb not run"
                 systemctl restart mariadb
                 #init mariadb
                 init_zabbix
           fi
        info2 "zabbix 环境安装成功"
      fi
     else
       info1 "${dir}/${tmp_dir}/${zabbix_server_dir} not found"
       exit 0
    fi
}

sed_zabbix_agentd_conf(){
  sed -i  "/^Server/s/127.0.0.1/${zabbix_server_ip}/" ${agentd_conf_dir}
  sed -i  "/^Hostname/s/Zabbix server/${agent_hostname}/" ${agentd_conf_dir}

}


install_zabbix_agentd(){
   local log_name="zabbix_agentd"
   info "使用yum安装agentd,加载yum仓库,请等待!!!"
   local zabbix_rpm=`rpm -qa | grep zabbix-release-5.0-1|wc -l`

   if [[  ${zabbix_rpm} -eq 0 ]];then 
      info "加载zabbix-release——yum仓库,请等待!!!"
      rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm >/dev/null
      yum clean all >/dev/null
      if [[ `rpm -qa | grep zabbix-agent|wc -l` -eq 0 ]];then
           yum -y install zabbix-agent >> ${zabbix_log_tmp}/agentd/yum_${log_name}.log
           [ $? -eq 0 ] && info2 "${log_name} 安装成功"
             info "修改${agentd_conf_dir}文件,请等待!!!"
             sed_zabbix_agentd_conf
             if [ $? -eq 0 ];then 
                info2 "开始启动${log_name}服务,并设置开机自启!!!"
                  systemctl restart  zabbix-agent 
                  systemctl enable  zabbix-agent 
             else
                info1 "修改${agentd_conf_dir}文件失败,请手动更改后自行重启"
             fi
       else
          yum -y remove zabbix-release >/dev/null
          rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm >/dev/null
          conf_set=`grep ^Server /etc/zabbix/zabbix_agentd.conf |grep 127.0.0.1|wc -`
           if [ ${conf_set} -eq 2 ];then
              info "修改${agentd_conf_dir}文件,请等待!!!"
              sed_zabbix_agentd_conf 
                 if [ $? -eq 0 ];then 
                    info2 "开始启动${log_name}服务,并设置开机自启!!!"
                    systemctl restart  zabbix-agent 
                    systemctl enable  zabbix-agent 
                  else
                    info1 "修改${agentd_conf_dir}文件失败,请手动更改后自行重启"
                 fi
            else
               info1 "${agentd_conf_dir}文件已修改,不需要更改"
               systemctl restart  zabbix-agent 
               exit -1
            fi
       fi
   else
      yum clean all  >/dev/null
      if [[ `rpm -qa | grep zabbix-agent|wc -l` -eq 0 ]];then
           yum -y install zabbix-agent >> ${zabbix_log_tmp}/agentd/yum_${log_name}.log
           [ $? -eq 0 ] && info2 "${log_name} 安装成功"
             info "修改${agentd_conf_dir}文件,请等待!!!"
             sed_zabbix_agentd_conf
             if [ $? -eq 0 ];then 
                info2 "开始启动${log_name}服务,并设置开机自启!!!"
                  systemctl restart  zabbix-agent 
                  systemctl enable  zabbix-agent 
             else
                info1 "修改${agentd_conf_dir}文件失败,请手动更改后自行重启"
             fi
       else
          info1 "${zabbix-agent}已安装,请勿重复安装!!!"
          conf_set=`grep ^Server /etc/zabbix/zabbix_agentd.conf |grep 127.0.0.1|wc -l`
           if [ ${conf_set} -eq 2 ];then
              info "修改${agentd_conf_dir}文件,请等待!!!"
              sed_zabbix_agentd_conf 
                 if [ $? -eq 0 ];then 
                    info2 "开始启动${log_name}服务,并设置开机自启!!!"
                    systemctl restart  zabbix-agent 
                    systemctl enable  zabbix-agent 
                  else
                    info1 "修改${agentd_conf_dir}文件失败,请手动更改后自行重启"
                 fi
            else
               info1 "${agentd_conf_dir}文件已修改,不需要更改"
               systemctl restart  zabbix-agent 
               exit -1
            fi
       fi
  fi
  
}





lnmp_install(){

 #构建nginx+vts
 info4
 install_nginx

 #部署mysql服务
 info4
 install_mariadb

 #源码编译安装php
 info4
 install_php
}
#启动lnmp基础环境
start_lnmp(){
  systemctl daemon-reload
  systemctl restart nginx.service
  systemctl restart php72-fpm.service
  systemctl restart mariadb.service 
  #设置开机自启动
  systemctl enable nginx.service
  systemctl enable php72-fpm.service
  systemctl enable mariadb.service 
}



zabbix_help(){
   local tar_name="$1"
   if [ ${tar_name} == ${lnmp_nginx_name} ];then
      info5 "${lnmp_nginx_name}下载地址:http://nginx.org/download/"
    elif [ ${tar_name} == ${lnmp_nginx_vts} ];then
      info5 "${lnmp_nginx_vts}下载地址:https://github.com/vozlt/nginx-module-vts"
    elif [ ${tar_name} == ${lnmp_php72_name} ];then
      info5 "${lnmp_php72_name}下载地址:https://www.php.net/distributions/php-7.2.29.tar.gz"
    elif [ ${tar_name} == ${zabbix_server_name} ];then
      info5 "${zabbix_server_name}下载地址:https://www.zabbix.com/download_sources"
    fi
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城 半夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值