目录
5.8、复制zabbix前端文件到nginx 项目目录html下
5.11、放开10051(zabbix_server)和10050(zabbix_agent)端口
5.12.1、在浏览器地址栏输入:http://ip地址/zabbix,然后进行配置操作
一、准备工作
1.1、下载安装包
Jdk1.8下载地址:
#https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Nginx下载地址
# http://nginx.org/download/nginx-1.20.1.tar.gz
Mysql下载地址
# https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.29.tar.gz
Php下载地址
# wget https://www.php.net/distributions/php-7.3.29.tar.gz
Zabbix下载地址
#https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.14.tar.gz
1.2、配置yum和epel源
配置阿里云yum源和epel源
# cd /etc/yum.repos.d/
# mv CentOS-Base.repo CentOS-Base.repo.bak
# wget http://mirrors.aliyun.com/repo/Centos-7.repo
# mv Centos-7.repo CentOS-Base.repo
# wget https://mirrors.aliyun.com/repo/epel-7.repo
清除缓存并更新
# yum clean all
# yum makecache
1.3、关闭防火墙(后续开启防火墙,然后放开端口测试)
# systemctl stop firewalld.service //centos7下关闭firewall
# systemctl disable firewalld.service //禁止firewall自启动
1.4 jdk的安装配置
1.4.1、解压安装包
# cd /usr/local/src
# mkdir /usr/local/java
# tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local/java/
1.4.2、环境配置
# vi /etc/profile
在文件最底部添加如下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_231
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
保存并退出
# source /etc/profile //使上述配置生效
1.4.3、测试
# java -version
输出版本信息则安装完成
二、Nginx
2.1、安装依赖
# yum -y install gcc gcc-c++ make zlib zlib-devel openssl openssl-devel cmake automake autoconf pcre pcre-devel libtool
- pcre:这是一个表达式库,Nginx中的http模块则使用到了该库来解析正则表达式
- zib:zib库用于压缩和解压缩,方式众多,Nginx也使用到了zib
- openssl是一个功能丰富且自包含的开源安全工具,用于支持https
- autoconf及automake:便于使用configure 及 make
- cmake、gcc、gcc-c++ : 因为提供的nginx源为c语言,所以需要安装这些环境
- libtool:用户库安装工具,有以下几个特点:自动处理库的依赖关系;对于共享库,自动加入运行时搜索路径
2.2、解压安装包
# cd /usr/local/src
# tar -zxvf nginx-1.20.1.tar.gz
2.3、编译安装
# cd nginx-1.20.1
#./configure --prefix=/usr/local/nginx
# make && make install
2.3、检查服务配置有无异常
# cd /usr/local/nginx/sbin
验证nginx配置是否有误
# ./nginx -t
2.4、使用systemd管理nginx
# vi /usr/lib/systemd/system/nginx.service
[Unit]
Description= The Nginx HTTP Server daemon
Before=network.target
[Service]
EnvironmentFile=/usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -QUIT $MAINPID
# MAINPID是服务的systemd变量,它指向主应用程序的PID
ExecStop=/bin/kill -HUP $MAINPID
Type=forking
#Type为服务的类型,仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
[Install]
WantedBy= multi-user.target
重新加载服务的配置文件
# systemctl daemon-reload
2.5、启动服务
启动nginx服务
# systemctl start nginx
设置为开机自启动
# systemctl enable nginx
2.6、防火墙放开80端口
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# systemctl reload firewalld
2.7、验证
# curl http://localhost
三、Mysql
3.1、卸载系统自带mariadb
# rpm -qa | grep mariadb
强制卸载mariadb
# rpm -e --nodeps mariadb-libs-5.5.41
3.2、安装依赖
# yum install make gcc-c++ cmake bison bison-devel libaio libaio-devel ncurses ncurses-devel
- bison、bison-devel库:语法分析器,根据文法把一系列的记号转换成一个语法分析树,实现对sql语言的解析。
- libaio、libaio-devel库:libaio-dev包的作用是为了支持同步I/O。对于数据库之类的系统特别重要。
- ncurses、ncurses-devel库:是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库,登陆到mysql需要。
3.3、解压安装包
#cd /usr/local/src
#tar -zxvf mysql-boost-5.7.29.tar.gz
3.4、编译配置
创建mysql的数据目录
# mkdir -p /data/mysql/data
# cd /usr/local/mysql-5.7.29
进行mysql编译配置
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc/my.cnf \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BOOST=boost \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
3.5、编译安装
#make && make install
3.6、添加mysql环境变量
# vi /etc/profile
在文件最底部添加如下内容:
export PATH=$PATH:/usr/local/mysql/bin/
保存并退出
# source /etc/profile //使上述配置生效
3.7、编辑 /etc/my.cnf
[client]
#客户端设置
port = 3306
socket = /data/mysql/data/mysql.sock
default-character-set = utf8mb4
[mysqld]
#mysql启动时使用的用户
user = mysql
#默认连接端口
port = 3306
#为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
socket = /data/mysql/data/mysql.sock
#数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id = 1
#端口绑定的ip地址,0.0.0.0表示允许所有远程访问,127.0.0.1表示只能本机访问,默认值为*
bind-address = 0.0.0.0
#默认名为 主机名.pid,在数据库/mysql/data/主机名.pid,记录mysql运行的process id
#如果存在,再次start时会报已经启动
pid-file = /data/mysql/data/mysql.pid
#安装目录
basedir = /usr/local/mysql
#数据库存放目录
datadir = /data/mysql/data/
#系统数据库编码设置,排序规则
character_set_server = utf8mb4
collation_server = utf8mb4_bin
#secure_auth 为了防止低版本的MySQL客户端(<4.1)使用旧的密码认证方式访问高版本的服务器。MySQL 5.6.7开始secure_auth 默认为启用值1
secure_auth = 1
#可能的连接数
#指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。
back_log = 1024
#########################################
#################其他设置################
#########################################
#显式指定默认时间戳,即定义表中的timestamp时间戳的列时需要显示指定默认值
#默认为OFF,
#如果第一个TIMESTAMP列,没有显式设置DEFAULT,将自动分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性
#timestamp列不能设置为NULL,第二列及以后的timestamp列都默认为"0000-00-00 00:00:00"
#如果设置为ON,
#第一个timestamp列可以设置为NULL,不会默认分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性
#声明为NOT NULL且没有显式DEFAULT子句,在严格模式下会报错。
explicit_defaults_for_timestamp = ON
#linux下要严格区分大小写,windows下不区分大小写
#1表示不区分大小写,0表示区分大小写。
#lower_case_table_names = 0
lower_case_table_names = 0
#默认sql模式,严格模式
#sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
#NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY
#NO_ZERO_IN_DATE 不允许年月为0
#NO_ZERO_DATE 不允许插入年月为0的日期
#ERROR_FOR_DIVISION_BY_ZERO 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
#NO_ENGINE_SUBSTITUTION 不使用默认的存储引擎替代
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
########################################################
############各种缓冲区及处理数据的最大值设置############
########################################################
#是MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段
#如果不能,可以尝试增加sort_buffer_size变量的大小
sort_buffer_size = 16M
#应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),
#为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。
#当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作
#然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,
#如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。
#若果多表连接需求大,则这个值要设置大一点。
join_buffer_size = 16M
#索引块的缓冲区大默认16M
key_buffer_size = 15M
# 消息缓冲区会用到该列,该值太小则会在处理大包时产生错误。如果使用大的text,BLOB列,必须增加该值
max_allowed_packet = 32M
# mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上
# Max_used_connections / max_connections * 100%
max_connections = 512
# 阻止过多尝试失败的客户端,如果值为10时,失败(如密码错误)10次,mysql会无条件阻止用户连接
max_connect_errors = 1000000
#表描述符缓存大小,可减少文件打开/关闭次数,一般max_connections*2。
table_open_cache = 1024
#MySQL 缓存 table 句柄的分区的个数,每个cache_instance<=table_open_cache/table_open_cache_instances
table_open_cache_instances = 32
#mysql打开最大文件数
open_files_limit = 65535
#InnoDB表中,表更新后,查询缓存失效,事务操作提交之前,所有查询都无法使用缓存。影响查询缓存命中率
#查询缓存是靠一个全局锁操作保护的,如果查询缓存配置的内存比较大且里面存放了大量的查询结果,
#当查询缓存失效的时候,会长时间的持有这个全局锁。
#因为查询缓存的命中检测操作以及缓存失效检测也都依赖这个全局锁,所以可能会导致系统僵死的情况
#在高并发,写入量大的系统,建义把该功能禁掉
query_cache_size = 0
#决定是否缓存查询结果。这个变量有三个取值:0,1,2,分别代表了off、on、demand。
query_cache_type = 0
#指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit = 1M
##############################################
#################线程相关配置#################
##############################################
#线程缓存;主要用来存放每一个线程自身的标识信息,线程栈大小
thread_stack = 256K
#thread_cahe_size线程池,线程缓存。用来缓存空闲的线程,以至于不被销毁,
#如果线程缓存在的空闲线程,需要重新建立新连接,则会优先调用线程池中的缓存,很快就能响应连接请求。
#每建立一个连接,都需要一个线程与之匹配。
thread_cache_size = 384
#External-locking用于多进程条件下为MyISAM数据表进行锁定
#服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking开启会让MySQL性能下降
#单服务器环境,使用skip-external-locking,关闭外部锁定,
#多服务器使用同一个数据库目录时,必须开启external-locking,也就是说注释掉skip-external-locking
skip-external-locking
#最大的空闲等待时间,默认是28800,单位秒,即8个小时
#通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接
#交互式连接超时时间,超过这个时间自动断开连接
interactive_timeout = 600
#非交互式连接超时时间,超过这个时间自动断开连接
wait_timeout = 600
#它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)
#如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下
tmp_table_size = 96M
max_heap_table_size = 96M
############################
##########日志设置##########
############################
# 日志时间戳,mysql5.7.2版本之后才有的属性,控制写入到文件上显示日志的时间,
# 不会影响general log 和 slow log 写到表(mysql.general_log, mysql.slow_log)中的日志的时间
# 可以设置的有:UTC 和 SYSTEM,默认UTC,即0时区的时间,比北京时间慢8小时,所以要设置为SYSTEM
log_timestamps = SYSTEM
#日志的输出位置一般有三种方式:file(文件),table(表),none(不保存)
#其中前两个输出位置可以同时定义,none表示是开启日志功能但是不记录日志信息。
#file就是通过general_log_file=/mydata/data/general.log 等方式定义的,
#而输出位置定义为表时查看日志的内容:mysql.general_log表
##二进制日志设置
#默认不开启二进制日志
log_bin = OFF
#log-bin = /data/mysqldata/3307/binlog/mysql-bin 设置二进制路径时,如果没有生命log_bin=OFF,会开启日志
#二进制日志缓冲大小
#我们知道InnoDB存储引擎是支持事务的,实现事务需要依赖于日志技术,为了性能,日志编码采用二进制格式。那么,我们如何记日志呢?有日志的时候,就直接写磁盘?
#可是磁盘的效率是很低的,如果你用过Nginx,,一般Nginx输出access log都是要缓冲输出的。因此,记录二进制日志的时候,我们是否也需要考虑Cache呢?
#答案是肯定的,但是Cache不是直接持久化,于是面临安全性的问题——因为系统宕机时,Cache中可能有残余的数据没来得及写入磁盘。因此,Cache要权衡,要恰到好处:
#既减少磁盘I/O,满足性能要求;又保证Cache无残留,及时持久化,满足安全要求。
binlog_cache_size = 16M
##慢查询,开发调式阶段才需要开启慢日志功能。上线后关闭
slow_query_log = OFF
#慢日志文件路径
slow_query_log_file = /data/mysql/logs/slow_query.log
#该值是ON,则会记录所有没有利用索引来进行查询的语句,前提是slow_query_log 的值也是ON
log_queries_not_using_indexes = ON
#记录管理语句
log-slow-admin-statements
#如果运行的SQL语句没有使用索引,
#则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。调试时候使用
#log-queries-not-using-indexes
#设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
#log_throttle_queries_not_using_indexes = 60
#MySQL能够记录执行时间超过参数 long_query_time 设置值的SQL语句,默认是不记录的。超过这个时间的sql语句会被记录到慢日志文件中
long_query_time = 2
##错误日志:记录启动,运行,停止mysql时出现的信息
log-error = /data/mysql/logs/error.log
##一般查询日志,记录建立的客户端连接用户的所有操作,增上改查等,
#不是为了调式数据库,建议不要开启,0关闭,1开启
general_log = OFF
general_log_file = /data/mysql/logs/general.log
#log-long-format 扩展方式记录有关事件
#它是记录激活的更新日志、二进制更新日志、和慢查询日志的大量信息。例如,所有查询的用户名和时间戳将记录下来
#log-short-format,相反,记录少量的信息
############################
######数据库存储引擎########
############################
#默认使用InnoDB存储引擎
default_storage_engine = InnoDB
############################
######innoDB setting########
############################
#控制打开.ibd文件的数量。
#如果未启用innodb_file_per_table,则默认值为300
#否则取决于300和innodb_open_files中的较大值
innodb_file_per_table = 1
innodb_open_files = 350
#表定义缓存(数据字典)数量400-2000,默认为400 + (table_open_cache / 2),小网站可以设置为最低
table_definition_cache = 400
#InnoDB 用来高速缓冲数据和索引内存缓冲大小。更大的设置可以使访问数据时减少磁盘 I/O。
innodb_buffer_pool_size = 64M
#单独指定数据文件的路径与大小
#默认会在datadir目录下创建ibdata1,表空间tablespace
#如果想为innodb tablespace指定不同目录下的文件,必须指定innodb_data_home_dir,home目录
innodb_data_file_path = ibdata1:32M:autoextend
#对于多核的CPU机器,可以修改innodb_read_io_threads和innodb_write_io_threads来增加IO线程,来充分利用多核的性能。默认4
#innodb_write_io_threads = 4
#innodb_read_io_threads = 4
#并发线程数的限制值,表示默认0情况下不限制线程并发执行的数量
innodb_thread_concurrency = 0
#开始碎片回收线程。这个应该能让碎片回收得更及时而且不影响其他线程的操作,
#默认值1表示innodb的purge操作被分离到purge线程中,master thread不再做purge操作。
#innodb_purge_threads = 1
#配置MySql日志何时写入硬盘的参数,默认为1
#0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。
#1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去
#2:每次事务提交时mysql都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作
#通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。
innodb_flush_log_at_trx_commit = 1
#InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。大的日志缓冲允许事务运行时不需要将日志保存入磁盘而只到事务被提交(commit)。
#因此,如果有大的事务处理,设置大的日志缓冲可以减少磁盘I/O。
innodb_log_buffer_size = 2M
#日志组中的每个日志文件的大小(单位 MB)。如果 n 是日志组中日志文件的数目,那么理想的数值为 1M 至下面设置的缓冲池(buffer pool)大小的 1/n。较大的值,
#可以减少刷新缓冲池的次数,从而减少磁盘 I/O。但是大的日志文件意味着在崩溃时需要更长的时间来恢复数据。
innodb_log_file_size = 128M
#指定有三个日志组
innodb_log_files_in_group = 3
#innodb_max_dirty_pages_pct作用:控制Innodb的脏页在缓冲中在那个百分比之下,值在范围1-100,默认为90.这个参数的另一个用处:
#当Innodb的内存分配过大,致使swap占用严重时,可以适当的减小调整这个值,使达到swap空间释放出来。建义:这个值最大在90%,最小在15%。
#太大,缓存中每次更新需要致换数据页太多,太小,放的数据页太小,更新操作太慢。
innodb_max_dirty_pages_pct = 75
#在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)
innodb_lock_wait_timeout = 120
#Innodb Plugin引擎开始引入多种格式的行存储机制,目前支持:Antelope、Barracuda两种。其中Barracuda兼容Antelope格式。
#innodb_file_format = Barracuda
#限制Innodb能打开的表的数量
#innodb_open_files = 65536
#分布式事务
#innodb_support_xa = FALSE
#innodb_buffer_pool_size 一致 可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
#innodb_buffer_pool_instances = 4
#这个参数据控制Innodb checkpoint时的IO能力
#innodb_io_capacity = 500
#作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
#分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
#innodb_file_per_table = 1
#当更新/插入的非聚集索引的数据所对应的页不在内存中时(对非聚集索引的更新操作通常会带来随机IO),会将其放到一个insert buffer中,
#当随后页面被读到内存中时,会将这些变化的记录merge到页中。当服务器比较空闲时,后台线程也会做merge操作
#innodb_change_buffering = inserts
#该值影响每秒刷新脏页的操作,开启此配置后,刷新脏页会通过判断产生重做日志的速度来判断最合适的刷新脏页的数量;
#innodb_adaptive_flushing = 1
#数据库事务隔离级别 ,读取提交内容
#transaction-isolation = READ-COMMITTED
#innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式
#InnoDB使用O_DIRECT模式打开数据文件,用fsync()函数去更新日志和数据文件。
#innodb_flush_method = O_DIRECT
#默认设置值为1.设置为0:表示Innodb使用自带的内存分配程序;设置为1:表示InnoDB使用操作系统的内存分配程序
#innodb_use_sys_malloc = 1
############################
######myisam setting########
############################
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
# MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
#数据库全量备份
[mysqldump]
#强制mysqldump从服务器一次一行地检索表中的行
quick
#可接收数据包大小
max_allowed_packet = 16M
#在mysqld服务器不使用的情况下修复表或在崩溃状态下恢复表
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
- mysql.sock的作用是server和client在同一台服务器,并且使用localhost进行链接的时候,就会使用socket来进行连接——仅此而已,也就是:为主机名为localhost建立的MySQL连接,该连接过程通过一个套接字文件mysql.socke;实现的。所以该文件被删后,用localhost用户是连接不到MySQL服务器的。
- 必须建立一条tcp/ip连接,即使用127.0.0.1而不是localhost作为-h的参数去连接MySQL服务器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,强制地建立一条tcp/ip连接;
- 关闭MySQL服务器,再重新以localhost为主机名启动MySQL服务器,它就会重新创建一个套接字文件。
3.8、初始化mysql
# useradd -s /sbin/nologin mysql 添加用户
# chown -R mysql:mysql /usr/local/mysql
# chown -R mysql:mysql /data/mysql
# yum install -y perl-Module-Install
# cd /usr/local/mysql/bin
# mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/data/ --initialize
tips:初始化信息在mysql的errorlog中查看(包括初始化密码)
3.9、启动和登陆mysql
启动mysql
#/usr/local/mysql/support-files/mysql.server start
登陆mysql (初始化密码在errorlog文件中查看)
# mysql -uroot -p
3.10、mysql免密码登陆
如果登录失败,则先使用免密码登录,然后登录进去mysql修改密码.
3.10.1、编辑my.cnf 文件
#vi /etc/my.cnf
在[mysqld]下添加
skip-grant-tables
3.10.2、然后保存退出,重启mysql
#service mysqld restart
3.10.3、登录到mysql
# mysql -uroot -p
3.10.4、修改密码
# use mysql
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql-123456';
刷新权限
# flush privileges;
其他修改密码命令:
# update mysql.user set authentication_string=password('Mysql-123456') where user='root'
特别提醒注意的一点是,新版的mysql5.7数据库下的user表中已经没有Password字段了,因此这句命令不可用#update user set password=password('Mysql-123456') where user='root';
3.10.5、如果想任何的IP地址都可以使用root用户来远程登陆(可选)
#use msyql
#update user set host='%' where user='root';
刷新权限
# flush privileges;
3.10.6、设置远程登录(可选)
#grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;
刷新权限
# flush privileges;
库名:要远程访问的数据库名称,所有的数据库使用“*”
表名:要远程访问的数据库下的表的名称,所有的表使用“*”
用户名:要赋给远程访问权限的用户名称
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
密码:要赋给远程访问权限的用户对应使用的密码
3.10.7、把添加在 /etc/my.cnf 的skip-grant-tables 删除
3.11、使用systemd管理mysql
# vi /usr/lib/systemd/system/mysqld.service
[Unit]
Description= DB Mysql Server
SourcePath=/usr/local/mysql
After=nerwork.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/bin/kill -QUIT $MAINPID
# MAINPID是服务的systemd变量,它指向主应用程序的PID
ExecStop=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
重新加载服务的配置文件
# systemctl daemon-reload
设置为开机自启动
# systemctl enable mysqld
四、PHP
4.1、安装依赖
# yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel sqlite sqlite-devel oniguruma oniguruma-devel icu libicu libicu-devel openldap openldap-devel libzip libzip-devel t1lib t1lib-devel iconv iconv-devel libvpx libvpx-devel libXpm libXpm-devel gcc gd gd-devel libmcrypt libmcrypt-devel zlib zlib-devel
- libxml2 libxml2-devel库:能方便的解析、生成xml数据
- libpng 、libpng-devel库:是一款C语言编写的比较底层的读写PNG文件的跨平台的库。
- freetype、freetype-devel库:是一款字体服务库,它支持多种字体,并且提供高效,高质量的文字。
- libmcrypt、libmcrypt-devel库:
- oniguruma oniguruma-devel库:是一个处理正则表达式的库,我们之所以需要安装它,是因为在安装php7.4的过程中,mbstring的正则表达式处理功能对这个包有依赖性
- icu库是一个跨平台的基于Unicode的全球化库。这个库包括:区域敏感的字符串比较,日期,时间,数字,货币,消息格式,文本边界检测,字符集转换等等
4.2、解压安装包
#cd /usr/local/src/
#tar -zxvf php-7.3.29.tar.gz
4.3、创建用户
# useradd fanfpm
4.4、编译配置
# cd php-7.3.29
# ./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=fanfpm \
--with-fpm-group=fanfpm \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-iconv-dir \
--with-freetype-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--with-pear \
--enable-maintainer-zts \
--with-ldap \
--without-gdbm \
--enable-ctype \
--with-jpeg-dir \
--with-png-dir \
--prefix指定php的安装目录
--with-config-file-path指定php的配置文件位置
--with-mysql、--with-mysqli让php可以操作mysql
--enable-fpm主要是nginx要来调用php语言得使用php-fpm
tips:
1、如果编译时报以下错误,则修改Makefile文件,在EXTRA_LIBS 后添加-llber
2、.解决编译出现错误:configure: error: Cannot find ldap libraries in /usr/lib
操作:cp -frp /usr/lib64/libldap* /usr/lib/
4.5 、安装
# make && make install
4.6、加php环境变量
# vi /etc/profile
在文件最底部添加如下内容:
export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/
保存并退出
# source /etc/profile //使上述配置生效
4.7、配置php
4.7.1、php.ini 文件
php.ini 是PHP 的配置文件,用于加载各种函数库、设置错误级别和设置服务器的时间等。
拷贝php.ini 到安装目录下etc
# cd /usr/local/src/php-7.4.21
# cp php.ini-production /usr/local/php/etc/php.ini
# vi /usr/local/php/etc/php.ini
修改以下内容
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/Shanghai
mysqli.default_socket = /data/mysql/data/mysql.sock
4.7.2、php-fpm.conf 文件
php-fpm.conf是PHP-FPM特有的配置文件
# mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
4.8、nginx+php-fpm结合
# vi /usr/local/nginx/conf/nginx.conf
添加index.php
location / {
root html;
index index.html index.htm index.php;
}
去掉php的注释
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
# nginx fastcgi进程监听的IP地址和端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重新加载nginx 配置文件
# systemctl reload nginx
tips:
- cgi协议:解决了php解释器与webserver通信的问题
- php-fpm:即 php-Fastcgi Process Manager.php-fpm是 FastCGI 的实现,并提供了进程管理的功能。进程包含 master 进程和 worker 进程两种进程。master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。
配置文件内容解释:
1、fastcgi_pass 127.0.0.1:9000:这行开始是本文的重点:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。
2、fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
这行配置意思是:动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。如果有fastcgi.conf文件,就只需要直接include该配置文件即可
3、include fastcgi_params; 引入fastcgi配置文件
4、root html:请求资源根目录,告诉匹配到该location下的uri到html文件夹下去寻找同名资源。
4.9、放开9000端口
# firewall-cmd --zone=public --add-port=9000/tcp –permanent
# systemctl reload firewalld
4.10、使用systemd管理php-fpm并启动
# vi /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/php/sbin/php-fpm
ExecReload=/bin/kill -QUIT $MAINPID
# MAINPID是服务的systemd变量,它指向主应用程序的PID
ExecStop=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
重新加载服务的配置文件
# systemctl daemon-reload
4.11、启动php-fpm
# systemctl start php-fpm
设置为开机自启动
# systemctl enable php-fpm
4.12、创建phpinfo.php页面
nginx项目默认路径/usr/local/nginx/html
# vi /usr/local/nginx/html/test.php
<?php
phpinfo();
?>
访问:
# curl http://192.168.209.138/test.php
五、Zabbix Server
5.1、安装依赖
# yum install unixODBC-devel curl-devel libxml2-devel net-snmp-devel libevent libevent-devel
- unixodbc:是一个来连接数据库的组件,用于监控
- Libevent库:是一个用C语言编写的、轻量级的开源高性能事件通知库
5.2、解压安装包
# tar -zxvf zabbix-5.0.14.tar.gz
# cd zabbix-5.0.14
5.2、编译配置
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
--enable-server: 启动server端
--enable-agent :启动agent端
--with-mysql=/usr/local/mysql/bin/mysql_config 连接mysql相关依赖包
-- with-net-snmp :启动snmp相关,用于snmp监控设备
5.3、安装
# make && make install
5.4、环境配置
# vi /etc/profile
在文件最底部添加如下内容:
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
保存并退出
//使上述配置生效
# source /etc/profile
5.5、创建zabbix用户
# useradd zabbix
# chown -R zabbix:zabbix /usr/local/zabbix
5.6、mysql数据库初始化
//-A 不预读数据库
# mysql -h 127.0.0.1 -uroot -pMysql-123456 -A
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@'%' identified by 'Mysql-123456';、
> flush privileges;
> use zabbix;
导入zabbix数据
> source /usr/local/src/zabbix-5.0.14/database/mysql/schema.sql;
> source /usr/local/src/zabbix-5.0.14/database/mysql/data.sql;
> source /usr/local/src/zabbix-5.0.14/database/mysql/images.sql;
tips:如果提示You must reset your password using ALTER USER statement before executing this statement
使用如下命令,修改密码
#ALTER USER 'zabbix'@'%' IDENTIFIED BY 'Mysql-123456' PASSWORD EXPIRE NEVER;
#flush privileges;
5.7、创建日志目录
# mkdir /usr/local/zabbix/logs
# chown -R zabbix:zabbix /usr/local/zabbix/logs
5.8、复制zabbix前端文件到nginx 项目目录html下
# cp -r /usr/local/src/zabbix-5.0.14/ui /usr/local/nginx/html/zabbix
5.9、zabbix server的配置
# vi /usr/local/zabbix/etc/zabbix_server.conf
修改以下内容
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Mysql-123456
DBPort=3306
DBSocker=/data/mysql/data/mysql.sock
AlertScriptsPath= /usr/local/zabbix/share/zabbix/alertscripts
ExternalScripts=/usr/local/zabbix/share/zabbix/externalscripts
Include=/usr/local/etc/zabbix_server.conf.d/*.conf
5.10、zabbix agent的配置
# vi /usr/local/zabbix/etc/zabbix_agentd.conf
修改以下内容
PidFile=/tmp/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
5.11、放开10051(zabbix_server)和10050(zabbix_agent)端口
# firewall-cmd --zone=public --add-port=10051/tcp –permanent
# firewall-cmd --zone=public --add-port=10050 /tcp –permanent
# systemctl reload firewalld
5.11、启动zabbix server服务
启动zabbix-server服务
# /usr/local/zabbix/sbin/zabbix_server
注意:若提示./zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
先找一下本地有没有libmysqlclient.so.20文件,有的话把路径加到ld.so.conf中去
#vim /etc/ld.so.conf
把下面路径添加上去
/usr/local/mysql/lib/
然后
#ldconfig
5.12、访问zabbix前端页面
在浏览器地址栏输入:http://ip地址/zabbix,然后进行配置操作
5.13、登录zabbix
默认用户名和密码:Admin zabbix
注意:如果登录进去提示zabbix server is not running
可能是没关闭selinux
#setenforce 0
重启一下服务
# /usr/local/zabbix/sbin/zabbix_server
#nginx -s stop
5.14、zabbix前端页面字体设置
解决zabbix部分乱码下载微软雅黑字体
#cd /usr/local/nginx/html/zabbix/assets/fonts
#wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
zabbix网页的字体配置修改
# vi /usr/local/nginx/html/zabbix/include/defines.inc.php
搜索:ZBX_GRAPH_FONT_NAME
默认是DejaVuSans字体,改成msyh微软雅黑字体
5.15、使用systemd管理zabbix_server
# vi /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description= Zabbix Server
After=nerwork.target
[Service]
Type=forking
ExecStart=/usr/local/zabbix/sbin/zabbix_server
ExecReload=/bin/kill -QUIT $MAINPID
# MAINPID是服务的systemd变量,它指向主应用程序的PID
ExecStop=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target