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