一、说明
1.本次安装使用LNMP架构,nginx版本为1.14.2,mysql版本为5.6.39,php版本为5.6.40。
2.本次安装教程中大部分命令是参考《实践哥企业级Zabbix4.0+Grafana6.0入门实战视频》中的内容,另结合了一些本人在安装过程中遇到的一些故障的解决方式。实践哥课程地址为:https://edu.51cto.com/course/17413.html,有兴趣的可以购买观看,着实讲的不错受益颇深。
3.本次安装基本为源码编译安装
4.本人也是新手上路,能力十分有限,如有错误和疏漏欢迎批评指正。
二、LNMP架构的安装
本次安装主要分为yum源设定、Nginx安装、php安装、mysql安装设置这几个步骤。
1.yum源安装
网易yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all ;清除缓存
yum makecache ;生成缓存
2.Nginx安装
1)编译安装
yum install -y wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel ;安装依赖
cd /usr/local/src ;进入下载文件存储目录
wget 'http://nginx.org/download/nginx-1.14.2.tar.gz' ;下载nginx包
tar -zxvf nginx-1.14.2.tar.gz ;解压nginx文件
cd nginx-1.14.2 ;进入安装目录
./configure --prefix=/usr/local/nginx ;设定安装参数,安装到指定目录
make && make install ;执行编译以及安装
2)nginx启动命令的相关设置
(1)环境变量的设定
进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/nginx/sbin/后保存并退出
source /etc/profile ;刷新环境变量
(2)相关命令
检查Nginx配置: nginx -t
启动Nginx:nginx
关闭Nginx:nginx -s stop
(3)验证nginx是否启动成功
查看进程:ps auxfww|grep nginx
查看端口:netstat -tulnp|grep nginx
查看日志:tail -d /usr/local/nginx/logs/error.log
查看网页:出现Welcome to nginx !
(4)使用systemctl管理nginx
vim /usr/lib/systemd/system/nginx.service ;创建相关文件, 服务名称是什么,文件的名称就写什么
在文件中输入以下内容并保存退出
[Unit]
Description=nginx ;服务名称
After=network.target ;网络启动后启动
[Service]
Type=forking ;低软件层 forking方式(没听懂啥意思)
ExecStart=/usr/local/nginx/sbin/nginx ; 启动命令路径
[Install]
WantedBy=multi-user.target ;开机启动设置(当前为多用户模式)
至此nginx部分安装完成
3.PHP安装
1)编译安装
yum -y install epel-release ;安装epel源
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel ;安装依赖
cd /usr/local/src/ ;进入下载目录
wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz' ;下载php源码包,由于下载速度过慢且安装时报错不晓得为啥,有需要的朋友可以去csdn搜索下载,没有分的话可以找我要源码包
tar -zxf php-5.6.40.tar.gz ;解压源码包
cd php-5.6.40 ;进入安装目录
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-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 --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm ;设定安装参数
make && make install ;编译并且安装
cp php.ini-production /usr/local/php/etc/php.ini ;拷贝配置文件
2)部分安装参数说明
--prefix 指定php的安装目录
--with-config-file-path 指定php的配置文件位置
--with-mysql、--with-mysqli 让php可以操作mysql
--enable-fpm 主要是nginx要来调用php语言得使用php-fpm
3)nginx启动命令的相关设置
(1)环境变量的设定
进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/后保存并退出
source /etc/profile ;刷新环境变量
检查配置文件:php-fpm -t 发现报错

