由于环境新升级到了CentOS 7,Apache 2.4.6已经不支持mod_auth_mysql进行验证,我们主要通过MySQL验证SVN账号密码。
1
<code>yum -y </code><code>install</code> <code>httpd httpd-devel mod_dav_svn mod_ssl apr-util-mysql</code>
1.使用dbd进行认证,无法与其他工具进行集成,比如Zabbix,禅道(将密码md5加密存储)
2
3
4
5
6
7
8
9
10
11
12
13
<code>DBDriver mysql</code>
<code>DBDParams </code><code>"host=192.168.0.75 port=3306 dbname=svn user=test password=test"</code>
<code>DBDMin 1</code>
<code>DBDKeep 2</code>
<code>DBDMax 10</code>
<code>DBDExptime 60</code>
<code><Location </code><code>"/"</code><code>></code>
<code>AuthType Basic</code>
<code>AuthName </code><code>"SVN Auth"</code>
<code>AuthBasicProvider dbd</code>
<code>AuthDBDUserPWQuery </code><code>"select password from account where is_enable =1 and user = %s"</code>
<code><</code><code>/Location</code><code>></code>
数据库则为
> select * from user;
+----+-------+-------------------------------------------+-----------+
| id | user | password | is_enable |
| 4 | test | {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M= | 1 |
以上只有test账号可以正常使用,其他明文密码和直接md5加密是无法使用的
密码的生成有以下几种加密方式,把以下的密码插入数据库
<code>-- bcrypt</code>
<code>$ htpasswd -nbB myName myPassword</code>
<code>myName:$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT</code><code>/r7q1BB8I2s0BRqC</code>
<code>-- MD5</code>
<code>$ htpasswd -nbm myName myPassword</code>
<code>myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/</code>
<code>-- SHA1</code>
<code>$ htpasswd -nbs myName myPassword</code>
<code>myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=</code>
<code>-- CRYPT</code>
<code>$ htpasswd -nbd myName myPassword</code>
<code>myName:rqXexS6ZhobKA</code>
2.手动安装mod_auth_mysql
下载软件包及补丁
<code>wget https:</code><code>//nchc</code><code>.dl.sourceforge.net</code><code>/project/modauthmysql/modauthmysql/3</code><code>.0.0</code><code>/mod_auth_mysql-3</code><code>.0.0.</code><code>tar</code><code>.gz</code>
<code>wget https:</code><code>//sourceforge</code><code>.net</code><code>/p/modauthmysql/patches/13/attachment/mod_auth_mysql_3</code><code>.0.0_patch_apache2.4.</code><code>diff</code>
安装依赖包:
<code>yum -y </code><code>install</code> <code>mariadb-libs mariadb maraidb-devel patch</code>
安装模块及配置:
14
15
16
17
18
<code># tar zxf mod_auth_mysql-3.0.0.tar.gz</code>
<code># cd mod_auth_mysql-3.0.0</code>
<code># patch -p0 < ../mod_auth_mysql_3.0.0_patch_apache2.4.diff</code>
<code>can't </code><code>find</code> <code>file</code> <code>to patch at input line 3</code>
<code>Perhaps you used the wrong -p or --strip option?</code>
<code>The text leading up to this was:</code>
<code>--------------------------</code>
<code>|--- mod_auth_mysql-3.0.0</code><code>/mod_auth_mysql</code><code>.c 2005-06-22 12:17:45.000000000 -0400</code>
<code>|+++ mod_auth_mysql-3.0.0_patch_apache_2.4</code><code>/mod_auth_mysql</code><code>.c 2013-12-30 18:07:27.646704470 -0500</code>
<code>File to patch: mod_auth_mysql.c </code><code>#此处输入mod_auth_mysql.c执行即可</code>
<code>patching </code><code>file</code> <code>mod_auth_mysql.c</code>
<code>编译模块:</code>
<code># apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c</code>
<code>安装模块:</code>
<code># apxs -i mod_auth_mysql.la</code>
最后在httpd.conf末尾增加配置文件
LoadModule mysql_auth_module modules/mod_auth_mysql.so
检查是否报错:
httpd -t
以上在正常情况下是这样的,但是5.7的就会报错,必须安装如下几个包:
mysql-community-libs-compat
mysql-community-libs
mysql-community-client
mysql-community-common
如果遇上错误,则可以在未安装5.7的机器上使用yum安装的mariadb-libs进行编译,然后上传到5.7的机器,测试后发现无任何问题。
本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1979922