生产环境 编译安装 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
原文地址:https://www.cnblogs.com/telegram/p/10939390.html