服务架构:
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
tar zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure --prefix=/usr/local/lib/pcre-8.40
make && make install
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
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/
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
----------------------------------完成上述后,重启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
/usr/local/mysql/lib
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/
sbinzabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d
cd /root/zabbix-4
.0.1
/frontends
php
/usr/local/zabbix-4
.0.1
创建zabbix用户:CREATE USER
'zabbix'
@
'%'
IDENTIFIED WITH mysql_native_password BY
'zabbix'
; //非常重要 记住密码,页面配置zabbix的时候要用
授权
GRANT ALL PRIVILEGES ON *.* TO
'zabbix'
@
'%'
;
刷新授权
flush PRIVILEGES;
/root/zabbix-4
.0.1
/database/mysql/schema.sql;/root/zabbix-4
.0.1
/database/mysql/images.sql;/root/zabbix-4
.0.1
/database/mysql/data.sql;