实验:用loganalyzer实现web浏览器访问日志

来源:互联网 发布:京东网络司法拍卖平台 编辑:程序博客网 时间:2024/05/21 03:55


一:实验环境;                                                                        

1、使用LAMP实现web服务器访问日志;

2、A:Centos 6;ip:172.17.250.109  ---》mariadb

     B:Centos 6;ip:172.17.250.106  ---》rsyslog、rsyslog-mysql(Centos 6以后的版本)

     C:Centos 7;ip:172.17.253.35    ----》httpd、php-fpm、php-gd、php-mysql

即,将数据库和日志分别放在不同机器上,实现远程查看管理日志的功能,然后有另一台机器是web服务器为远程web访问日志响应资源(即做反向代理),若是访问静态的页面,web服务器利用Apache的httpd直接响应,但若是访问像日志这种动态的页面的时候,就需要借助FCGI(快速通用网关接口)协议传给php运行,,若果需要访问数据库的话,php去访问数据库,然后再将结果变成静态页面传给httpd,httpd再去响应客户端,在这里用的是php的独立方式php-fpm;并且与Apache服务放在一台机器上;

3、使用loganalyzer程序实现web查看日志的功能;loganalyzer是一个编好的程序,直接拿来用就好了;

二:实验步骤;                                                                             

1、B机器上;

用yum安装rsyslog;首先需要将yum配好;我的yum源是这样的;

[root@B ~]# cat /etc/yum.repos.d/sjj.repo [base1]name=Centos 6baseurl=file:///media/CentOS_6.9_Finalgpgcheck=0[epel]name=Centos 6.9baseurl=http://172.17.0.1/fedora-epel/6/x86_64/gpgcheck=0[root@B ~]# 
[root@B ~]# yum install rsyslog rsyslog-mysql -y            #将两个一起安装一下;
其中安装rsyslog-mysql时会有一个创建数据库的一个脚本/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql数据库文件生成;

root@B ~]# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 172.17.250.109:   #将这个数据库文件传到A机器上,用于创建数据库
然后定义配置文件;
[root@B ~]# vim /etc/rsyslog.conf      #### MODULES ####$ModLoad ommysql                                                    #在MODULES添加上去的rsyslog-mysql的模块#### RULES ####*.info;mail.none;authpriv.none;cron.none           :ommysql:172.17.250.109,Syslog,loguser,magedu   #在RULES里改这一行为后面的格式;其中Syslog是数据库名,loguser是在A中创建授权的用户及“magedu”密码,这些都是利用传到A上的数据库脚本自动创建的
[root@B ~]# service rsyslog start                      #启动rsyslog服务

2、A机器上;

用逻辑卷安装二进制mariadb数据库;

1)、创建逻辑卷;

先加一块200G的硬盘(为了给数据库足够大的空间,用整块盘做数据库);然后执行命令使其生效;

[root@A ~]# echo '- - -' > /sys/class/scsi_host/host0/scan    #有时候也可能是host2,两个都试一下
接下来开始创建逻辑卷;

[root@A ~]# pvcreate /dev/sdb                                #创建pv物理卷[root@A ~]# vgcreate vg_mysqldb /dev/sdb                     #创建vg卷组[root@A ~]# lvcreate -n lv_mysqldb -l +100%FREE vg_mysqldb   #创建lv逻辑卷,将所有的空间都分给它
[root@A ~]# mkfs.ext4 /dev/vg_mysqldb/lv_mysqldb -L /data/mysql #将其格式化,并设卷标为/data/mysql
挂载;

