centos7.8搭建svn服务器

121 篇文章 2 订阅

centos7.8搭建svn服务器

参考网址:

https://mp.weixin.qq.com/s/WFArxNAunSm2x9quPuBY7w

1.准备工作

1)关闭selinux和防火墙,过程略。

[root@mysvn ~]# vim /etc/selinux/config[root@mysvn ~]#

2)查看版本

[root@mysvn ~]# cat /etc/redhat-releaseCentOSLinux release 7.8.2003(Core)[root@mysvn ~]#

3.服务器地址规划

192.168.250.206
2.安装安装svnserve

这里通过yum安装,出现错误,错误提示:

[root@mysvn ~]# yum -y install subversion已加载插件:fastestmirror, langpacks/var/run/yum.pid 已被锁定,PID 为 2766的另一个程序正在运行。Another app is currently holding the yum lock; waiting for it to exit...另一个应用程序是:PackageKit内存:48 M RSS (1.4 GB VSZ)已启动:ThuApr708:31:002022- 10:46之前状态  :睡眠中,进程ID:2766

这里需要先删除yum.pid文件:

[root@mysvn ~]# rm -rf /var/run/yum.pid[root@mysvn ~]#

然后进行安装,安装过程中安装如下3个依赖包 aprapr-utilsubversion-libs

[root@mysvn ~]# yum -y install subversion已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.cn99.combase                                          ……已安装:  subversion.x86_64 0:1.7.14-16.el7                                                                         
作为依赖被安装:  apr.x86_64 0:1.4.8-7.el7  apr-util.x86_64 0:1.5.2-6.el7  subversion-libs.x86_64 0:1.7.14-16.el7     
完毕![root@mysvn ~]#

接着查看一下软件安装位置:

[root@mysvn ~]# rpm -ql subversion/etc/subversion/etc/sysconfig/svnserve/run/svnserve/usr/bin/svn/usr/bin/svnadmin/usr/bin/svndumpfilter/usr/bin/svnlook/usr/bin/svnrdump/usr/bin/svnserve/usr/bin/svnsync/usr/bin/svnversion
3.创建版本库目录

在根目录下创建用于今后管理版本的目录:

[root@mysvn ~]# mkdir -p /mysvn/svnrepos[root@mysvn ~]#
4.创建svn版本库

在上面创建版本管理目录的基础上,创建版本库:

这里创建一个 mydjangoproj版本库库名

[root@mysvn /]# svnadmin create /mysvn/svnrepos/mydjangoproj[root@mysvn /]#

接着进入 mydjangoproj目录:

[root@mysvn /]# cd /mysvn/svnrepos/mydjangoproj[root@mysvn mydjangoproj]# pwd/mysvn/svnrepos/mydjangoproj[root@mysvn mydjangoproj]# ls -al总用量 8drwxr-xr-x. 6 root root  864月   708:55.drwxr-xr-x. 3 root root  264月   708:55..drwxr-xr-x. 2 root root  544月   708:55 confdrwxr-sr-x. 6 root root 2334月   708:55 db-r--r--r--. 1 root root   24月   708:55 formatdrwxr-xr-x. 2 root root 2314月   708:55 hooksdrwxr-xr-x. 2 root root  414月   708:55 locks-rw-r--r--. 1 root root 2294月   708:55 README.txt[root@mysvn mydjangoproj]#

db目录下有下列文件:

[root@mysvn db]# pwd/mysvn/svnrepos/mydjangoproj/db[root@mysvn db]# ls -al总用量 28drwxr-sr-x. 6 root root  2334月   708:55.drwxr-xr-x. 6 root root   864月   708:55..-rw-r--r--. 1 root root    24月   708:55 current-r--r--r--. 1 root root   224月   708:55 format-rw-r--r--. 1 root root 19594月   708:55 fsfs.conf-rw-r--r--. 1 root root    54月   708:55 fs-type-rw-r--r--. 1 root root    24月   708:55 min-unpacked-revdrwxr-sr-x. 3 root root   154月   708:55 revpropsdrwxr-sr-x. 3 root root   154月   708:55 revsdrwxr-sr-x. 2 root root    64月   708:55 transactions-rw-r--r--. 1 root root    24月   708:55 txn-current-rw-r--r--. 1 root root    04月   708:55 txn-current-lockdrwxr-sr-x. 2 root root    64月   708:55 txn-protorevs-rw-r--r--. 1 root root   374月   708:55 uuid-rw-r--r--. 1 root root    04月   708:55 write-lock[root@mysvn db]#