原因是系统编译安装时生成的配置文件名为php-fpm.conf.default,与系统默认配置文件名php-fpm.conf不一样,仅需要将配置
文件名称更改为默认的配置文件名称即可
使用默认配置文件:mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.con
(3)验证php是否启动成功
进程 ps auxf |grep php-fpm
端口 netstat -tulnp |grep php-fpm
(4)使用systemctl管理php
vim /usr/lib/systemd/system/php-fpm.service ;创建相关文件, 服务名称是什么,文件的名称就写什么
在文件中输入以下内容并保存退出
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target
5)nginx和php-fpm联动配置
由于nginx的默认配置无法处理php程序,我们测试一下
vim /usr/local/nginx/html/test.php ;创建测试页面
<?php
echo "taobao zabbix";
?>
保存并退出
这时的现象是打开网页后提示下载PHP文件,所以我们需要修改nginx的配置文件,修改如下:
vim /usr/local/nginx/conf/nginx.conf ;进入相关配置文件修改配置
location / {
root html;
index index.html index.htm index.php; ;增加index.php
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
将绿色部分的注释符全部删去,将$fastcgi前面的一段配置删去改成$document_root
如此本次php编译安装以及调试完成
4.Mysql安装
1)编译安装
yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel ;安装依赖
useradd -s /sbin/nologin mysql ;增加数据库用户
cd /usr/local/src ;进入下载目录
wget 'https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39.tar.gz' ;下载mysql源码包,反正我是没下下来同样的可以去csdn找,或者找我要
tar -zxvf mysql-5.6.39.tar.gz ;解压源码包
cd mysql-5.6.39 ;进入安装目录
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 ;设定安装参数
make && make install ;编译并且安装,时间很长很长需要耐心等待
cp support-files/mysql.server /etc/init.d/mysqld ;拷贝启动命令
chmod a+x /etc/init.d/mysqld ;给予执行权限
2)安装代码说明
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ;指定安装路径
-DMYSQL_DATADIR=/data/mysql ;指定数据存储路径
-DDEFAULT_CHARSET=utf8 ;指定字符集
-DDEFAULT_COLLATION=utf8_general_ci ;指定字符集
3)nginx启动命令的相关设置
(1)环境变量的设定
进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/mysql/bin/后保存并退出
source /etc/profile ;刷新环境变量
4)mysql初始化的一些配置
(1)配置初始化
更新mysql配置/etc/my.cnf 注意是否有其他位置存在my.cnf,会冲突导致mysql无法正常启动
将以下配置写入/etc/my.cnf(注意是清空原有配置写入新配置)
[mysqld]
bind-address=127.0.0.1 ;监听IP
port=3306 ;监听端口
datadir=/data/mysql ;数据路径
user=mysql ;用户名
skip-name-resolve
long_query_time=2
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
(2)数据库初始化
mkdir -pv /data/mysql
chown -R mysql:mysql /usr/local/mysql /data/mysql/
yum install -y perl-Module-Install
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/
5)使用systemctl管理mysql
vim /usr/lib/systemd/system/php-fpm.service ;创建相关文件, 服务名称是什么,文件的名称就写什么
在文件中输入以下内容并保存退出
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target
6)启动mysql服务器
systemctl start mysqld
(1)验证Mysql是否启动
查看进程: ps auxf|grep mysql
查看监听: nststat -tulnp|gerp mysql
查看日志: cat /data/mysql/mysqld.log
(2)mysql安全
mysql加密码
mysqladmin -h 127.0.0.1 -u root password '********'
mysql -h 127.0.0.1 -uroot -pzabbixpwd -A
mysql授权某ip登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'jishuzhu1209' WITH GRANT OPTION;
flush privileges;//刷新权限
命令解释
ALL PRIVILEGES ON 所有权限
*.* 所有数据库
IDENTIFIED BY 密码
以上LNMP环境安装配置完成
二、LNMP环境介绍
1、LNMP的组成
L即linux系统,N即nginx,M即mysql,P即php。LNMP是linux系统下一种常用的架构。
2、LNMP流程
用户访问nginx,nginx通过php写入数据,php调用数据库mysql将数据写入后返回数据给php,php再返回数据给nginx,nginx最后将数据展示给用户。
1) 用户 -> php文件
2) 请求到达nginx,nginx通过127.0.0.1:9000去调用php-fpm fastcgi_pass 127.0.0.1:9000;
3) php-fpm -> 运行php程序
4) php -> 操作mysql
三、LNMP搭建完毕后测试代码
vim /usr/local/nginx/html/test_mysql.php
<?php
$link=mysql_connect("127.0.0.1","root","zabbixpwd");
if(!$link){
echo "mysql_connect fail";
}else{
echo "mysql_connect success";
}
?>
保存并退出,登录网页能见到success
三、zabbix安装
本次安装主要分为yum源设定、Nginx安装、php安装、mysql安装设置这几个步骤。
zabbix-server安装、zabbix-web安装、zabbix-web页面初始化
1.zabbix-server安装
1)编译安装
yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel ;安装依赖
useradd -s /sbin/nologin zabbix ;创建zabbix账户
cd /usr/local/src/
wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz' ;下载zabbix包,建议从官网直接下载后上传linux
tar -zxvf zabbix-4.0.3.tar.gz ;解压源码包
cd zabbix-4.0.3 ;进入安装目录
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 ;设定安装参数
make && make install ;编译并且安装
2)代码说明
--prefix ;指定安装目录
--enable-server ;安装zabbix server
--enable-agent ;安装zabbix agent
--with-mysql ;用mysql来存储
3).zabbix启动命令相关设置
(1)环境变量的设定
进入/etc/profile,在最后一行增加export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/后保存并退出
source /etc/profile ;刷新环境变量
(2).查看版本
zabbix_server --version
3).zabbix初始化
(1) 需要到mysql里做数据库初始化
mysql -h 127.0.0.1 -uroot -pzabbixpwd -A ;进入数据库
create database zabbix character set utf8 collate utf8_bin; ;设置数据库字符集
grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'jishuzhu1209'; ;分配用户权限
flush privileges; ;刷新权限
set names utf8; ;定义客户端字符集为UTF8(不知描述是否准确)
use zabbix; ;/进入zabbix数据库
source /usr/local/src/zabbix-4.2.3/database/mysql/schema.sql; ;建立对应表项
source /usr/local/src/zabbix-4.2.3/database/mysql/data.sql; ;建立对应表项
source /usr/local/src/zabbix-4.2.3/database/mysql/images.sql; ;建立对应表项
(2)配置zabbix server,最主要是配置连接mysql的用户名和密码
vim /usr/local/zabbix/etc/zabbix_server.conf ;进入zabbix_server的配置文件
LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1 ;数据库ip
DBName=zabbix ;数据库名称
DBUser=zabbix ;数据库用户名
DBPassword=zabbixpwd ;数据库密码
DBPort=3306 ;数据库端口
Timeout=30 ;数据库退出时间
AlertScriptsPath=/usr/local/zabbix/alertscripts ;告警信息、脚本
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=3000
将文件内配置清空将以上配置粘贴进去 注意 用户名和密码自己记得修改
4) 启动zabbix server
chown zabbix:zabbix -R /usr/local/zabbix/ ;赋予zabbix对zabbix文件夹的权限
zabbix_server ;启动zabbix
5)验证zabbix
进程 ps -axuf|grep zabbix_server
端口 nststat -tulnp|grep zabbix_server
日志 cat /usr/local/zabbix/zabbix_server.log
2、zabbix web安装
mkdir /usr/local/nginx/html/zabbix ;创建zabbix web目录用于存放zabbix web的web文件
cp -a /usr/local/src/zabbix-4.2.3/frontends/php/* /usr/local/nginx/html/zabbix/ ;将源码包的web文件拷贝到对应目录
五、zabbix web初始化配置
1.进入对应web页,进行初始化配置,对以下报错配置进行优化,可根据具体的报错类型进行针对排错
vim /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1
保存并退出
systemctl restart php-fpm ;重启php-fpm服务
填写相关参数 Database host 如果是本机建议填写127.0.0.1
配置完成后,会有一个报错提示无法自动更新配置文件,要求下载后手动上传到指定文件夹,我们自己操作一下就可以了 很简单,这里就不截图了。
以下是本次安装遇到的各种坑,请视具体情况具体处理
1.zabbix未启动成功
查看zabbix进程只启动了一个,查看相关端口未启动,查看/usr/local/zabbix/zabbix_server.conf日志,发现数据库连接报错。登录数据库发现登录不上,最后使用mysql命令竟然直接登录成功,晕死,故障的原因应该是没有设置密码。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '*********' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'192.168.1.%' IDENTIFIED BY '*********' WITH GRANT OPTION;
flush privileges;//刷新权限
问题解决完美启动。
2.字体乱码问题
字体路径/usr/local/nginx/html/zabbix/assets/fonts/
vim /usr/local/nginx/html/zabbix/include/defines.inc.php
/Deja VuSans 更改为msyh
默认是DejaVuSans字体,改成msyh微软雅黑字体
刷新网页 验证中文是否正常
3.遇到zabbix_server启动报错,提示zabbix_server.conf 报错
解决方法:取消掉注释的中文内容,启动成功
4.mysql 起不来 报错ERROR!
The server quit without updating PID file (/data/mysql/zabbix-server.pid)
进入mysql报错ERROR 2002 (HY000):
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
故障原因:编译安装mysql时系统会自动在安装目录生成my.cnf配置文件,我们在修改配置文件时是自己在/etc目录建立的my.cnf的文件,这样子会导致系统产生两个my.cnf的文件从而导致mysql没有办法正常启动。
解决方案;删除掉其中一个my.cnf即可