[root@A ~]# mkdir -p /data/mysql                       #创建一个目录作为挂载点;[root@A ~]# vim /etc/fstab                              #写到挂载文件里,使其永远生效/dev/vg_mysqldb/lv_mysqldb      /data/mysql    ext4     defaults      0 0 
[root@A ~]# tune2fs -o acl /dev/vg_mysqldb/lv_mysqldb  #可以加上acl权限(也可以直接写在挂载文件default后面)
[root@A ~]# mount -a                                   #使/etc/fstab文件里没有挂载的立即挂载生效
[root@A ~]# chown mysql /data/mysql/                   #改变/data/mysql的所属人,使mysql在其下可以创建或删除文件(注意若mysql用户不存在要先创建一下)
2)、安装二进制mariadb;(可以参考我的博客http://blog.csdn.net/oh_on/article/details/78326030;这里就简单说一下步骤,不细说了*-*)

[root@A ~]# tar xvf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/                            #解压到指定目录[root@A /usr/local/mysql]# cd /usr/local/[root@A /usr/local/mysql]# mv mariadb-5.5.57-linux-x86_64/ mysql                                 #进去后,改名为mysql(这里我用的mv,也可以创建软连接)[root@A /usr/local/mysql]# cd mysql/[root@A /usr/local/mysql]# ./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql      #生成数据库[root@A /usr/local/mysql]# mkdir /etc/mysql[root@A /usr/local/mysql]# cp support-files/my-huge.cnf  /etc/mysql/my.cnf                      #定义配置文件,名字必须是my.cnf
[root@A /usr/local/mysql]# vim /etc/mysql/my.cnf                   #在配置文件里的[mysqld]下加上下面三行[mysqld]datadir = /data/mysqlinnodb_file_per_table = onskip_name_resolve = on[root@A /usr/local/mysql]# cp support-files/mysql.server /etc/init.d/mysqld       #拷贝服务脚本[root@A /usr/local/mysql]# chkconfig --list mysqld                                #检查是否已添加服务,若没有的话用下面的命令添加一下[root@A /usr/local/mysql]# chkconfig --add mysqld[root@A /usr/local/mysql]# service mysqld start                                   #启动mysqld服务,这里会报错,找不到/var/log/mysqld.log日志文件[root@A /usr/local/mysql]# touch /var/log/mysqld.log                              #创建日志文件,并将所属人改为mysql;然后启动服务就可以啦[root@A /usr/local/mysql]# chown mysql /var/log/mysqld.log
[root@A /usr/local/mysql]# service mysqld start [root@A /usr/local/mysql]# mysql_secure_installation                             #跑安全脚本,参考http://blog.csdn.net/oh_on/article/details/78326030博客
然后利用B上传来的创建数据库脚本文件生成数据库;

[root@A /usr/local/mysql]# cd                        #因为传的时候直接放在了家目录下,所以要回到家目录下执行,或者写绝对路径也行[root@A ~]# mysql -uroot -pmagedu < createDB.sql     #密码是跑安全脚本时设定的,[root@A ~]# 
[root@A ~]# mysql -uroot -pmagedu                              #可以登陆上查看一下是否生成Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 10Server version: 5.5.57-MariaDB MariaDB ServerCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+---------------------+| Database            |+---------------------+| information_schema  || Syslog              |   #可以看到Syslog数据库,就是脚本生成的数据库| #mysql50#lost+found || mysql               || performance_schema  |+---------------------+5 rows in set (0.01 sec)mysql> use Syslog               #进去这个数据库查看一下里面自动生成的表Database changedmysql> show tables    -> ;+------------------------+| Tables_in_Syslog       |+------------------------+| SystemEvents           || SystemEventsProperties |+------------------------+2 rows in set (0.00 sec)
mysql> grant all on Syslog.* to 'loguser'@'172.17.250.106' identified by 'magedu';    #然后授权;给B机器上的loguser,让其可以用magedu密码登录管理数据库Syslog上所有选项
mysql> grant select on Syslog.* to 'loguser'@'172.17.253.35' identified by 'magedu';  #也可以先给C机器也授权,但只给它查询的功能

2、在C机器上;

编译安装httpd在博客http://blog.csdn.net/oh_on/article/details/78326023中有详细介绍,这次我用yum安装

在用yum安装之前首先确保yum源配好;我的yum源如下,配了一个base和一个epel;

[root@c ~]# cat /etc/yum.repos.d/sjj.repo [base]name= Centos 7baseurl=file:///run/media/root/CentOS\ 7\ x86_64gpgcheck=0[epel]name=Centos 7.1baseurl=http://172.17.0.1/fedora-epel/7/x86_64/gpgcheck=0[root@c ~]# 
[root@c ~]# yum install httpd php-mysql php-gd -y           #将所需要的包一起安装一下;php-mysql显而易见是与数据库相关的,php-gd是图形包,
 1)、接下来就编译安装php;

[root@c ~]# tar xvf php-5.6.31.tar.xz        #解压缩并且进入目录下[root@c ~]# cd php-5.6.31/[root@c ~/php-5.6.31]# yum install bzip2-devel libxml2-devel libmcrypt-devel -y   #安装一些相关包(这三个包都是epel源的),要不然在编译时会报错,到时候按照报错再装也行[root@c ~/php-5.6.31]# ./configure --prefix=/app/php --with-mysql --with-openssl  --with-mysqli --enable-mbstring --with-freetype-dir --with-jpeg-dir  --with-png-dir  --with-zlib  --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc/php/  --with-config-file-scan-dir=/etc/php.d  --with-bz2
  #其中这些后面都可以接目录的,因为我的数据库建在另一台机器上,所以-with-mysql和--with-mysqli后面没有接路径,而是直接启用此功能就行了;并且/etc/php需要手动创建,存放配置文件的
