VisualSVN 迁移至Linux SVN+Apache+ssl集成LDAP

一、VisualSVN 迁移至Linux SVN

1.1首先找到Repositories (存放项目目录)

image_1bt67uiju13n616b93ms1d5smqc9.png-69.4kB

1.2通过cmd命令行导出

!!! 特别提示,一定要先清空SVN的权限,否则导出的时候权限会乱 
11.png-23.9kB


 
  1. svnadmin dump 项目目录\项目名称 >存放目录\名称.dump

生成.dump文件 
image_1bt6844ulq851u659fop811dmv1b.png-49.2kB

1.3搭建SVN

具体搭建文档请前往:SVN服务实战应用指南

提示:我们不需要修改SVN项目的配置文件,因为认证是通过apache配置的文件

1.4导入仓库


 
  1. 首先我们将*.dump文件上传至服务器
  2.  
  3. 创建SVN项目(名字最好和原来的相同)
  4. [root@tomcat ~]# svnadmin create /home/svndata/smscenter
  5. [root@tomcat ~]# cd /home/svndata/ #进入创建SVN项目的上一级目录
  6.  
  7. 导入数据
  8. [root@tomcat svndata]# svnadmin load smscenter <smscenter.dump
  9.  
  10. !!!smscenter.dump文件必须和smscenter创建的项目目录在同一级

只要不保存就是成功了 
11.png-78.6kB

1.5设置权限


 
  1. 我们需要修改data目录的权限
  2. [root@tomcat svndata]# chown -R apache.root smscenter

echo "以上就是我们的迁移,下面的步骤我们可以用自己创建的测试项目库进行操作"

二、 svn+apache+ssl配置

2.1安装apache


 
  1. 2017-11-01 更
  2. 这里建议使用yum安装httpd
  3.  
  4. yum install -y httpd
  5.  
  6. 可以解决一些依赖问题,因为编译会有很多模块无法加入!!!!
  7.  
  8. ****************************************************************************
  9. 下载Apache源码
  10. 到http://httpd.apache.org/下载最新稳定版的源码,现在最新稳定版是2.2.21。
  11.  
  12. [root@tomcat ~]# wget http://apache.deathculture.net//httpd/httpd-2.2.21.tar.gz
  13. [root@tomcat ~]# tar xvfz httpd-2.2.21.tar.gz
  14. [root@tomcat httpd-2.2.21]# ./configure--prefix=/usr/local/httpd--enable-so--enable-dav=shared--enable-dav-fs=shared--enable-dav-lock=shared--enable-ssl=shared
  15. [root@tomcat httpd-2.2.21]# make && make install

验证apache


 
  1. [root@tomcat svndata]# /usr/local/httpd/bin/apachectl -V
  2. Server version: Apache/2.2.34 (Unix)
  3. Server built: Oct 25 2017 19:28:35
  4. Server's Module Magic Number: 20051115:43
  5. Server loaded: APR 1.5.2, APR-Util 1.5.4
  6. Compiled using: APR 1.5.2, APR-Util 1.5.4
  7. Architecture: 64-bit
  8. Server MPM: Prefork
  9. threaded: no
  10. forked: yes (variable process count)
  11. Server compiled with....
  12. -D APACHE_MPM_DIR="server/mpm/prefork"
  13. -D APR_HAS_SENDFILE
  14. -D APR_HAS_MMAP
  15. -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
  16. -D APR_USE_SYSVSEM_SERIALIZE
  17. -D APR_USE_PTHREAD_SERIALIZE
  18. -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
  19. -D APR_HAS_OTHER_CHILD
  20. -D AP_HAVE_RELIABLE_PIPED_LOGS
  21. -D DYNAMIC_MODULE_LIMIT=128
  22. -D HTTPD_ROOT="/usr/local/httpd"
  23. -D SUEXEC_BIN="/usr/local/httpd/bin/suexec"
  24. -D DEFAULT_PIDLOG="logs/httpd.pid"
  25. -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
  26. -D DEFAULT_LOCKFILE="logs/accept.lock"
  27. -D DEFAULT_ERRORLOG="logs/error_log"
  28. -D AP_TYPES_CONFIG_FILE="conf/mime.types"
  29. -D SERVER_CONFIG_FILE="conf/httpd.conf"