关于上面看到的目录的作用

路径类型作用
conf目录存放版本库所用配置文件的目录
db目录版本数据存储目录
db/fs-type文件版本库数据真实存储格式,SVN有fsfs和bdb两种存储格式
db/rebprops目录记录版本属性
db/revs目录版本库数据存储真实目录
db/uuid文件存储版本库唯一标识号
db/txn-current文件记录当前事务
format文件存储一个整数的文件,此整数代表库层次结构版本
hooks目录存放版本库勾子目录
locks目录存储库锁目录,用来跟踪库的访问者
5.修改svnserver默认目录

修改 /etc/sysconfig/svnserver将默认目录指定到 /mysvn/svnrepos,并注释掉默认目录 /var/svn

这一步很重要,之前配置错了,导致无法访问

[root@mysvn mysvn]# vim /etc/sysconfig/svnserve
[root@mysvn mysvn]# cat /etc/sysconfig/svnserve# OPTIONS is used to pass command-line arguments to svnserve.## Specify the repository location in -r parameter:#OPTIONS="-r /var/svn"OPTIONS="-r /mysvn/svnrepos"[root@mysvn mysvn]#
6.配置文件修改

进入刚才创建的 mydjangoproj版本库目录:

[root@mysvn /]# cd /mysvn/svnrepos/mydjangoproj/conf[root@mysvn conf]# ls -al总用量 12drwxr-xr-x. 2 root root   544月   708:55.drwxr-xr-x. 6 root root   864月   708:55..-rw-r--r--. 1 root root 10804月   708:55 authz-rw-r--r--. 1 root root  3094月   708:55 passwd-rw-r--r--. 1 root root 30904月   708:55 svnserve.conf[root@mysvn conf]#

可以看出,一共存了3个配置文件,其中:

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

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

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

1)编辑 authz 文件

文件中,[/] 表示根目录,即 /mysvn/svnrepos。

在authz最后添加

[/]moonrong = rw

表示 moonrong用户对根目录有读写权限。

过程及查看:

[root@mysvn conf]# vim authz[root@mysvn conf]# cat authz
[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
# [/foo/bar]# harry = rw# &joe = r# * =
# [repository:/baz/fuz]# @harry_and_sally = rw# * = r[/]moonrong = rw[root@mysvn conf]#
2)编辑 passwd 文件

这里给moonrong用户的认证密码为: SUccess123465

[root@mysvn conf]# vim passwd[root@mysvn conf]# cat passwd
[users]# harry = harryssecret# sally = sallyssecretmoonrong = SUccess123465[root@mysvn conf]#
3)编辑 svnserve.conf 文件
[root@mysvn conf]# vim svnserve.conf[root@mysvn conf]# cat svnserve.conf
[general]
anon-access = readauth-access = write
password-db = passwd
authz-db = authz
realm = mydjangoproj
[sasl]# use-sasl = true
[root@mysvn conf]#

上面只保留修改的部分,其含义如下:

anon-access = none:表示禁止匿名用户访问。

auth-access = write:表示授权用户拥有读写权限。

password-db = passswd:指定用户名口令文件,即 passwd 文件。

authz-db = authz:指定权限配置文件,即 authz 文件。

realm = mydjangoproj:指定认证域,即 mydjangoproj 目录。

7.防火墙端口放行

之前将防火墙关闭掉了,这里出于安全考虑,再次开启防火墙,然后开放3690端口。

[root@mysvn /]# systemctl start firewalld[root@mysvn /]# systemctl enable firewalldCreated symlink from/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.Created symlink from/etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.[root@mysvn /]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 四 2022-04-0709:40:58 CST; 19s agoDocs: man:firewalld(1)Main PID: 4747(firewalld)CGroup: /system.slice/firewalld.service└─4747/usr/bin/python2 -Es/usr/sbin/firewalld --nofork --nopid

