Linux安装svn服务器和权限配置_亲测成功

Linux安装svn服务器和权限配置_亲测成功

SVN简介

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.so

<Location /svn>
    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
</Location>

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反向代理配置

最后用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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值