linux下搭建SVN服务器

linux下搭建SVN服务器————以下内容为转载———————https://blog.csdn.net/wuruijie321/article/details/83652705Linux下的SVN服务器搭建鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,…

大家好,又见面了,我是你们的朋友全栈君。

————以下内容为转载———————

https://blog.csdn.net/wuruijie321/article/details/83652705

Linux下的SVN服务器搭建

鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人

本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结

/******开始*********/

系统环境:Centos 7

第一步:通过yum命令安装svnserve,命令如下:

>yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

若需查看svn安装位置,可以用以下命令:

>rpm -ql subversion

第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)

选择在var路径下创建版本库,当前处于根目录下,一次性创建如下:

>mkdir -p /var/svn/svnrepos

第三步:创建svn版本库

在第二步建立的路径基础上,创建版本库,命令如下:

>svnadmin create /var/svn/svnrepos/xxxx   (xxxx为你预期的版本库名称,可自定义)

创建成功后,进入xxx目录下

>cd /var/svn/svnrepos/xxxx

进入目录,可以看见如下文件信息:

linux下搭建SVN服务器

第四步:配置修改

进入已经创建好的版本库目录下,也就是前文说创建的xxxx

进入conf

>cd /var/svn/svnrepos/xxxx/conf

conf目录下,一共存放三份重要的配置文件,如下:

linux下搭建SVN服务器

 

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn服务器配置文件

细节修改如下:(希望大家严格按照以下信息,不用参考网络上其他资料)

修改authz文件信息,如下:

>vi authz

在文件内容的末尾,添加如下:

linux下搭建SVN服务器

 

只需在末尾添加,无需在文件其他部分修改和添加任何东西(请忽略groups被我马赛克的地方,那其实也是条无用的记录,我忘记删掉而已),末尾内容如下:

[/]

账号1 = rw

账号2 = rw

。。。。。

rw表示赋予此账号可读写的权限,请注意[]中的斜杠,一定是正斜杠,有些教程说,需添加版本库名称在括号内,我直接建议就这写,这样写允许访问的权限更大,避免一些错误

修改passwd文件信息

>vi passwd

账号密码文件无需做修改,也是直接将账号和密码信息追加到文件中即可,注意格式为:

账号 = 密码

例如:admin = 123456

修改svnserve.conf(重要)

vi svnserve.conf

原始文件内容,都被注释掉的,我们只需要去掉4条指定内容前注释即可,如下:

linux下搭建SVN服务器

 

大多数网络资料,要将authz-db = authz这条给去掉注释

还有多数资料会让大家在realm = My First Repository处填写版本库地址 /var/svn/svnrepos/xxx

到此,配置已经全部完成,账号信息已经添加成功

第五步:防火墙开启

centos 7 开始采用firewall作为防火墙的操作指令, 要想用iptables必须先安装插件

多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题,大家按照如下3条命令逐一执行即可

>/sbin/iptables -I INPUT -p tcp –dport 3690 -j ACCEPT

>/etc/init.d/iptables save

>service iptables restart

执行结果如下图:

linux下搭建SVN服务器

*如果你和我一样无法通过以上命令设置好防火墙,请参照本文《附录1》

六:启动svn服务器

在跟目录下,执行如下命令:

>svnserve -d -r /var/svn/svnrepos

启动成功后,可用netstat -tunlp 查看端口是否启用

七:客户端访问svn服务器

在windows客户端,输入地址:svn://ip地址:3690/xxxx   (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)

弹出输入用户名和密码,输入即可访问

八:Apache_SVN整合

配置Apache的http协议访问

查看httpd是否已经安装的svn模块

ls /etc/httpd/modules/ | grep svn  
mod_authz_svn.so  
mod_dav_svn.so

如果没安装,使用yum安装。

yum install mod_dav_svn

安装完成,对svn版本库下的项目ProjectName进行位置映射

在/etc/httpd/conf.d/文件下创建subversion.conf文件并编辑

vi subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so  
LoadModule authz_svn_module   modules/mod_authz_svn.so  
<Location /新建仓库名>  
    DAV svn  
    SVNPath /home/svn/新建仓库名/                  
    AuthType Basic  
    AuthName "Subversion repos"
    AuthUserFile /home/svn/新建仓库名/conf/accesspwd
    AuthzSVNAccessFile /home/svn/新建仓库名/conf/authz
    Require valid-user  
</Location> 

AuthType认证类型

AuthName 描述名,随便取 

AuthUserFile这个是http协议的访问账户密码文件,后面使用htpasswd命令创建

AuthzSVNAccessFile 权限认证文件,这个跟上面配置svn时候配置的权限设置一样

Require 需要认证用户才可以访问

 

htpasswd创建账户密码

htpasswd -c -m /home/svn/ProjectName/conf/accesspwd username

-c是创建新文件,只有第一次创建账户密码时使用

-m是强制使用MD5加密密码(默认)

accesspwd 是创建的文件名。

username你要创建的可访问用户的名字(如我想创建一个asd用户访问这个svn项目仓库,这个username就是asd)

按提示输入两次密码,我们就创建了一个可访问用户名和密码。

如果想要新增加用户abc(第二次添加用户)

不需要使用-c参数,如果使用的会覆盖原来的accesspwd文件

htpasswd -m /home/svn/ProjectName/conf/accesspwd abc

  接着输入两次密码,

  继续增加用户。。。

你不再继续创建新用户,循环结束。

重启Apache的服务

service httpd restart  或者 systemctl restart httpd.service

 

现在就可以通过”http://ip/ProjectName”  来访问我们的svn服务器了

 

当然,上面的情况是在关闭防火墙或开放端口,或http服务正常启动情况。

检查端口是否被使用

