zoukankan      html  css  js  c++  java
  • Centos7一键编译安装zabbix-4.0.2

    ##只针对centos7的系统有效,centos6无效,mysql zabbix用户:zabbix,密码:zabbix;建议用全新的centos7服务器

    软件版本: (nginx-1.14.2、php-7.2.13、zabbix-4.0.2、mariadb-5.5.60、jdk-1.8.0_131),算是比较新的一个版本了

    #!/bin/bash
    #安装zabbix4.0脚本
    err_echo(){
        echo -e "33[41;37m[Error]: $1 33[0m"
        exit 1
    }
    
    info_echo(){
        echo -e "33[42;37m[Info]: $1 33[0m"
    }
    
    check_file_is_exists(){
        if [ ! -f "/usr/local/src/$1" ];then
            info_echo "$1开始下载"
        fi
    }
    
    check_exit(){
        if [ $? -ne 0 ]; then
            err_echo "$1"
            exit 1
        fi
    }
    
    check_success(){
        if [ $? -eq 0 ];then
            info_echo "$1"
        fi
    }
    
    [ $(id -u) != "0" ] && err_echo "please run this script as root user." && exit 1
    
    function init_servers(){
    
        info_echo "开始初始化服务器"
        sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
        setenforce 0
        systemctl stop firewalld.service
        systemctl disable firewalld.service
        
        info_echo "更换阿里源"
        yum install wget -y
        cp /etc/yum.repos.d/* /tmp
        rm -f /etc/yum.repos.d/*
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        yum clean all
    
    }
    
    function install_package(){
    
        info_echo "开始安装系统必备依赖包"
        yum install ntpdate gcc gcc-c++ wget lsof lrzsz -y
    
        info_echo "开始安装php所需依赖包"
        yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel
        yum install -y systemd-devel mysql-devel
        yum install -y openjpeg-devel
    
        info_echo "开始安装nginx所需依赖包"
    
        yum install -y pcre pcre-devel zlib zlib-devel
    }
    
    function download_install_package(){
    
        if [ ! -f "/usr/local/src/nginx-1.14.2.tar.gz" ];then
            info_echo "开始下载nginx-1.14.2.tar.gz"
            wget -P /usr/local/src https://nginx.org/download/nginx-1.14.2.tar.gz
            check_success "nginx-1.14.2.tar.gz已下载至/usr/local/src目录"
        else
            info_echo "nginx-1.14.2.tar.gz已存在,不需要下载"
        fi
        if [ ! -f "/usr/local/src/php-7.2.13.tar.gz" ];then
            info_echo "开始下载php-7.2.13.tar.gz"
            wget -P /usr/local/src http://cn2.php.net/distributions/php-7.2.13.tar.gz
            check_success "php-7.2.13.tar.gz已下载至/usr/local/src目录"
        else
            info_echo "php-7.2.13.tar.gz已存在,不需要下载"
        fi
        
        
        if [ ! -f "/usr/local/src/zabbix-4.0.2.tar.gz" ];then
            info_echo "开始下载zabbix-4.0.2.tar.gz"
            wget -P /usr/local/src https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.2/zabbix-4.0.2.tar.gz
            check_success "zabbix-4.0.2.tar.gz已下载至/usr/local/src目录"
        else
            info_echo "zabbix-4.0.2.tar.gz已存在,不需要下载"
        fi
        
        if [ ! -f "/usr/local/src/jdk-8u131-linux-x64.tar.gz" ];then
            info_echo "开始下载jdk-8u131-linux-x64.tar.gz"
            wget -P /usr/local/src -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
            check_success "jdk-8u131-linux-x64.tar.gz已下载至/usr/local/src目录"
        else
            info_echo "jdk-8u131-linux-x64.tar.gz已存在,不需要下载"
        fi
    
    }
    
    function install_php(){
    
        info_echo "开始安装php-7.2.13"
        sleep 2s
        groupadd php-fpm && useradd -s /sbin/nologin -g php-fpm -M php-fpm
        groupadd zabbix &&  useradd -g zabbix zabbix
        cd /usr/local/src
        tar xvf /usr/local/src/php-7.2.13.tar.gz
        cd /usr/local/src/php-7.2.13
        ./configure 
        --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --with-zlib-dir 
        --with-freetype-dir 
        --enable-mbstring 
        --with-libxml-dir=/usr 
        --enable-xmlreader 
        --enable-xmlwriter 
        --enable-soap 
        --enable-calendar 
        --with-curl 
        --with-zlib 
        --with-gd 
        --with-pdo-sqlite 
        --with-pdo-mysql 
        --with-mysqli 
        --with-mysql-sock 
        --enable-mysqlnd 
        --disable-rpath 
        --enable-inline-optimization 
        --with-bz2 
        --with-zlib 
        --enable-sockets 
        --enable-sysvsem 
        --enable-sysvshm 
        --enable-pcntl 
        --enable-mbregex 
        --enable-exif 
        --enable-bcmath 
        --with-mhash 
        --enable-zip 
        --with-pcre-regex 
        --with-jpeg-dir=/usr 
        --with-png-dir=/usr 
        --with-openssl 
        --enable-ftp 
        --with-kerberos 
        --with-gettext 
        --with-xmlrpc 
        --with-xsl 
        --enable-fpm 
        --with-fpm-user=php-fpm 
        --with-fpm-group=php-fpm 
        --with-fpm-systemd 
        --disable-fileinfo
        check_exit "configure php-7.2.13失败"
        make && make install
        check_exit "make php-7.2.13失败"
    
        info_echo "开始配置php-7.2.13"
    
        cp /usr/local/src/php-7.2.13/php.ini-production /usr/local/php/etc/php.ini && cd /usr/local/php/etc && cp php-fpm.conf.default php-fpm.conf
        cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
        cp /usr/local/src/php-7.2.13/sapi/fpm/php-fpm.service /usr/lib/systemd/system
    
        sed -i "s/;date.timezone =/date.timezone = Asia/Shanghai/g" /usr/local/php/etc/php.ini
        sed -i "s#`grep max_execution_time /usr/local/php/etc/php.ini`#max_execution_time = 300#g" /usr/local/php/etc/php.ini
        sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini
        sed -i "s#`grep max_input_time = /usr/local/php/etc/php.ini`#max_input_time = 300#g" /usr/local/php/etc/php.ini
        sed -i "s#`grep memory_limit /usr/local/php/etc/php.ini`#memory_limit = 128M#g" /usr/local/php/etc/php.ini
        sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini
    
        sed -i "s/user = php-fpm/user = zabbix/g" /usr/local/php/etc/php-fpm.d/www.conf
        sed -i "s/group = php-fpm/group = zabbix/g" /usr/local/php/etc/php-fpm.d/www.conf
    
        systemctl start php-fpm
        systemctl enable php-fpm
        STAT=`echo $?`
        PORT=`netstat -lntup|grep php-fpm|wc -l`
        if [ $STAT -eq 0 ] && [ $PORT -eq 1 ];then
            info_echo "php-fpm启动成功"
        else
            err_echo "php-fpm未启动成功,请检查"
            exit 1
        fi
    
    }
    function install_nginx(){
    
        info_echo "开始安装nginx-1.14.2"
        sleep 2s
        useradd nginx -s /sbin/nologin -M
        cd /usr/local/src && tar xvf nginx-1.14.2.tar.gz
        cd nginx-1.14.2 && ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-cc-opt=-O3 --with-stream
        check_exit "configure nginx-1.14.2失败"
        make && make install
        check_exit "make nginx-1.14.2失败"
        info_echo "开始配置nginx-1.14.2"
        cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
        echo "" >/usr/local/nginx/conf/nginx.conf
        mkdir -p /usr/local/nginx/conf/servers && mkdir -p /data/logs/nginx-zabbix && mkdir -p /data/home/www/zabbix
    cat <<"EOF" > /usr/local/nginx/conf/nginx.conf
    user nginx;
    worker_processes auto;
    error_log  logs/error.log  crit;
    pid        logs/nginx.pid;
    worker_rlimit_nofile 65535;
    events {
        use epoll;
        multi_accept on;
        accept_mutex_delay 50ms;
        worker_connections 40960;
    }
    http {
        include       mime.types;
        #default_type  application/octet-stream;
        default_type  text/html;
        client_max_body_size 50m;
        server_tokens off;
    
        server_names_hash_bucket_size 512;
    
        sendfile    on;
        #keepalive_timeout 65;
        keepalive_timeout 600;
    
        gzip on;
        gzip_min_length   1k;
        gzip_buffers      4 8k;
        gzip_http_version 1.1;
        gzip_types        text/plain application/x-javascript text/css text/shtml application/xml applicaton/javascript text/javascript;
        charset utf-8;
        log_format  main '$http_x_forwarded_for $remote_addr $remote_user [$time_local] "$request" $http_host $status $upstream_status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_addr $request_time $upstream_response_time';
        log_format mine   '$http_x_forwarded_for" - $upstream_addr - $upstream_cache_status - $upstream_status - $upstream_http_host - $request_time - [$time_local] - $request';
        include servers/*;
        }
    EOF
    
    cat <<"EOF" > /usr/local/nginx/conf/servers/zabbix.conf
    server {
            listen       80;
            server_name  zabbix;
    
           location / {
            root /data/home/www/zabbix;
            index index.php;
    
           }
           location ~ .php$ {
               
               root /data/home/www/zabbix;
               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      /data/logs/nginx-zabbix/zabbix-access.log  main;
        access_log      /data/logs/nginx-zabbix/zabbix_mine.log mine;
    
    } 
    EOF
     
        info_echo "开启启动nginx"
        /usr/local/nginx/sbin/nginx -t
        /usr/local/nginx/sbin/nginx
        STAT=`echo $?`
        PORT=`netstat -lntup|grep nginx|wc -l`
        if [ $STAT -eq 0 ] && [ $PORT -eq 1 ];then
            info_echo "nginx启动成功"
        else
            err_echo "nginx未启动成功,请检查"
        fi
        
    }
    
    function install_mysql(){
         
        info_echo "开始安装mysql"
        sleep 2s
        yum install mariadb-server -y
        check_exit "安装mysql失败"
        systemctl start mariadb
        STAT=`echo $?`
        PORT=`netstat -lntup|grep mysql|wc -l`
        if [ $STAT -eq 0 ] && [ $PORT -eq 1 ];then
            info_echo "mysql启动成功"
        else
            err_echo "mysql未启动成功,请检查"
        fi
        
        info_echo "开始创建zabbix账号和授权"
        sleep 2s
        mysql -uroot -e "create database zabbix character set utf8;" 
        mysql -uroot -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
        mysql -uroot -e "flush privileges;"
        mysql -uroot -e "show databases;"
        
    }
    
    
    function install_jdk(){
    
        info_echo "开始安装jdk-8u131-linux-x64.tar.gz"
        sleep 2s
        mkdir -p /usr/local/java
        tar xvf /usr/local/src/jdk-8u131-linux-x64.tar.gz -C /usr/local/java
        cp /etc/profiel /etc/profile.bak
        
    cat <<"EOF" >> /etc/profile
    JAVA_HOME=/usr/local/java/jdk1.8.0_131
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH PATH
    EOF
    
        info_echo "验证jdk是否安装成功"
        source /etc/profile
        java -version
    }
    
    
    
    function install_zabbix(){
    
        info_echo "开始安装zabbix-4.0.2"
        sleep 2s
        yum install OpenIPMI-devel libevent-devel net-snmp-devel -y
        cd /usr/local/src/ && tar xvf zabbix-4.0.2.tar.gz
            cd /usr/local/src/zabbix-4.0.2
        ./configure 
        --prefix=/usr/local/zabbix 
        --enable-server --enable-agent 
        --enable-proxy --enable-java 
        --with-mysql --with-net-snmp 
        --with-libcurl --with-libxml2 
        --with-openipmi 
        --enable-proxy
        check_exit "configure zabbix-4.0.2失败"
        make && make install
        check_exit "make zabbix-4.0.2失败"
        info_echo "开始配置zabbix-4.0.2"
        cp -R /usr/local/src/zabbix-4.0.2/frontends/php/* /data/home/www/zabbix
        chown -R zabbix.zabbix /data/home/www/zabbix
        chown -R zabbix.zabbix /usr/local/zabbix
        cp /usr/local/src/zabbix-4.0.2/misc/init.d/fedora/core5/* /etc/init.d/
        sed -i "s#/usr/local/sbin/zabbix_server#/usr/local/zabbix/sbin/zabbix_server#g" /etc/init.d/zabbix_server
        sed -i "s#/usr/local/sbin/zabbix_agentd#/usr/local/zabbix/sbin/zabbix_agentd#g" /etc/init.d/zabbix_agentd
        cp /usr/local/zabbix/etc/zabbix_server.conf /usr/local/zabbix/etc/zabbix_server.conf.bak
        echo "" >/usr/local/zabbix/etc/zabbix_server.conf
    
    cat <<"EOF" > /usr/local/zabbix/etc/zabbix_server.conf
    LogFile=/tmp/zabbix_server.log
    DBHost=127.0.0.1
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    DBPort=3306
    Timeout=30
    EOF
    
        info_echo "开始导入mysql数据"
        mysql -uzabbix -pzabbix zabbix < /usr/local/src/zabbix-4.0.2/database/mysql/schema.sql 
        mysql -uzabbix -pzabbix zabbix < /usr/local/src/zabbix-4.0.2/database/mysql/images.sql
        mysql -uzabbix -pzabbix zabbix < /usr/local/src/zabbix-4.0.2/database/mysql/data.sql 
    
        info_echo "开始启动zabbix_server"
        sleep 2s
        /etc/init.d/zabbix_server start 
        STAT=`echo $?`
        PORT=`netstat -lntup|grep zabbix_server|wc -l`
        if [ $STAT -eq 0 ] && [ $PORT -eq 1 ];then
            info_echo "zabbix_server启动成功"
        else
            err_echo "zabbix_server,请检查"
        fi
    }
    
    
    function main(){
    
        init_servers
        install_package
        download_install_package
        install_php
        install_nginx
        install_mysql
        install_jdk
        install_zabbix
        
        
    }
    
    main
  • 相关阅读:
    LockFile文件-解决并发写入日志的问题
    二、Consul Service Mesh
    查看CPU和内存,用机器指令和汇编指令编程
    环境配置过程中的一些小tips
    工具使用指北:GDB
    瞧瞧我发现了什么
    新的目标:Capture The Flag
    python 实现的idw插值方法
    Python 利用 百度接口输入地点名字返回经纬度
    轻松搞定javascript变量(闭包,预解析机制,变量在内存的分配 )
  • 原文地址:https://www.cnblogs.com/uglyliu/p/10143914.html
Copyright © 2011-2022 走看看