http搭建SVN
一.安装HTTP和SVN相关软件包
yum install httpd subversion mod_dav_svn -y
等待安装完成即可
二.文件配置
1.在/etc/httpd/conf.d/目录下创建subversion.conf
vi /etc/httpd/conf.d/subversion.conf
2.添加以下命令,然后保存退出
<Location /svn>
DAV svn
SVNParentPath /var/www/svn/
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn-auth-accounts
Require valid-user
</Location>
配置说明:
<Location /svn>
意味着可以通过这样的url(http://ip/port/svn)来访问svn版本库
DAV svn
指定模块
SVNParentPath /var/www/svn/
版本库的位置根目录,这里设置的是/var/www/svn/
AuthType Basic
启用基本的验证,比如用户名/密码对
AuthName "SVN Repository"
一个提示信息,告诉用户验证是干什么用的
AuthUserFile /etc/svn-auth-accounts
用来存储svn账号密码的文件,这里放在了/etc/svn-auth-accounts
AuthzSVNAccessFile /etc/httpd/conf.d/authz
用来设置用户在版本库中目录的访问权限,目前这里没有配置(后面会说明)
Require valid-user
类似于form表单的验证。只有录入正确用户和密码才能访问
三.创建SVN用户
方法一: 先创建用户,再设置密码
htpasswd -cm /etc/svn-auth-accounts adrian
方法二: 用户名和密码一起创建
htpasswd -cbm /etc/svn-auth-accounts admin admin
说明:
-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。
**注意:**如果创建第二个用户时,请勿使用“-c”选项,否则会重新生成文件并覆盖原文件;
四.删除用户
htpasswd -D /etc/svn-auth-accounts adrian
五.创建并配置SVN库(这里我只截一张效果图)
1.创建svn版本库根目录
mkdir /var/www/svn
2.进入根目录,创建版本库repo(库名自定义哈)
目录跳转
cd /var/www/svn
创建版本库
svnadmin create repo
3.修改版本库及该目录下的所属组和所属主
chown -R apache. repo/
4.查看
ll repo/
六.启动httpd并加入开机启动
1.启动httpd
systemctl start httpd
2.加入开机启动
systemctl enable httpd
七.测试
1.在浏览器输入:http://ip/svn/repo
2.输入之前创建的用户名和密码
访问成功,现在没有文件夹和文件,下面随意创建几个文件在测试一下
3,随意新建2个文件并导入
mkdir /mnt/svnProject
touch /mnt/svnProject/file1;touch /mnt/svnProject/file2;
4.导入创建文件到svn
svn import -m "First SVN Repo" /mnt/svnProject/ file:///var/www/svn/repo/svnProject
5.再次刷新页面
八.修改端口号(默认端口是80.如果有之前安装过nginx,端口会有冲突)
1.打开文件
vim /etc/httpd/conf/httpd.conf
2.修改端口,Listen 80 ==> Listen 10。端口可以随意更改,看你的心情哟
保存退出:Esc ⇒ : wq
3.重启httpd(可能会报错哟,如果不报错那当然好了)
systemctl restart httpd
解释:上面的错是因为没有httpd没有添加10端口,所以启动不了
4.解决方法
1)先查看http开放了哪些端口
semanage port -l|grep http
2)添加端口
semanage port -a -t http_port_t -p tcp 81
3)验证
semanage port -l|grep http
5.再次重启(这次没有报错)
systemctl restart httpd
6.验证: 在浏览器输入http://ip:port/svn/repo
九.配置权限
1.多创建两个svn账号
htpasswd -bm /etc/svn-auth-accounts test1 test1;
htpasswd -bm /etc/svn-auth-accounts test2 test2
2.在创建两个目录,并添加到svn中
mkdir /mnt/test1Project
mkdir /mnt/test2Project
svn import -m "First SVN Repo" /mnt/test1Project/ file:///var/www/svn/repo/test1Project
svn import -m "First SVN Repo" /mnt/test2Project/ file:///var/www/svn/repo/test2Project
3.修改/etc/httpd/conf.d/subversion.conf文件添加权限配置
1)打开文件
vim /etc/httpd/conf.d/subversion.conf
2)添加配置
AuthzSVNAccessFile /etc/httpd/conf.d/authz
保存退出: Esc => :wq
4.在指定的目录下创建文件。刚刚配置的是/etc/httpd/conf.d目录下的authz文件
1)创建文件authz
vi /etc/httpd/conf.d/authz
2)添加一下配置,如下。可以自己配置
#用户分组
[groups]
admin=admin
#访问权限配置r: 读; w:写
[/]
@admin = rw
[repo:/test1Project]
test1 = rw
[repo:/test2Project]
test2 = rw
配置说明:
[groups]
给用户分组,大多数情况下是一个版本库一个组
访问权限
r: 读; w:写
[repo:/test1Project]
test1 = rw
用户test1 只能对/repo/test1project目录进行读写,其他目录没有权限
5.重启httpd
systemctl restart httpd
6.验证。在浏览器输入http://ip:port/svn/repo
1)使用test1用户登录
2)结果(没有权限)
3)访问http://ip:port/svn/repo/test1Project