查看当前开放情况:

[root@mysvn ~]# firewall-cmd --list-allpublic(active)  target: default  icmp-block-inversion: no  interfaces: eth0  sources:  services: dhcpv6-client ssh  ports:  protocols:  masquerade: no  forward-ports:  source-ports:  icmp-blocks:  rich rules:
[root@mysvn ~]#

接着添加规则:

[root@mysvn ~]# firewall-cmd --permanent --add-port=3690/tcpsuccess[root@mysvn ~]#

重启防火墙,查看开放的端口:

[root@mysvn ~]# systemctl restart firewalld[root@mysvn ~]# firewall-cmd --list-allpublic(active)  target: default  icmp-block-inversion: no  interfaces: eth0  sources:  services: dhcpv6-client ssh  ports: 3690/tcp  protocols:  masquerade: no  forward-ports:  source-ports:  icmp-blocks:  rich rules:
[root@mysvn ~]#
8.启动SVN服务
[root@mysvn ~]# systemctl start svnserve或者[root@mysvn ~]# svnserve -d -r /mysvn/svnrepos[root@mysvn ~]#

接着查看服务是否启动成功:

[root@mysvn mysvn]# systemctl status svnserve● svnserve.service - Subversion protocol daemonLoaded: loaded (/usr/lib/systemd/system/svnserve.service; enabled; vendor preset: disabled)Active: active (running) since 四 2022-04-0711:14:21 CST; 1min3s agoProcess: 3043ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=0/SUCCESS)Main PID: 3046(svnserve)Tasks: 1CGroup: /system.slice/svnserve.service└─3046/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /mysvn/svnrepos
4月 0711:14:21 mysvn systemd[1]: StartingSubversion protocol daemon...4月 0711:14:21 mysvn svnserve[3043]: DIGEST-MD5 common mech free4月 0711:14:21 mysvn systemd[1]: StartedSubversion protocol daemon.[root@mysvn mysvn]# ps aux | grep svnavahi      7500.00.0622882280?        Ss10:300:00 avahi-daemon: running [mysvn.local]root      30460.00.01978121284?        Ss11:140:00/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /mysvn/svnreposroot      30790.00.0112828980 pts/0    S+   11:170:00 grep --color=auto svn[root@mysvn mysvn]#

至此服务端已搭建完毕。

可以在LINUX下或者WINDOWS下进行客户端访问测试。

9.客户端访问SVN服务器
1)windows客户端
svn://192.168.250.206:3690/mydjangoproj

注:小乌龟下载地址:

https://tortoisesvn.net/

弹出下面窗口:这里测试 j改为 i,项目名称打错了,无关紧要。

图片

上传文件:

图片

