• 生产环境 编译安装 zabbix 服务


    服务架构:

    nginx+php+zabbix +mysql

    nginx-1.12.0

    php-7.0.3

    zabbix-4.0.1

    mysql-5.7.20

    系统  centos7

    -------------------------

    一,相关库安装      //点击包名链接就可以下载

    编译安装 openssl-1.1.0f 

    tar zxvf openssl-1.1.0f.tar.gz
    cd openssl-1.1.0f
    ./config --prefix=/usr/local/lib/openssl-1.1.0f  //安装到了/usr/local/lib
    make && make install
     
    编译安装 pcre-8.40
    tar zxvf pcre-8.40.tar.gz
    cd pcre-8.40
    ./configure --prefix=/usr/local/lib/pcre-8.40
    make && make install
     
    编译安装 zlib-1.2.11
    tar zxvf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    ./configure --prefix=/usr/local/lib/zlib-1.2.11
    make && make install
     
    yum 安装gcc gcc-c++   //./configure 必须使用
    yum install gcc gcc-c++
     
    二、nginx 编译安装安装
     
    下载安装包:
      wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
     解压进入 :
    tar -zxvf nginx-1.12.0.tar.gz
    cd nginx-1.12.0
     开始编译:
      ./configure  --prefix=/usr/local/nginx  --conf-path=/usr/local/nginx/conf/nginx.conf
    --pid-path=/usr/local/nginx/conf/nginx.pid  --lock-path=/var/lock/nginx.lock
    --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log
    --with-http_gzip_static_module --with-pcre=/usr/local/lib/pcre-8.40/
    --with-openssl=/usr/local/lib/openssl-1.1.0f/ --with-zlib=/usr/local/lib/zlib-1.2.11/
     
    编译完
    make
    make install
     
    查找安装路径:whereis nginx

    nginx基本命令:

    cd /usr/local/nginx/sbin/
    ./nginx 
    ./nginx -s stop   //查出进程直接杀掉
    ./nginx -s quit   //温和停止方法 
    ./nginx -s reload

    netstat -ntpl |grep 80 默认启动了80端口
    ps -ef |grep nginx
    ---------------------------------------
    二、php编译安装
    下载php 并解压
    wget http://cn2.php.net/distributions/php-7.0.3.tar.gz
    tar xf php-7.0.3.tar.gz -C /usr/local/
    安装flex
    yum -y install flex
    yum -y install libxml2-devel
    ---------------------------
    开始编译:
    进入php源码目录:cd /usr/local/php-7.0.3/php-7.0.3
    运行编译命令:
    ./configure --prefix=/usr/etc/php703 --with-config-file-path=/usr/etc/php703/etc --with-config-scan-dir=/usr/etc/php703/etc --enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-re2c-cgoto --with-libdir=/usr/etc/php703/lib/php/extensions/no-debug-non-zts-20131226

    出现以下页面表示编译成功:


    运行make
    make test
    make install
    配置php.ini
    1.拷贝生成php.ini 配置文件
    进入源码目录:/usr/local/php-7.0.3/php-7.0.3 
    拷贝 cp php.ini-production /usr/etc/php703/etc/php.ini
    编辑配置文件:
    vi php.ini
    date.timezone = PRC //配置PRC值
    保存退出

    配置php-fpm.conf

       cd /usr/etc/php703/etc

       vi php-fpm.conf

      pid = run/php-fpm.pid #取消前面的分号

      保存退出

     配置  www.conf 配置文件

    cd /usr/etc/php703/etc/php-fpm.d

    修改

    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ; will be used.
    user = nobody        //默认为nobody,也可以改为www,但是需要创建www用户并对相应目录权限更改
    group = nobody

    listen = 127.0.0.1:9000  // 端口改下 9089

    -------------------

    启动php-fpm

    /usr/etc/php703/sbin/php-fpm  //启动

    如果要停止  pkill php-fpm

    -------------------

    三、nginx整合php测试  为后续编译完的zabbix-server成功显示提供基础

    创建php测试目录 同时也是后边zabbix安装目录,及nginx

     mkdir -p /usr/local/zabbix-4.0.1/php

    vi index.php

    <?php

    phpinfo();

    ?>

    nginx配置支持php

    cd /usr/local/nginx

    vi  zabbix.conf

    server{
        listen 9088;
        server_name localhost;
        access_log logs/zabbix.log;
        error_log  logs/error.log;
        location / {
            proxy_http_version 1.1;
            root /usr/local/zabbix-4.0.1/php;
            index index.html index.htm index.php;
        }
        location ~* .php$ {
            root /usr/local/zabbix-4.0.1/php;
            fastcgi_pass 127.0.0.1:9089;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/local/zabbix-4.0.1/php$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    //修改nginx.conf 支持zabbix.conf

    vi nginx.conf     //加入到http括号内

    include   zabbix.conf;

    浏览器输入 ip:9088 端口访问 index.php

    验证通过,配置均正常

    --------------------补充关于zabbix和php整合时扩展安装相关问题-------------------//此处如果不配置,必然在zabbix配置页面显示报错。

    这一步也可以放到看到具体报错内容进行处理,差异不大。

    核心内容:已经编译完的php 添加扩展

    首先 修改php.ini    找到extension 添加以下内容

    extension = /usr/etc/php703/lib/php/extensions/no-debug-non-zts-20151012/bcmath.so
    extension = /usr/etc/php703/lib/php/extensions/no-debug-non-zts-20151012/gd.so
    extension = /usr/etc/php703/lib/php/extensions/no-debug-non-zts-20151012/mbstring.so
    extension = /usr/etc/php703/lib/php/extensions/no-debug-non-zts-20151012/sockets.so
    extension = /usr/etc/php703/lib/php/extensions/no-debug-non-zts-20151012/gettext.so

    然后 进入php源码目录ext目录下找到对应的扩展文件夹

    进入文件夹 运行

    /usr/etc/php703/bin/phpize    //此命令在php安装目录里,专门用于生成扩展编译环境

    ./configure --with-php-config=/usr/etc/php703/bin/php-config  编译生成对应的.so文件

    make

    make install   //扩展编译完成,如果编译中出错,首先运行 make clean 清理下,再重新运行编译

    -------------------依次进入配置文件中加入的扩展,运行编译生成扩展so文件

    特别提示:编译gd扩展的时候,最好加入对jpeg和freetype的支持,如果是新环境,可能未配置

    方法:下载freetype和jpeg的高版本,低版本可能出现make时libtool问题

    首先编译 jpeg和freetype

    tar -zxvf  jpegsrc.v8b.tar.gz
    cd jpeg-8b

    ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
    make && make install

    然后再进入gd库文件夹编译并带上jpeg和freetype

    cd /root/php-5.5.38/ext/gd
    执行/usr/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype
      make
    make install同时生成gd.la gd.so文件

    ----------------------------------完成上述后,重启php-fpm

    四、编译安装 mysql  5.7.20

    下载mysql源码包 使用cmake进行编译

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz

    下载boost
    wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

    安装必要的依赖包
    yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git  ncurses-devel

    解压mysql源码并将boost移入包内
    tar -zxvf mysql-5.7.20.tar.gz
    mv boost_1_65_1.tar.gz mysql-5.7.20

    进入源码包 创建configure目录 并进入
    cd mysql-5.7.20
    mkdir configure
    cd configure


    使用cmake进行编译
    cmake .. -DBUILD_CONFIG=mysql_release 
    -DINSTALL_LAYOUT=STANDALONE 
    -DCMAKE_BUILD_TYPE=RelWithDebInfo 
    -DENABLE_DTRACE=OFF 
    -DWITH_EMBEDDED_SERVER=OFF 
    -DWITH_INNODB_MEMCACHED=ON 
    -DWITH_SSL=bundled 
    -DWITH_ZLIB=system 
    -DWITH_PAM=ON 
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/           //此目录自定义 安装目录也就是后边用到的 basedir
    -DINSTALL_PLUGINDIR="/usr/local/mysql/lib/plugin"   //此目录自定义  basedir下
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DWITH_EDITLINE=bundled 
    -DFEATURE_SET=community 
    -DCOMPILATION_COMMENT="MySQL Server (GPL)" 
    -DWITH_DEBUG=OFF 
    -DWITH_BOOST=..

    编译过长较长,大概需要十几分钟时间
    如果出现错误 首先删除 rm -f CMakeCache.txt 然后重新进行编译
    出现以下内容 表示编译成功
    -- Configuring done
    -- Generating done
    make 
    make install //进行安装

    创建数据目录 日志目录 创建mysql用户 组 改变目录属主属组
    mkdir -p /data/mysql/mysql-data /data/mysql/logs /data/mysql/mysql-bin
    groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin
    chown -R mysql.mysql /data/mysql /usr/local/mysql

    编辑my.cnf 设置端口目录及相关配置参数
    参考样例:
    [client]
    port                            = 3306
    socket                          = /tmp/mysql.sock
    default_character_set           = utf8mb4

    [mysql]
    default_character_set           = utf8mb4
    socket                          = /tmp/mysql.sock

     
    [mysqld]
    lower_case_table_names          = 1
    port                            = 3306
    basedir                         = /usr/local/mysql
    datadir                         = /data/mysql/mysql-data
    socket                          = /tmp/mysql.sock
    pid_file                        = /data/mysql/mysql.pid
    tmpdir                          = /tmp/

    skip_name_resolve               = 1
    character_set_server            = utf8mb4
    collation_server                = utf8mb4_unicode_ci

    max_connections                 = 3000
    max_connect_errors              = 10000
    interactive_timeout             = 600
    wait_timeout                    = 600
    table_open_cache                = 2048
    query_cache_type                = 0
    #query_cache_size                = 64M
    #query_cache_limit               = 2M
    thread_cache_size               = 51
    max_allowed_packet              = 16M

    tmp_table_size                  = 256M
    max_tmp_tables                  = 128
    max_heap_table_size             = 96M
    sort_buffer_size                = 4M
    read_buffer_size                = 4M #顺序IO
    join_buffer_size                = 4M
    read_rnd_buffer_size            = 8M #随机IO
    bulk_insert_buffer_size         = 64M #



    log_error                       = /data/mysql/logs/mysql-error.log
    log_timestamps                  = system
    slow_query_log                  = 1
    slow_query_log_file             = /data/mysql/logs/mysql-slow.log
    long_query_time                 = 1
    log_queries_not_using_indexes   = 1
    log_throttle_queries_not_using_indexes =10
    log_slow_admin_statements       = 1
    log_slow_slave_statements       = 1
    min_examined_row_limit          = 100
    log_queries_not_using_indexes   = 1

    log_output                      = FILE
    relay_log                       = /data/mysql/logs/mysql-relay

    #rep

    slave-parallel-type=LOGICAL_CLOCK
    slave-parallel-workers=16



    #innodb
    default_storage_engine          = InnoDB
    innodb_page_size                = 16384
    innodb_data_home_dir            = /data/mysql/mysql-data/
    innodb_data_file_path           = ibdata1:512M:autoextend
    innodb_log_group_home_dir       = /data/mysql/mysql-data/
    innodb_buffer_pool_instances    = 1
    innodb_buffer_pool_size         = 8G
    innodb_buffer_pool_dump_pct     = 40
    innodb_page_cleaners            = 8
    innodb_log_file_size            = 512M
    innodb_log_files_in_group       = 2
    innodb_log_buffer_size          = 32M  #default 16M
    innodb_flush_log_at_trx_commit  = 1
    innodb_lock_wait_timeout        = 30
    innodb_strict_mode              = 1
    innodb_print_all_deadlocks      = 1    
    innodb_buffer_pool_load_at_startup = 1
    innodb_buffer_pool_dump_at_shutdown = 1  
    innodb_buffer_pool_dump_pct     = 40
    innodb_open_files               = 65536
    innodb_file_per_table           = 1
    innodb_lock_wait_timeout        = 30
    innodb_read_io_threads          = 8
    innodb_write_io_threads         = 8
    innodb_io_capacity              = 200
    innodb_flush_log_at_trx_commit  = 1
    innodb_flush_method             = O_DIRECT
    innodb_purge_threads            = 4
    innodb_support_xa               = 1
    innodb_max_dirty_pages_pct      = 75
    transaction_isolation           = READ-COMMITTED
    innodb_page_cleaners            = 16
    explicit_defaults_for_timestamp = 1

    #undo
    innodb_undo_directory           = /data/mysql/mysql-data/
    innodb_undo_logs                = 128  
    innodb_undo_tablespaces         = 3    
    innodb_undo_log_truncate        = 1
    innodb_max_undo_log_size        = 1000M
    innodb_purge_rseg_truncate_frequency = 128


    [mysqldump]
    max_allowed_packet              = 16M
     -------------------------------------------------------------
    初始化mysql 数据库
    /usr/local/mysql/bin/mysqld --initialize --user=mysql


    查看数据文件是否生成
    ll /data/mysql-data


    查看日志文件是否生成
    ll /data/mysql/logs/

    修改件启动文件 并配置开机启动
    cp -af /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    sed -i 's,^basedir=,basedir=/usr/local/mysql,g' /etc/init.d/mysqld
    sed -i 's,^datadir=,datadir=/data/mysql/mysql-data,g' /etc/init.d/mysqld
    chmod 755 /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig --level 345 mysqld on

    启动mysql
    [root@localhost mysql]# /etc/init.d/mysqld start  //也可以使用 systemctl start mysqld 
    Starting MySQL. SUCCESS!
    配置mysql环境变量
    vim /root/.bash_profile
    PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

    修改mysql初始密码 新版的mysql基本不支持无密码登录 如果是初次安装会在错误日志中显示root 随机生成的密码
    cat /usr/local/mysql/log/error.log |grep 'A temporary password'
    登陆mysql
    [root@localhost ~]# mysql -uroot -p
    Enter password:

    修改root密码
    mysql> alter user 'root'@'localhost' identified by 'your_password';
    Query OK, 0 rows affected (0.00 sec)


    myql配置完成!
    --------------------------------------------------------
    五、编译zabbix-server
    下载源码包
      wget  https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.1/zabbix-4.0.1.tar.gz
    安装依赖
    yum install libevent libevent-devel libaio gcc libxml* unixODBC-devel mysql-devel net-snmp-devel libxml2-devel libcurl-devel libevent-devel pcre* -y
    配置动态库链接
    vi /etc/ld.so.conf
    include ld.so.conf.d/*.conf
    /usr/local/mysql/lib
    执行 ldconfig  命令  加载动态库
     
    解压zabbix源码包 进行编译
    tar xf  zabbix-4.0.1.tar.gz
    进入编译
    ./configure --prefix=/usr/local/zabbix-4.0.1/ --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2l
     
    编译非常快。编译完成后,查看编译生成的文件是否存在
    cd /usr/local/zabbix-4.0.1/sbin
    ls
    zabbix_agentd.conf  zabbix_agentd.conf.d  zabbix_server.conf  zabbix_server.conf.d
    ------------------------------------
    从源码包拷贝zabbix前端php文件到zabbix安装目录中
    cd /root/zabbix-4.0.1/frontends
    cp -r php /usr/local/zabbix-4.0.1
    ------------------------------------
    从源码包导入zabbix的mysql相关数据到mysql中:
    进入mysql
    mysql -uroot -p
     
    创建zabbix用户:CREATE USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password BY 'zabbix'; //非常重要 记住密码,页面配置zabbix的时候要用
    授权
    GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%';
     
    刷新授权
    flush PRIVILEGES;
    创建zabbix专用库:create database if not exists zabbix default character set utf8 collate utf8_general_ci;
    切换到zabbix库:use zabbix;
    导入zabbix默认表:source /root/zabbix-4.0.1/database/mysql/schema.sql;
               source /root/zabbix-4.0.1/database/mysql/images.sql;
               source /root/zabbix-4.0.1/database/mysql/data.sql;
    ------------------------------------------------------
    重现加载nginx 
    /usr/local/nginx -s reload
    重载 mysql
    /etc/init.d/mysqld reload  刷新授权文件,服务不停
    浏览器访问 ip:9088端口  默认密码   admin  zabbix
  • 相关阅读:
    运算符
    JavaScript
    javascript——1
    学习总结
    java开发在线下载功能,自动打开浏览器下载功能下载网络文件或图片
    input 输入框正则表达式限制小数,数字
    【Linux】清理Redis病毒程序kdevtmpfsi
    IDEA 2020.1 版修改pom.xml无法自动导入MAVEN依赖
    【Python】 requests 爬取博客园内容AttributeError: 'NoneType' object has no attribute 'xpath'
    Mysql Column 'xxxxx' in field list is ambiguous"
  • 原文地址:https://www.cnblogs.com/telegram/p/10939390.html
Copyright © 2020-2023  润新知