SVN是Subversion的简称,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理, 相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。适合中小公司的开发人员不多的项目使用,相比git管理工具更简单。
官方地址: https://tortoisesvn.net/
安装svn服务器首先检查操作系统上面是否安装了subversion,一般centos操作系统都默认安装了此软件
服务器: 192.168.1.50安装svn服务为例
yum list | grep subversion 查看安装包 rpm -qa subversion 查看是否安装 yum install subversion -y 安装 rpm -ql subversion 查看安装位置 rpm -ql subversion | more 查看安装 查看版本 svnserve --version svn --version 创建svn仓库目录 mkdir -pv /data/svn/svnrepos 设置为svn仓库目录 svnadmin create /data/svn/svnrepos 执行命令后会在该目录生成几个文件 ls /data/svn/svnrepos authz 是权限控制文件 passwd 是帐号密码文件 svnserve.conf 是SVN服务配置文件 启动svn服务 svnserve -d -r /data/svn/svnrepos 客户端连接:svn://192.168.1.50:3690 输入用户名和密码就能访问了 默认端口 3690 服务器默认使用 3690 端口号 , 要使用非默认端口 , 可以在启动命令后面加一个 --listen-port xxxx svnserve -d -r /data/svn/svnrepos --listen-port 3695 指定端口启动 同时还可以为同一个服务器上不同的 SVN 项目设定不同的端口号 , 比如还建有另一个项目那么可以启动 svnserve -d -r /data/svn/svnrepos2 --listen-port 3696 svnserve -d -r /data/svn/svnrepos --config-file /data/svn/svnrepos/conf/svnserve.conf --listen-port 3690 #--config-file后面跟全局配置参数文件 killall svnserve 停止svn配置用户名和密码还有权限
vim /data/svn/svnrepos/conf/passwd 添加用户名和密码 abc=abc123 lxd=lxd fh=fh123456 ft=ft123456 vim /data/svn/svnrepos/conf/authz 设置权限 [/] 主目录下所有路径 abc = rw 读写 lxd = rw fh = rw ft = rw * = 其他用户没有权限 vim /data/svn/svnrepos/conf/svnserve.conf 服务配置 anon-access = none 匿名用户不允许访问 auth-access = write 有权限用户可读可写 password-db = passwd 指定用户名口令文件名 authz-db = authz 指定权限配置文件名 realm = liang svn Repository #每个SVN项目的认证命名空间,会在认证提示里显示,建议写项目名称。使用http协议连接svn
上面使用的是svn://协议,下面使用http协议连接svn
安装Apache yum install -y httpd mod_dav_svn 安装httpd和svn模块 httpd -version ls /etc/httpd/modules/ 查看是否有mod_dav_svn.so和mod_authz_svn.so模块,如果有,说明mod_dav_svn安装成功! vim /etc/httpd/conf.d/subversion.conf 修改配置文件(没有则新建),內容为: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.soNginx反向代理配置DAV svn SVNListParentPath on SVNParentPath /data/svn AuthType Basic Satisfy Any AuthName "Subversion repos" AuthUserFile /data/svn/svnrepos/conf/http_passwd AuthzSVNAccessFile /data/svn/svnrepos/conf/authz Require valid-user SVNParentPath:支持多个相同父目录的SVN版本库。 SVNPath:只支持一个主目录的SVN版本库,如果在主目录下面建新项目,则提示无权访问。 设置权限 chown apache:apache /data/svn/svnrepos -R 设置Apache http访问用户名,按提示输入两次相同密码 注意:这里的用户名密码要和svn里配置的一样。passwd和http_passwd文件中,账号密码必须设置相同。 ###################################### htpasswd -cm /data/svn/svnrepos/conf/http_passwd abc htpasswd -m /data/svn/svnrepos/conf/http_passwd lxd htpasswd -m /data/svn/svnrepos/conf/http_passwd ft htpasswd -m /data/svn/svnrepos/conf/http_passwd fh htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。 -c:创建一个加密文件; -m:默认采用MD5算法对密码进行加密; -D:删除指定的用户。 -b:在命令行中一并输入用户名和密码而不是根据提示输入密码; htpasswd -bc /data/svn/svnrepos/conf/http_passwd admin 123456 service httpd start 启动Apache 查看端口 netstat -tpnl service httpd restart service httpd status service httpd stop 查看日志 vim /var/log/httpd/error_log 提示没有权限打开文件 Permission denied: Could not open password file: /data/svn/svnrepos/conf/http_passwd 对于这个问题有人说关掉SElinux,个人没试过,不过肯定不好,影响主机安全性。 执行如下命令即可: chcon -R -h -t httpd_sys_content_t /data/svn 使用svn协议提交文件没有问题,但使用http提交文件时报错 Can't open file '/data/svn/svnrepos/db/txn-current-lock': Permission denied 执行下面命令后 可以了 chcon -R -t httpd_sys_content_t /data/svn/svnrepos chcon -R -t httpd_sys_rw_content_t /data/svn/svnrepos service httpd restart 浏览器访问输入用户名和密码:http://192.168.1.50:80/svn/svnrepos/ chkconfig --list httpd 查看开机启动项 chkconfig httpd on #设置开机启动 vim /etc/httpd/conf/httpd.conf 修改Apache端口,默认是80 Listen 3691 修改端口后重启报错了 http://192.168.1.50:3691/svn/svnrepos/ yum provides semanage 安装工具,可能提示没有插件包,用下面的命令 yum install policycoreutils-python 安装 semanage port -l|grep http 查看可以用的http端口 semanage port -a -t http_port_t -p tcp 3691 增加一个端口 semanage port -l|grep http
最后用nginx做反向代理,使用外网访问
vim /data/apps/nginx-main/conf/nginx.conf
location /svn {
proxy_pass http://127.0.0.1:3691/svn;
}
/data/apps/nginx-main/sbin/nginx -s reload
外网访问svn:http://222.240.x.x:8088/svn/svnrepos/
参考链接:
https://blog.csdn.net/yanggd1987/article/details/38293843
https://www.cnblogs.com/taomylife/p/8026886.html
https://blog.csdn.net/tojohnonly/article/details/79765583
https://blog.csdn.net/iw1210/article/details/59543544
https://blog.csdn.net/u011781521/article/details/80200583
https://www.osyunwei.com/archives/9145.html