2)LINUX客户端
[root@mysvn ~]# svn co svn://192.168.250.206:3690/mydjangoproj认证领域: <svn://192.168.250.206:3690> mydjangoproj“root”的密码:认证领域: <svn://192.168.250.206:3690> mydjangoproj用户名: moonrong“moonrong”的密码:
-----------------------------------------------------------------------注意!  你的密码,对于认证域:
<svn://192.168.250.206:3690> mydjangoproj
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yessvn: E155000: “/root/mydjangoproj” 已经是指向不同 URL 的工作副本 #这里好像出了问题[root@mysvn ~]#
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yessvn: E155000: “/root/mydjangoproj” 已经是指向不同 URL 的工作副本 #这里好像出了问题[root@mysvn ~]#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在CentOS上离线搭建SVN服务器,需要按照以下步骤进行操作: 1. 首先,在CentOS服务器上安装必要的软件包和依赖项。由于是离线环境,需要先将相关的软件包下载到一个可访问的计算机上,然后通过U盘或其他外部介质将它们传输到CentOS服务器上。在CentOS服务器上使用以下命令安装软件包: ``` rpm -ivh svn-server-rpm包 ``` 2. 创建一个用于存储SVN仓库的目录,并为其分配合适的权限: ``` mkdir /svn-repo chown -R apache.apache /svn-repo ``` 3. 初始化SVN仓库: ``` svnadmin create /svn-repo/myrepo ``` 4. 配置SVN服务。在`/etc/httpd/conf.d/`目录下创建一个新的配置文件,例如`svn.conf`,并添加以下内容: ``` # SVN 配置 <Location /svn> DAV svn SVNPath /svn-repo/myrepo </Location> ``` 5. 重启Apache服务以应用配置更改: ``` systemctl restart httpd ``` 6. 确保防火墙允许通过HTTP访问SVN服务。可以使用以下命令开放端口80: ``` firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload ``` 7. 完成上述步骤后,即可通过浏览器或相应的SVN客户端从其他计算机访问SVN仓库了。 请注意,这只是一个简单的离线搭建SVN服务器的示例步骤。实际操作中可能涉及到更多的细节和配置,具体的步骤可能会有所不同。建议根据自己的实际情况和需求进行相应的调整。 ### 回答2: 要离线搭建CentOS下的SVN服务器,需要以下步骤: 1. 下载SVN软件包:在网络连接正常的环境中,下载最新版本的Subversion软件包,并将其保存到本地或移动存储设备中。 2. 安装CentOS系统:在目标服务器上安装CentOS操作系统,确保操作系统的版本和架构与下载的软件包相匹配。 3. 安装Subversion:将下载的SVN软件包复制到目标服务器,解压并安装。执行相关的安装命令,如使用yum命令安装:sudo yum install subversion。 4. 创建SVN仓库:使用命令行工具,创建一个SVN仓库。在指定的目录中执行命令:svnadmin create /path/to/repository。 5. 配置访问权限:为SVN仓库设置访问权限,确保只有授权的用户可以访问。创建一个authz文件,用于配置用户和组的权限。编辑文件并添加相应的权限规则。 6. 配置SVN服务器:编辑svnserve.conf文件,配置SVN服务器的各项参数。例如,设置SVN服务器监听的端口、启用身份验证等。 7. 启动SVN服务器:执行启动命令,启动SVN服务器。例如,通过命令svnserve -d -r /path/to/repository启动并使其在后台运行。 8. 测试SVN服务器:使用SVN客户端工具,例如TortoiseSVN等,在另一台计算机上测试连接SVN服务器。尝试进行检出、更新和提交等操作,验证服务器是否正常工作。 通过以上步骤,就可以在CentOS服务器上离线搭建一个SVN版本控制系统。 ### 回答3: 要在CentOS上离线搭建SVN服务器,您需要按照以下步骤进行操作: 1. 安装CentOS:首先,确保您已经在离线环境中安装了CentOS操作系统。您可以使用官方的CentOS ISO镜像进行安装。 2. 安装SVN服务器软件:在离线环境中,您需要将SVN服务器软件的安装包下载到离线机器上。您可以从Subversion官方网站或其他可信的软件下载站点下载最新版本的SVN服务器软件安装包。将安装包复制到离线机器上,并使用命令行工具(如yum)安装。 3. 配置SVN服务器:一旦安装了SVN服务器软件,您需要进行相关配置。在离线环境中,您可以编辑SVN服务器的配置文件,通常是在/etc/httpd/conf.d目录下的svn.conf文件。您可以根据实际需求进行配置,如指定版本库的存储位置、访问控制等。 4. 创建SVN版本库:在SVN服务器上创建版本库以存储项目代码。您可以使用svnadmin命令创建版本库,如在命令行中运行"svnadmin create /path/to/repository"来创建名为repository的版本库。 5. 配置访问权限:为了保护SVN版本库中的代码,您需要为其设置访问权限。在离线环境中,您可以在每个项目的conf目录中的svnserve.conf文件中进行配置。通过编辑该文件,您可以控制用户及其对版本库的访问权限。 6. 启动SVN服务器:在离线环境中,您可以启动SVN服务器以便用户可以访问版本库。在命令行中运行"svnserve -d -r /path/to/repository"命令来启动SVN服务器,并将其绑定到指定的版本库路径。 这些步骤将帮助您在CentOS上离线搭建SVN服务器。需要注意的是,在离线环境中,您需要提前准备好所需的软件包及其依赖关系,并保存在本地供安装使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值