netstat -tunlp | grep 80   检查80端口使用情况

netstat -tunlp | grep 3690 检查3690也就是svn的服务端口使用情况

linux下搭建SVN服务器

linux下搭建SVN服务器

端口被使用,说明服务正常开启。

使用curl进行模拟浏览器请求

curl http://localhsot:80/ProjectName  检查服务有没有响应。

一般会返回401 Unauthorized 未认证的401错误

linux下搭建SVN服务器

*如果你和我一样svn客户端ip浏览资源库时报服务器500错误请参考本文《附录2》

到此,Linux下svn服务器搭建就总结完毕,感谢大家的阅读

如果此文有帮助到你,请帮忙推广

附录1:————以下内容为文章中描述不详之处自己查资料填坑————-

CentOS7安装iptables防火墙

CentOS7默认的防火墙不是iptables,而是firewalle.

安装iptable iptable-service

#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables 
#安装iptables-services
yum install iptables-services

禁用/停止自带的firewalld服务

#停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld

设置现有规则

#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#开放3690端口(SVN) 
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

保存规则设定

#保存上述规则
service iptables save

开启iptables服务 

#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service

以下为完整设置脚本

#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service

附录2:svn客户端通过http://ip/资源库浏览资源库时出现500错误

tail -100f /etc/httpd/logs/error_log

Linux代码 

  1. [Mon Oct 07 01:20:37 2013] [error] [client 192.168.1.108] (13)Permission denied: Could not open password file: /home/svn/project/conf/webpasswd  
  2. [Mon Oct 07 01:20:37 2013] [error] [client 192.168.1.108] access to /project failed, reason: verification of user id ‘usera’ not configured  
  3. [Mon Oct 07 01:20:45 2013] [error] [client 192.168.1.108] (13)Permission denied: Could not open password file: /home/svn/project/conf/webpasswd  
  4. [Mon Oct 07 01:20:45 2013] [error] [client 192.168.1.108] access to /project failed, reason: verification of user id ‘usera’ not configured  
  5. [Mon Oct 07 01:21:26 2013] [error] [client 192.168.1.108] (13)Permission denied: Could not open password file: /home/svn/project/conf/webpasswd  
  6. [Mon Oct 07 01:21:26 2013] [error] [client 192.168.1.108] access to /project failed, reason: verification of user id ‘usera’ not configured  
  7. [Mon Oct 07 01:22:02 2013] [error] [client 192.168.1.108] (13)Permission denied: Could not open password file: /home/svn/project/conf/webpasswd  
  8. [Mon Oct 07 01:22:02 2013] [error] [client 192.168.1.108] access to /project failed, reason: verification of user id ‘usera’ not configured  

对于这个问题有人说关掉SElinux,个人没试过,不过肯定不好,影响主机安全性。

执行如下命令即可:

chcon -R -h -t httpd_sys_content_t /svn目录/

设置资源库文件所属账户(这个不确定是否是引起500的原因):chown -R apache.apache /svn目录/

到这里为止就可以客户端查看资源库了,但是SVN 提交时报错   could not begin a transaction

执行如下命令即可:

   1- chcon -R -t httpd_sys_content_rw_t   /svn目录/

   2 – setsebool -P httpd_unified=1

写得不好,仅仅自己做个记录,体验了一下,写一篇别人看得明白的文章太难,感谢csdn的大神们!
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161763.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • shift+window+s_Dijkstra算法

    shift+window+s_Dijkstra算法SwinTransformer作者:elfin资料来源:Swin论文地址:https://arxiv.org/abs/2103.14030项目地址:https://github.com/mi

  • k8s 开源_jdk源码剖析手册

    k8s 开源_jdk源码剖析手册createfunc main() { #随机数 rand.Seed(time.Now().UnixNano()) #创建一个新的命令行对象 command := cmd.NewDefaultKubectlCommand() #日志 logs.InitLogs() defer logs.FlushLogs() #真正执行的命令行 if err := command.Execute(); err != nil { os.Exit(1) }}# NewDefaultKubectl

  • 什么是CSV文件以及如何打开CSV文件格式

    什么是CSV文件以及如何打开CSV文件格式Whatisa.csvfile?CSVstandsforCommaSeparatedValues.ACSVfileisaplaintextfilethatstorestablesandspreadsheetinformation.Thecontentsareoftenatableoftext,numbers,ordates.C…

  • Cisco AAA 认证 总结「建议收藏」

    Cisco AAA 认证 总结「建议收藏」Authentication认证一:使用本地数据库R1>enR1(config)#aaanew-model(打开aaa认证)R1(config)#aaaauthenticationlogindefaultlocal配置任何登入采用Local本地用户数据库R1(config)#usernamebd…

  • wsus补丁服务器搭建_搭建局域网自动更新服务器

    wsus补丁服务器搭建_搭建局域网自动更新服务器1、搭建wsus补丁服务器,在微软官网下载安装包WSUS30-KB972455-x64.exe,地址为:http://www.microsoft.com/en-us/download/details.aspx?id=52162、建议wsus补丁服务器部署在loggetter上,这样省得再买一个winserver2008正版授权,而且就算loggetter故障了,是对整个桌面云…

    2022年10月24日
  • 图片变透明之opacity属性

    图片变透明之opacity属性CSS3图像透明度开发工具与关键技术:DW-opacity属性作者:徐晶旗撰写时间:2019年1月18日利用opacity属性来改变图片的透明度,opacity属性能够设置的值从0.0到1.0。值越小,图片越透明。下面这几张图片是执行代码得出的效果,第一张图片没有给它设置opacity值,所以它呈现的是原图,没有透明的效果,后面几张图设置的opacity值越来越小,可…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号