SVN服务器的搭建
1、通过SVN协议访问服务器
(1)准备安装软件时,请关闭防火墙、selinux应用。
本次实验是正常开启防火墙与Selinux的应用中部署的。
安装SVN程序,程序名为:subversion
centos 7 系统自带svn
#rpm -qa subversion
[root@localhost ~]# rpm -qa subversion subversion-1.7.14-14.el7.x86_64
(2)检查已安装的版本
#svnserve --version
[root@localhost ~]# svnserve --version svnserve, version 1.7.14 (r1542130) compiled Apr 11 2018, 02:40:28 Copyright (C) 2013 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ The following repository back-end (FS) modules are available: * fs_base : Module for working with a Berkeley DB repository. * fs_fs : Module for working with a plain file (FSFS) repository. Cyrus SASL authentication is available. [root@localhost ~]#
(3)创建SVN版本库,先创建根目录,再创建项目存放的位置;
# mkdir -p /home/svn
[root@localhost ~]# svnadmin create /home/svn/desgin 设计部门使用
[root@localhost ~]# svnadmin create /home/svn/dev 研发部门使用
(4)配置代码库
进入 /home/svn/desgin 目录后,有以下文件;
authz : 权限控制文件
passwd : 账号密码文件
svnserve.conf : SVN服务配置文件
首先写入账号密码
# vim passwd
### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret
admin = 111111 desgin = 111111 dev = 111111
编辑完成后,保存并退出。
设置权限控制
# vim authz
[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe design = user1,user2,user... developer = user11,user22,user...
[/]
admin = rw 管理员具有所权限
* =
[/desgin] design = rw 设计部权限 * =
[/dev] dev = rw 研发部权限 * =
最后修改svnserve.conf文件
anon-access=none #匿名用户不可访问 auth-access=write #授权用户可写 password-db=passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = My First Repository #认证空间名,版本库所在目录
(5)SVN 启动与停止
# svnserve -d -r /home/svn #让svn以deamon守护进程方式 以root用户启动运行
查看SVN进程
# ps aux | grep svn
[root@localhost ~]# netstat -tunlp | grep 3690 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 19195/svnserve
关闭SVN
# killall svnserve
[root@localhost ~]# netstat -tunlp | grep 3690
(6)访问SVN服务
地址:svn://IP/desgin(项目名称)
2、通过http协议访问服务器
(1)安装httpd与svn模块
# yum -y install mod_dav_svn httpd
查看mod_dav_svn是否安装成功
[root@localhost ~]# ls /etc/httpd/modules/ | grep svn mod_authz_svn.so mod_dav_svn.so
(2)配置版本库
# mkdir -p /var/svn # svnadmin create /var/svn/strategy # 设计项目名称 # chown -R apache:apache /var/svn/ # 改变权限为apache # chcon -R -t httpd_sys_content_rw_t /var/svn/ # 重设selinux的安全上下文
(3)配置版本库项目的位置
在/etc/httpd/conf.d/文件下创建subversion.conf文件
# vi subversion.conf
[root@localhost conf.d]# cat subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic #使用基本认证方式,即用户名、密码认证 AuthName "Authorization Realm" # 在认证对话框中出现的提示信息 AuthUserFile /var/svn/authz # 指定存放用户名的权限 AuthzSVNAccessFile /var/svn/passwd # 指定存放用户的密码 Require valid-user # 用户验证,口令与密码正确才能登入 </Location>
(4)使用htpasswd创建http登陆的账户密码
htpasswd (选项)(文件)(参数)
在 /var/svn/目录中,一共有三个文件
authz(权限分配) passwd(账号密码) strategy(建立的版本库位置)
-c:创建一个加密文件;只有第一次创建账户密码时使用 -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上; -m:默认采用MD5算法对密码进行加密; -d:采用CRYPT算法对密码进行加密; -p:不对密码进行进行加密,即明文密码; -s:采用SHA算法对密码进行加密; -b:在命令行中一并输入用户名和密码而不是根据提示输入密码; -D:删除指定的用户
#首次使用加 -c 参数,以后再入其它用户直接用 -b 参数与 -m 参数配合使用即可。
# htpasswd -c -m /var/svn/passwd admin (第一次添加用户使用 -c 参数)
# htpasswd -mb /var/svn/passwd desgin 111111 (后面的参数是用户与密码) # htpasswd -mb /var/svn/passwd dev 111111 (后面的参数是用户与密码)
(5)创建用户访问路径的文件与权限
[root@localhost ~]# cd /var/svn/
[root@localhost ~]# vim authz
[groups] [/] admin = rw
* = [/desgin] desgin = rw
* =
[/dev]
dev = rw
* =
打开防火墙:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
(6)访问SVN服务器
# systemctl restart httpd
地址:http://IP/svn/desgin(项目名称)