安装Apache及Subversion服务
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# yum install httpd subversion mod_dav_svn mariadb-server mariadb apr-util-mysql Installed: apr-util-mysql.x86_64 0:1.5.2-6.el7 httpd.x86_64 0:2.4.6-93.el7.centos mariadb.x86_64 1:5.5.65-1.el7 mariadb-server.x86_64 1:5.5.65-1.el7 mod_dav_svn.x86_64 0:1.7.14-14.el7 subversion.x86_64 0:1.7.14-14.el7 Dependency Installed: apr.x86_64 0:1.4.8-5.el7 apr-util.x86_64 0:1.5.2-6.el7 centos-logos.noarch 0:70.0.6-3.el7.centos gnutls.x86_64 0:3.3.29-9.el7_6 httpd-tools.x86_64 0:2.4.6-93.el7.centos libaio.x86_64 0:0.3.109-13.el7 libmodman.x86_64 0:2.0.1-8.el7 libproxy.x86_64 0:0.4.11-11.el7 mailcap.noarch 0:2.1.41-2.el7 neon.x86_64 0:0.30.0-4.el7 nettle.x86_64 0:2.7.1-8.el7 pakchois.x86_64 0:0.4-10.el7 perl.x86_64 4:5.16.3-295.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 perl-Pod-Escapes.noarch 1:1.04-295.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-5.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-295.el7 perl-macros.x86_64 4:5.16.3-295.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 subversion-libs.x86_64 0:1.7.14-14.el7 trousers.x86_64 0:0.3.14-2.el7 Dependency Updated: mariadb-libs.x86_64 1:5.5.65-1.el7
查看DBD MySQL驱动模块信息
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# yum info apr-util-mysql Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.keystealth.org * extras: repos-lax.psychz.net * updates: mirrors.xtom.com Installed Packages Name : apr-util-mysql Arch : x86_64 Version : 1.5.2 Release : 6.el7 Size : 24 k Repo : installed From repo : base Summary : APR utility library MySQL DBD driver URL : http://apr.apache.org/ License : ASL 2.0 Description : This package provides the MySQL driver for the apr-util DBD : (database abstraction) interface. [root@centos-s-1vcpu-1gb-sfo3-01 ~]# rpm -lq apr-util-mysql /usr/lib64/apr-util-1/apr_dbd_mysql-1.so /usr/lib64/apr-util-1/apr_dbd_mysql.so [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
配置MySQL服务并新建数据库及表
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@centos-s-1vcpu-1gb-sfo3-01 ~]# systemctl start mariadb [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
建库
MariaDB [(none)]> create database subversion; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant SELECT, INSERT, UPDATE, DELETE on subversion.* to apache@localhost; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> set password for apache@localhost=password('apachepwd'); Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]>
建表
MariaDB [(none)]> use subversion; Database changed MariaDB [subversion]> use subversion; Database changed MariaDB [subversion]> create table authn ( -> username varchar(255) not null, -> password varchar(255), -> status varchar(255), -> primary key (username) -> ); Query OK, 0 rows affected (0.01 sec) MariaDB [subversion]>
写入测试数据
生成密码(可指定密码加密函数)
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# htpasswd -nb user1 123456 user1:$apr1$hyGT4jgm$xCWktYtKdOZ.y59Zo.t7C1 [root@centos-s-1vcpu-1gb-sfo3-01 ~]# MariaDB [subversion]> INSERT INTO `authn` (`username`, `password`, `status`) -> VALUES('user1', '$apr1$hyGT4jgm$xCWktYtKdOZ.y59Zo.t7C1', 'ok'); Query OK, 1 row affected (0.00 sec) MariaDB [subversion]>
查看表数据
MariaDB [subversion]> select * from authn; +----------+---------------------------------------+--------+ | username | password | status | +----------+---------------------------------------+--------+ | user1 | $apr1$hyGT4jgm$xCWktYtKdOZ.y59Zo.t7C1 | ok | +----------+---------------------------------------+--------+ 1 row in set (0.00 sec) MariaDB [subversion]>
密码加密函数参考
https://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html#function_password
创建仓库
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# mkdir /var/www/svn [root@centos-s-1vcpu-1gb-sfo3-01 ~]# cd /var/www/svn/ [root@centos-s-1vcpu-1gb-sfo3-01 svn]# svnadmin create test [root@centos-s-1vcpu-1gb-sfo3-01 svn]#
配置Apache环境
查看已安装相关模块
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# ls /etc/httpd/modules/ |grep dbd mod_authn_dbd.so mod_authz_dbd.so mod_dbd.so [root@centos-s-1vcpu-1gb-sfo3-01 ~]# ls /etc/httpd/modules/ |grep socache mod_authn_socache.so mod_cache_socache.so mod_socache_dbm.so mod_socache_memcache.so mod_socache_shmcb.so [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
模块mod_authn_dbd配置参考
http://httpd.apache.org/docs/2.4/mod/mod_authn_dbd.html http://httpd.apache.org/docs/2.4/mod/mod_dbd.html http://httpd.apache.org/docs/2.4/mod/mod_authn_socache.html
设置主机名
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# vi /etc/httpd/conf/httpd.conf ServerName 64.227.106.245
新增配置文件
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# vi /etc/httpd/conf.d/repository.conf # mod_dbd configuration # UPDATED to include authentication caching DBDriver mysql DBDParams "host=localhost port=3306 dbname=subversion user=apache pass=apachepwd" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Location /repos> DAV svn SVNParentPath /var/www/svn # mod_authn_core and mod_auth_basic configuration # for mod_authn_dbd AuthType Basic AuthName "Subversion repository" # To cache credentials, put socache ahead of dbd here AuthBasicProvider socache dbd # Also required for caching: tell the cache to cache dbd lookups! AuthnCacheProvideFor dbd AuthnCacheContext my-server SVNPathAuthz off # Authorization: Authenticated users only Require valid-user # mod_authn_dbd SQL query to authenticate a user AuthDBDUserPWQuery "SELECT password FROM authn WHERE username = %s" </Location> [root@centos-s-1vcpu-1gb-sfo3-01 ~]# apachectl -t Syntax OK [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
启动Apache服务
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@centos-s-1vcpu-1gb-sfo3-01 ~]# systemctl start httpd [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
查看端口监听
[root@centos-s-1vcpu-1gb-sfo3-01 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 969/master tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1586/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1018/sshd tcp6 0 0 ::1:25 :::* LISTEN 969/master tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 12198/httpd tcp6 0 0 :::22 :::* LISTEN 1018/sshd [root@centos-s-1vcpu-1gb-sfo3-01 ~]#
使用浏览器访问仓库进行登录验证
http://64.227.106.245/repos/test