背景
公司之前在项目管理过程中使用过SVN,但执行不太好,目前重启文档资料管理。
需求分析
公司部门、项目都存在一些资料,主要需求便捷、安全、稳定三个方面。
便捷
SVN客户端较多,成熟度较高,支持网页、客户端快速存取资料文件。
安全
安全从软件安全、硬件安全两个部分。
硬件部分有:服务器在标准机房,ups支持,服务器磁盘做的raid1阵列。
软件部分:防火墙配置、安全认证、定期备份。
安装过程
安装SVN服务
yum install subversion
创建SVN服务
## 创建SVN·文件夹
mkdir -p /home/data/svn
## 启动SVN服务
svnserve -d -r /home/data/svn
## 创建具体仓库
svnadmin create /home/data/svn/repo1
配置服务
## 当创建SVN仓库之后,会在仓库目录中生成如下文件信息。
conf db format hooks locks README.txt
文件说明
- conf: 是这个仓库的配置文件(仓库的用户访问账号、权限等)
- db:就是所有版本控制的数据存放文件
- hooks:放置hook脚本文件的目录
- locks:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
- format:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
文件配置
svnserve.conf
## svn 服务配置 svnserve.conf [general] ## 默认权限 none read write anon-access = none ## 登录的用户可以写入 auth-access = write ## 账户密码文件配置 password-db = /home/data/svn/repo1/conf/passwd ## 权限认证文件配置 authz-db = /home/data/svn/repo1/conf/authz ## 认证空间名,版本库所在目录 realm = svnTest
passwd
## 账户密码文件 示例信息如下: [users] # harry = harryssecret # sally = sallyssecret zhangsan=123456 lisi=123123 ## 左侧为账户,右侧为密码
authz
- 群组和用户配置
(1)一个组group可以包含一个和多个用户,其中用户名必须在用户配置文件中已经定义。
(2)可以将指定具体组,比如开发组和运维组等。 - 版本库配置以及权限分配
版本库目录格式为 :
[版本库:/项目/目录]
用户名 = 权限
@组名 = 权限
说明:
(1)权限,分为r,w,rw和空。空代表没有任何权限
(2)版本库目录多种写法,如果只写根/代表对这个项目以及下边所有目录都有权限,如果单独制定目录,可以加上具体目录名。
其中根是svn启动的时候我们指定的-r指定的版本库。
举例如下:
[repo1:/] 代表对repo1所有版本库设置权限权限
[repo1:/project1] 代表对repo1版本库下的project1项目设置权限
[repo1:/project1/demo] 代表对repo1版本库下的project1项目的demo目录设置权限## 别名 [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average= ## 群组 [groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe ## 配置dev开发组,pro产品组 dev=zhangsan pro=lisi # [/foo/bar] # harry = rw # &joe = r #上面的别名定义在这里实现 &在这里理解为指针就很容易了 # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r # dev小组只有读取的权限,pro小组有读写的权限 [repo1:/] @dev=r @pro=rw
配置http
检查是否已安装相关配置
ls /etc/httpd/modules/ | grep svn
安装http插件
如果已安装跳过此步
yum install -y mod_dav_svn
配置Http 文件
vi /etc/httpd/conf.d/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 /home/svn AuthName "SVN Repos" AuthType Basic AuthzSVNAccessFile /home/data/svn/repo1/conf/authz AuthUserFile /home/data/svn/repo1/conf/svnusers.conf Require valid-user </Location>
AuthType #使用基本认证方式,即用户名、密码认证
AuthName # 在认证对话框中出现的提示信息
AuthUserFile # 指定存放用户名信息的文件路径
AuthzSVNAccessFile # 指定存放用户访问路径信息的文件路径即设置权限
Require # 限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径创建密码文件
初次创建使用如下命令:
htpasswd -c -m /home/data/svn/repo1/conf/svnusers.conf admin
后续添加用户:
htpasswd -mb /home/data/svn/repo1/conf/svnusers.conf username password
授权目录给http
chown -R apache:apache /home/data/svn/
启停服务
启动SVN服务
svnserve -d -r /home/data/svn/
-d deamon守护进程方式
-r 以root用户启动运行
启动http服务器
systemctl restart httpd.service
开启防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload