• 阅读帮助
    命令提示符
    [root@server-002 ~]# 表示当前服务root用户执行的命令
    [svn@server-002 ~]$ 表示普通用户svn执行的命令
    [root@localhost ~]# 表示其它服务器的root用户

系统配置

CPU: 2核
内存: 8G
硬盘: 1T
服务器OS: CentOS7
服务器IP: 192.168.1.2


服务简介

SVN 版本库 server


服务管理

管理用户 命令 说明
svn sudo systemctl start httpd 启动服务
svn sudo systemctl stop httpd 停止服务
root systemctl start httpd 启动服务
root systemctl stop httpd 启动服务

服务安装和配置

安装SVN服务

  1. 创建svn用户

    [root@server-002 ~]# useradd svn
    [root@server-002 ~]# passwd svn

  2. 查看是否已经安装svn
    [root@server-002 ~]# rpm -qa subversion
  3. 如果没有,直接第4步,如果有,先卸载
    [root@server-002 ~]# rpm remove subversion -y
  4. 创建svn.repo文件
    [root@server-002 ~]# vi /etc/yum.repos.d/svn.repo
[SVN]
name=SVN Repo
baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
enabled=1
gpgcheck=0
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 执行yum安装svn

    [root@server-002 ~]# yum install subversion -y

  2. 防火墙打开svn默认的3690端口
    [root@server-002 ~]# firewall-cmd –zone=public –add-port=3690/tcp –permanent
    [root@server-002 ~]# firewall-cmd –reload

迁移SVN数据

  1. ssh到原SVN服务器备份旧SVN数据仓库

    [root@localhost ~]# svnadmin dump /var/www/svn/latRepo > /svndump/latRepo.dump

  2. 将备份copy到新的SVN服务器
    [root@localhost ~]# scp /svndump/*.dump svn@192.168.1.2:~/dump
  3. 回到新的SVN服务器,登陆svn用户,创建版本库
    [svn@server-002 ~]$ svnadmin create latRepo
  4. 恢复版本库
    [svn@server-002 ~]$ svnadmin load latRepo < dump/latRepo.dump
  5. 创建日志目录/home/svn/logs
    [svn@server-002 ~]$ mkdir logs
  6. 创建配置目录/home/svn/conf
    [svn@server-002 ~]$ mkdir conf
  7. 创建配置文件/home/svn/conf/svnserve.conf(示例)
    [svn@server-002 ~]$ vim conf/svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
[sasl]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 创建用户文件/home/svn/conf/passwd(示例)

    [svn@server-002 ~]$ vim conf/passwd.conf

[users]
hezhigang=hezhigang
shenfu=shenfu
yangshuaifei=yangshuaifei
  • 1
  • 2
  • 3
  • 4
  1. 创建认证文件/home/svn/conf/authz(示例)

    [svn@server-002 ~]$ vim conf/authz

[groups]
lse = hezhigang, shenfu, yangshuaifei [/]
spancer = rw [latRepo:/]
@lse = rw
* =
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

配置服务管理脚本

  1. 启动脚本start.sh

    [svn@server-002 ~]$ vim start.sh

#!/bin/bash
svnserve -d -r /home/svn --config-file=/home/svn/conf/svnserve.conf --log-file=/home/svn/logs/svn.log
  • 1
  • 2
  1. 停止脚本stop.sh

    [svn@server-002 ~]$ vim start.sh