[root@c ~/php-5.6.31]# make && make install                           #安装[root@c ~/php-5.6.31]# mkdir /etc/php[root@c ~/php-5.6.31]# cp php.ini-production /etc/php/php.ini             #拷贝配置文件,用商业版(production)[root@c ~/php-5.6.31]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm     #将服务脚本拷贝到相应目录下[root@c ~/php-5.6.31]# ll /etc/init.d/php-fpm -rw-r--r--. 1 root root 2348 Oct 29 11:02 /etc/init.d/php-fpm[root@c ~/php-5.6.31]# chmod +x /etc/init.d/php-fpm                      #因为是个服务脚本,所以赋予其执行权限[root@c ~/php-5.6.31]# ll /etc/init.d/php-fpm-rwxr-xr-x. 1 root root 2348 Oct 29 11:02 /etc/init.d/php-fpm[root@c ~/php-5.6.31]# chkconfig --add php-fpm                           #并且将ph-fpm添加到服务里[root@c ~/php-5.6.31]# chkconfig --list php-fpm                          #查看一下是否添加成功
[root@c ~/php-5.6.31]# cp /app/php/etc/php-fpm.conf.default /app/php/etc/php-fpm.conf   #改一下配置文件名;因为在服务启动的时候读的配置文件名字php-fpm.conf;若不改名的话启动php-fpm服务时会报错
2)、配置httpd支持php 
[root@c ~/php-5.6.31]# vim /etc/httpd/conf/httpd.conf   <IfModule dir_module>    DirectoryIndex index.php index.html              #在配置文件中添加如下行里的index.php</IfModule>               
ProxyRequests Off                                       #还有在最后加上下面的两行ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
[root@c ~/php-5.6.31]# systemctl start php-fpm           #启动php-fpm服务(Centos 7里的新命令systemctl,相当于service)  
3)、准备loganalyzer;

首先找到官网下载一个压缩包;这里我用的是我们马哥教育提供的服务器上下载的;loganalyzer-4.1.5.tar.gz

[root@c ~]# tar xvf loganalyzer-4.1.5.tar.gz                              #因为我直接下载到家目录下了,所以就去家目录下解压缩[root@c ~]# cd loganalyzer-4.1.5/[root@c ~/loganalyzer-4.1.5]# cp -a src/* /var/www/html/log               #因为loganalyzer是一个完整的程序,配置文件都是准备好的,进去目录下,将src目录下的页面文件都拷贝到默认的主站点目录下[root@c ~/loganalyzer-4.1.5]# cd contrib/[root@c ~/loganalyzer-4.1.5/contrib]# ls                     configure.sh  secure.sh[root@c ~/loganalyzer-4.1.5/contrib]# cp configure.sh  /var/www/html/log/  #configure.sh脚本里是生成config.php文件并改其权限为666的内容,所以我们可以将其复制到站点目录下执行该文件,或者复制里面的两个操作直接在命令行执行也行[root@c ~/loganalyzer-4.1.5/contrib]# cd /var/www/html/log/[root@c /var/www/html/log]# bash configure.sh                            #这里我用的是复制到主站点目录下,执行脚本,让它自动创建并赋权限给config.php文件
重启httpd服务;

到这里基本的步骤都完成了;

总结:

1、在A机器上搭建了数据库(用逻辑卷的方式完成的),并且执行了一个创建数据库的脚本createDB.sql,让它自动创建了一个关于日志的数据库Syslog;在该数据库上授权B和C机器的访问,启动mysqld服务(tcp3306端口)

2、在B机器上,用yum安装了rsyslog和rsyslog-mysql两个包,在安装rsyslog-mysql包时创建了一个creaeDB.sql的数据库文件,将它拷贝到有数据库的A机器上,运行自动创建Syslog数据库,并且修改/etc/rsyslog.conf配置文件,加上支持rsyslog-mysql的模块和远程存放日志的定义,启动rsyslog服务();

3、在C机器上,yum安装了httpd服务,编译安装了php的独立服务,修改配置文件,在httpd的配置文件中加入支持php的定义,下载安装了loganalyzer程序,将里面的php页面脚本放到主站点/var/www/html/下的子目录log下(log是自己创建的一个目录),启动httpd服务(tcp80端口);

三:实验测试;                                                                       

先看一下Apache服务所在的C机器上的防火墙、selinux是否都关闭

[root@c /var/www/html/log]# iptables -F                  #直接将防火墙关闭
[root@c /var/www/html]# getenforce                      #使selinux状态是PermissvePermissive
然后打开浏览器,因为loganalyzer是一个完整的程序,所以用浏览器打开直接跟着向导做就好了;



跟着一步一步走,总共八步;在第七步时修改一些选项;最后第八步时“finish”



四:实验结果;                                                                   

我用的php独立服务方式做的,我们班里好几个同学的结果都是,访问页面只是空白,测试了好几次,成功了那么一两下次,结果证明,独立方式下的不稳定,所以建议在做的时候尽量用模块方式,











阅读全文
0 0
原创粉丝点击