2.2.安装mod_dav_svn mod_ssl 模块

mod_dav_svn是apache服务器访问svn的一个模块。通过yum安装: 
mod_ssl 是apache配置ssl访问的


 
  1. yum install mod_dav_svn -y
  2. 安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
  3.  
  4. find / -name mod_dav_svn.so
  5. /usr/lib64/httpd/modules/mod_dav_svn.so
  6.  
  7. find / -name mod_authz_svn.so
  8. /usr/lib64/httpd/modules/mod_authz_svn.so
  9.  
  10. yum install -y mod_ssl
  11. 安装后会在/etc/httpd/conf.d/生成ssl.conf我们复制
  12. LoadModule ssl_module modules/mod_ssl.so 到我们的subversion.conf
  13.  
  14. 提示:我们yum安装的httpd模块都在/etc/httpd/modules下面,我们要引用就要把模块复制到httpd的下面

2.3配置apche


 
  1. [root@ldap ~]# grep "^[a-zA-Z]" /etc/httpd/conf/httpd.conf
  2. Include conf.d/*.conf
  3. User apache
  4. Group apache
  5. ServerName localhost
  6.  
  7.  
  8.  
  9. ##这是需要修改的地方,请仔细阅读配置说明!!!!!!!!!!!!!!!!!!!!!@@@@

配置说明:

1.修改apache启动用户
User apache
Group apache


2.设置一个ServerName,否则启动会报警
ServerName localhost

要确保apache安装目录有这3个文件,没有就find搜索一下,否则上一步配置文件会报错 
11.png-80.6kB

2.4 通过openssl生成证书

1.生成根证书的私钥
$ mkdir /etc/httpd/ssl/ && openssl genrsa -out /etc/httpd/ssl/svn.key

2.利用私钥生成一个根证书的申请,一般证书的申请格式都是csr。所以私钥和csr一般需要保存好
$ openssl req -new -key /etc/httpd/ssl/svn.key -out /etc/httpd/ssl/svn.csr

3.自签名的方式签发我们之前的申请的证书,生成的证书为ca.crt。
openssl x509 -req -days 3650 -in /etc/httpd/ssl/svn.csr -signkey /etc/httpd/ssl/svn.key -out /etc/httpd/ssl/svn.crt

!然后我们将svn.crt和svn.key拷贝到并创建/etc/httpd/ssl/就可以

svn整合apache


 
  1. yum安装路径一般都在/etc/httpd下,编译安装看你们的编译设置的路径,推荐httpd安装
  2. [root@tomcat svndata]# vim /etc/httpd/conf.d/subversion.conf (目录是自己生成的)
  3. LoadModule dav_svn_module modules/mod_dav_svn.so
  4. LoadModule authz_svn_module modules/mod_authz_svn.so
  5. LoadModule ssl_module modules/mod_ssl.so
  6.  
  7.  
  8. Listen 443 #监听端口
  9.  
  10. <VirtualHost *:443>
  11. SSLEngine On #开启ssl
  12. SSLCertificateFile "/etc/httpd/ssl/svn.crt" #ssl文件路径
  13. SSLCertificateKeyFile "/etc/httpd/ssl/svn.key" #ssl文件路径
  14.  
  15. <Location /svn/> #是在url或者svn客户端上指定的访问路径
  16. DAV svn #声明sv
  17. SVNParentPath /home/svndata #用来表示共同的父目录,所有不同的版本库都是存放在此目录下
  18. AuthType Basic #apache的简单认证方式
  19. AuthName "#######boxuegu - svn##########"
  20. AuthUserFile /home/svnpasswd/httpdpasswd #密码文件存放位置
  21. AuthzSVNAccessFile /home/svnpasswd/auth.conf #指定保存路径中的版本库访问策略文件
  22. SSLRequireSSL
  23. Require valid-user
  24. </Location>
  25.  
  26.  
  27. </VirtualHost>

2.5 创建svn用户

如果不使用https加密验证正常用户是在svn项目里面配置,但是我们是通过ssl进行用户控制,我们不需要在svn版本里面配置配置文件


 
  1. 通过创建下面的用户来登录svn并控制权限
  2. [root@tomcat ~]# htpasswd -c /home/svnpasswd/httpdpasswd jenkins
  3. [root@tomcat ~]# htpasswd /home/svnpasswd/httpdpasswd test
  4.  
  5. 通过htpasswd创建的用户,密码都是加密的
  6. [root@tomcat svnpasswd]# cat httpdpasswd
  7. jenkins:$apr1$Emt9L7jJ$mKjTMxfkpproCQXX9JF.Y1
  8. test:$apr1$QL1ZsBVc$6krpnqKQf4SI/RfT9nGyN/
  9.  
  10. -c 表示会自动生成这个文件,第一次操作可以执行以后就不需要
  11. #删除用户
  12. htpasswd -D passwd user
  13. #修改用户密码
  14. htpasswd passwd user

2.6创建并配置svn权限


 
  1. [root@tomcat svnpasswd]# vim /svnpasswd/auth.conf 手动创建
  2. [groups]
  3. admin=jenkins
  4. abcdocker=test,jenkins
  5.  
  6. [test:/]
  7. @abcdocker=rw
  8. jenkins=rw
  9.  
  10. r代表读
  11. w代表写
  12. @是用户组
  13. test是项目例如:http://127.0.0.1/svn/test 代表svn下面的test,这个svn是apache的location定义
  14.  
  15.  
  16. 特别提示#########################################
  17. 如果auth.conf这个文件配置的用户有错误,会造成用户打开web界面出现权限拒绝或者无法登陆的情况!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################################################################################

2.7重启svn及apache


 
  1. [root@tomcat ~]# ps -ef|grep svn
  2. root 10784 8674 0 16:27 pts/0 00:00:00 grep --color=auto svn
  3. root 22715 1 0 Oct25 ? 00:00:00 svnserve -d -r /home/svndata/
  4. [root@tomcat ~]# kill 10784
  5. [root@tomcat ~]# svnserve -d -r /home/svndata/
  6. [root@tomcat ~]# /etc/init.d/httpd restart

2.8访问验证

因为我们的ssl证书没有认可,会提示不安全,我们直接访问就可以了 
image_1btbsp9pf1p3j1tu3j8h1ro6m31r.png-127.3kB

输入我们授权的svn即可 
image_1btbsr41741c8o61d861f5462528.png-62.9kB

成功如下图: 
image_1btbsrpekbvh1gl55447i51pab2l.png-47.5kB

三、svn集成LDAP配置

待更新 
配置待验证


 
  1. Listen 443
  2. <VirtualHost *:443>
  3. SSLEngine On
  4. SSLCertificateFile "/tmp/svn.crt"
  5. SSLCertificateKeyFile "/tmp/svn.key"
  6.  
  7. <Location /svn/>
  8. DAV svn
  9. SVNParentPath /home/svndata
  10. SVNListParentPath on
  11. AuthType Basic
  12. AuthName "#######boxuegu - svn##########"
  13. AuthUserFile /home/svnpasswd/httpdpasswd
  14. AuthzSVNAccessFile /home/svnpasswd/auth.conf
  15. SSLRequireSSL
  16. Require valid-user
  17.  
  18. AuthBasicAuthoritative on
  19. AuthBasicProvider ldap
  20. AuthzLDAPAuthoritative on
  21. AuthLDAPURL "ldap://172.16.1.38:389/dc=itcast,dc=cn?userName?sub?(objectCategory=itcastPerson)"
  22. AuthLDAPBindDN "cn=Manager,dc=itcast,dc=cn"
  23. AuthLDAPBindPassword "123456"
  24. </Location>
  25.  
  26. </VirtualHost>

特意检查了三遍,不会问题的!!!!

阅读更多

没有更多推荐了,返回首页