#!/bin/bash
PID=$(ps -ef | grep svnserve | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

配置开机启动

  1. 创建svn.service文件

    [root@server-002 ~]# vim /etc/systemd/system/svn.service

[Unit]
Description=svn service
After=syslog.target [Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /home/svn --config-file=/home/svn/conf/svnserve.conf --log-file=/home/svn/logs/svn.log
User=svn
Group=svn [Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 激活开机启动svn服务

    [root@server-002 ~]# systemctl daemon-reload
    [root@server-002 ~]# systemctl enable svn

添加http访问支持

  1. 检查是否已经安装了apache服务

    [root@server-002 ~]# rpm -qa httpd

  2. 如果没有该服务,则安装,否则跳过
    [root@server-002 ~]# yum install httpd -y
  3. 安装mod_dav_svn组件
    [root@server-002 ~]# yum install mod_dav_svn -y
  4. 修改apache启动用户和组为svn
    [root@server-002 ~]# vim /etc/httpd/conf/httpd.conf
User svn
Group svn
  • 1
  • 2
  1. 修改subversion.conf配置

    [root@server-002 ~]# vim /etc/httpd/conf.d/subversion.conf

<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /home/svn # 如果想在一个目录下面创建多个版本库的话,则使用SVNParentPath,否则SVNPath。
AuthType Basic
AuthName "svn Repo"
AuthUserFile /home/svn/conf/httpdpasswd
AuthzSVNAccessFile /home/svn/conf/authz
Require valid-user
</Location>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 切换svn用户,创建密码文件并添加用户

    [svn@server-002 ~]$ htpasswd -c -m /home/svn/conf/httpdpasswd admin

后续添加用户只需执行htpasswd /home/svn/conf/httpdpasswd <username>

  1. 开放80端口

    [root@server-002 ~]# firewall-cmd –add-port=80/tcp –permanent
    [root@server-002 ~]# firewall-cmd –reload

  2. 启动apache

    [root@server-002 ~]# systemctl start httpd
    [root@server-002 ~]# systemctl enable httpd

添加apache支持后,如果不需要通过svn://192.168.1.2的形式访问,可以不用启动svn,直接启动httpd服务即可。如果二者都要支持,则httpd.service和svn.service都启动,但二者使用的密码文件不相同

centos7+apache+svn配置 踩坑,注意权限问题。apache应用目录checkout应用 必须用这个命令:svn co file:///home/svn/test/ test ,通过svn add * &&commit 及任意修改都是不行的的更多相关文章

  1. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  2. 记一次 Spring 事务配置踩坑记

    记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...

  3. mybatis-generator:generate 生成代码配置踩坑详解

    mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...

  4. svn配置多仓库与权限控制

    telnet: connect to address 47.106.115.228: Connection refused svn执行上下文错误由于目标计算机积极拒绝无法连接 标签: svn 2017 ...

  5. SVN配置以及自己主动部署到apache虚拟文件夹

    SVN配置以及自己主动部署到apache虚拟文件夹 一.VisualSVN server 服务端和TortoiseSVNclient下载 VisualSVN下载:http://subversion.a ...

  6. Kafka SASL ACL配置踩坑总结

    源起:工程现阶段中间件采用的是kafka.满足了大数据的高吞吐,项目间的解耦合,也增强了工程的容错率与扩展性.但是在安全这一块还有漏洞,kafka集群中,只要网站内的任何人知道kafka集群的ip与t ...

  7. Windows+Apache+Python+Django 踩坑记录

    摘要 使用Python进行Web项目开发:相对于主流三大Web端解决方案(Java/.NET/PHP) Python在某些方面具有一定的优势,相对 Java/.NET 有更轻量级的部署方案,相对PHP ...

  8. XXLJOB2.1.0数据源配置踩坑记录

    最近在看XXLJOB,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与Quartz解耦了,所以就用了最新的版本. 首先说一下踩坑过程: 代码开发完成之后,在定时跑的时候第一次跑的多数失败 ...

  9. 在mac版virtual box中安装ubuntu虚拟机的NAT/Host-Only网络配置踩坑记录

    之前用惯了vmware和parallels desktop,网络配置十分智能,基本不用自己配置.由于版权原因,工作电脑上换了免费的virtual box用,四五年都完全在虚拟机里干活的本菜鸡居然在虚拟 ...

随机推荐

  1. 【BZOJ1305】【CQOI2009】 dance跳舞

    看menci的博客点出二分的思路然后做出来,menci太强辣 原题: 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲. ...

  2. day05 Spring中自定义注解的用处-之获取自定义的Servie

    PS: 在RPC远程调用中,想要获取自定义的service的方法,就得自定义标签遍历拿到方法 PS:在spring中,两个最核心的 概念是aop和ioc,aop其实就是动态代理. ioc 就是解决对象 ...

  3. linqpad使用方法备忘

    1.使用EF更新数据库 void Main() { select item).ToList(); CM_BookPages.DeleteAllOnSubmit(items); SubmitChange ...

  4. Java基础二(变量、运算符)

    1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...

  5. zabbix怎么把英文界面换成中文

    虽然能勉勉强强能看懂大部分英文,但感觉还是直接换中文方便上手一点

  6. python super()函数

    super()函数是用来调用父类(超类)的一个方法 super()的语法: python 2 的用法: super(Class, self).xxx  # class是子类的名称 class A(ob ...

  7. 关于 php json float 出现很多位的问题

    关于 php json float 出现很多位的问题 serialize_precision http://php.net/manual/en/ini.list.php https://wiki.ph ...

  8. js将foo-bar转为fooBar

    这是一道js的面试题,就是考察将普通面命转为小驼峰命名 <!DOCTYPE html> <html lang="en"> <head> < ...

  9. apache的MultipartEntityBuilder文件上传

    本文讲解多文件上传方法,不比较上传有几种方法和效率,而是定向分析apache的httpmime包的MultipartEntityBuilder类,源码包:httpmime-4.5.2.jar 一.常用 ...

  10. Qt 中的事件处理(二)

    1. 回顾事件传递的过程 ①源头:操作系统   操作系统检测到用户的动作时,就会产生一个系统消息,系统消息就会被发送到正在运行的Qt应用程序中, ②应用程序收到系统消息后, 他会将系统消息翻译成对应的 ...