Centos7用http搭建SVN服务

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版本库根目录

扫描二维码关注公众号,回复: 10182886 查看本文章
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
在这里插入图片描述
有不对的地方,希望留言,谢谢
结束

发布了16 篇原创文章 · 获赞 15 · 访问量 599

猜你喜欢

转载自blog.csdn.net/u012590718/article/details/105025448