将Apache访问日志记录到Mysql数据库中

时间:2022-03-16 04:22:53

环境

操作系统:CentOS

步骤

1.下载源码
下载地址:
https://packages.debian.org/jessie/libapache2-mod-log-sql-mysql
2.configure

./configure --with-apxs=/usr/local/bin/httpd/bin/apxs --with-mysql=/usr/local/bin/mariadb

注意:一定要检查configure完成有没有出现Mysql Driver

------------------------------------
Apache version  : 2.0
SSL Support     : yes
Enabled drivers :
  MySQL Driver
------------------------------------

3.make
4.make install

配置

Apache配置

LoadModule log_sql_module modules/mod_log_sql.so
LoadModule log_sql_mysql_module modules/mod_log_sql_mysql.so

# 下面这些单独配置到相应的VirtualHost里面
LogSQLLoginInfo mysql://{数据库用户名}:{数据库密码}@{数据库地址}/{数据库名}
LogSQLCreateTables on
LogSQLDBParam socketfile /usr/local/bin/mariadb/mysql.sock
LogSQLTransferLogFormat AbHhmRSsTUuvI
LogSQLTransferLogTable {数据表名}

问题

  • Apxs的地址,如果是编译安装,一般会在安装目录的bin/目录下找到
  • mysql客户端库的引用, 如果是源码编译安装, 则直接指向安装目录即可
  • mysql客户端不可用,检查configure后生成的config.log文件,查看具体原因。
  • mysql客户端位置不对,由于我安装的是mariadb,在lib下面没有mysql文件夹,所以创建该文件夹,并且讲lib目录的文件创建链接到mysql文件夹中。执行下ldconfig刷新ld缓存。
  • make 过程中, 提示remote_ip找不到,历史原因, apache已经将remote_ip改为client_ip,只需要按照提示打开对应的文件进行替换即可。
  • 访问日志无法记录,关闭数据库的严格模式,改为宽松模式即可。

参考链接