基于vmvare12虚拟机ContOS 7系统下搭建SVN版本控制系统

基于vmvare12虚拟机ContOS 7系统下搭建SVN版本控制系统:
如果你有空闲主机,放着吃尘,如果你想拥有属于自己的云存储,永久存储自己的文档,那么我建议你看看这篇文章。

虚拟机版本:vmvare 12
主宿机系统:Windows 7
虚拟机系统:ContOS 7

关于安装虚拟机的部分跳过,操作相对简单,网上有很多教程,大同小异。

一、安装ContOS 7系统

1.1 点击文件 - 新建虚拟机 - 典型 - 下一步

1.2 安装程序光盘映像文件 - 下一步

提前准备好的iso系统镜像文件,底部提供网盘下载链接。

1.3 填写好登陆用户名与密码 - 下一步

账号密码用于登陆到系统的。

1.4 选择虚拟机存储位置 - 下一步

机械硬盘不要存储在c盘,不然装不下。

1.5 指定存储大小

由于我们是用于存储文件的,有多大就用多大,不回占用硬盘的使用率,没有用到存储空间会释放出来。

1.6 点击自定义硬件 - 把网络适配器更改为桥接模式

桥接模式不用勾复制物理网络连接状态,如果此主机仅用于存储,可以把其他配置提到最优。


完成,进入下一步。
如果出现”Intel VT-x 处于禁用状态”错误,需要先进入到主机的bios界面,把 intel vt 虚拟化设置为开启状态。具体打开方式问度娘,因为厂商不同,打开方式不同。

二、安装svn版本控制

登陆到系统后,修改系统语言、连接网络都在设置里面操作,右键桌面打开终端

2.1 获取root权限

进入到管理员角色,拥有root权限可以对很多系统文件夹进行操作。
su root
输入登陆密码,回车(密码是隐藏的,看不到*号照常输入就行)

2.2 安装svn

yum install -y subversion
通过使用yum 可以简单轻松的安装svn。

2.3 检验svn是否安装成功

svnserve --version
通过查看svn版本进行建议,打印出来不是报错信息,就说明安装成功,svnserve是svn服务的名称。

2.4 创建版本库

mkdir /home/svn
svnadmin create /home/svn/repo1
这里在/home/svn目录下创建了一个名为repo1 的版本库。

三、修改svn配置

在创建完版本库后会在/svn /repo1/conf 目录下生成 passwdauthzsvnserve.conf 三个文件。

3.1 修改 passwd 文件添加用户,设置用户密码,使用自带vim 进行编辑修改

vi /home/svn/repo1/conf/passwd

1
2
3
4
5
6
7
8
9
10
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
# 添加用户名密码也比较简单,使用vi指令直接插入 [username] = [password],例如:
username = password

3.2 修改 authz 文件对用户进行分组,以及配置用户读写权限

vi /home/svn/repo1/conf/authz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[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

[/]
#具体的目录 /表示当前版本库,如果当前版本库中不同的文件夹需要区分不同的权限,可以具体的配置
username = rw
# 设置用户或者组的具体的权限。svn对权限的控制分为r(读)以及w(写)
# 用户名/组名 = 具体的权限
# &joe = r

#[repository:/]
# @harry_and_sally = rw
#* = rw

3.3 修改 svnserve.conf 文件,这是svn的具体配置文件,如果要使用到上面的 authzpasswd,就需要修改配置该文件

vi /home/svn/repo1/conf/authz

1
2
3
4
5
6
[general]
anon-access = read
auth-access = write

password-db = passwd
authz-db = authz

3.4 配置完成,接下来就是开启svn的服务

svnserve -d -r /home/svn/
-d 指定svn在后台运行 -r 指定需要启动的版本库位置

如果需要停止svn服务,就需要执行下面的命令进行关闭

1
2
ps -aux |grep svn   #查找svn的进程id
kill -9 进程id #直接关闭svn进程

到这一步基本的svn配置就完成了,可以通过svn客户端测试是否能够正常使用。

查看IP地址
ip addr

通过svn客户端的svn checkout功能进行检出,项目svn地址为:svn://ip地址/版本库名称

四、开启防火墙端口开放

假如你完成了以上配置仍然无法连接的话,那么可能是防火墙给拦截了,可以先试试关闭防火墙再测试(不建议正式环境下使用),或者开放svn的端口。

4.1 常用命令

1
2
3
4
5
6
systemctl start firewalld       #启动防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙
systemctl restart firewalld #重启防火墙
systemctl enable firewalld.service #设置开机自启动
systemctl disable firewalld.service #关闭开机自启动

4.2 开启svn的端口

svn默认的端口是3690,在开启防火墙的同时支持svn外部访问只要执行以下步骤

1
2
firewall-cmd --add-port=3690/tcp --permanent 
firewall-cmd --reload

4.3 关于防火墙配置的其他常用命令

1
2
3
4
5
6
7
8
9
10
11
firewall-cmd --state                           ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助

五、开机自启SVN

5.1 在开机自动文件中添加svn服务

修改自启文件 /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

1
2
3
4
5
6
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

/usr/bin/svnserve -d -r /home/svn #指定svn路径

5.2 修改权限

chmod -X /etc/rc.d/rc.local
修改后还是访问不了,提示没有权限,可以试着关闭selinux。

5.3 关闭selinux

selinux 的开启,容易导致文件权限修改不了等问题,下面就是关闭设置selinux的方法。
/usr/sbin/sestatus -v #查看selinux的开启状态
修改/etc/selinux/config 文件
vi /etc/selinux/config

1
2
# mls - Multi Level Security protection.
SELINUXTYPE=disabled #修改为disabled

重启系统即可

六、通过花生壳外网访问

由于公用ip有限,现在大部分使用的都是动态ip,没有固定ip无法进行外网访问,这个时候我们需要做 端口映射,让外网也能访问到我们的svn。为什么使用花生壳呢,名声在外,自己做的怕安全不足。

6.1 使用端口映射

跳过注册,下载软件部分,直接讲解使用花生壳的端口映射部分。

内网主机填写的是虚拟机的内部IP,端口如果没有修改,默认使用的是3690。
我们要映射的是svn的端口,所以这里选择应用类。端口映射也可以使用到挂载web项目上,如果需要使用web项目,需要修改映射类型。

6.2 外网访问地址

使用客户端svn的svn checkout功能测试,访问地址 svn://外网访问/repo1(repo1为版本库名称)
注意:外网访问地址要包括端口

七、附加说明

7.1 更换虚拟分配的IP地址

点击vmvare的编辑 - 虚拟网络编辑器

直接修改子网ip,修改完记得重启。

7.2 应用svn的pre-commit以及post-commit

在/svn/repo1/hooks目录下的 pree-commit 是作用是强制用户填写提交信息,以方便代码的管理。

1
2
3
cp pre-commit.tmpl pre-commit  #将该模板文件重命名为pre-commit文件
chmod 755 pre-commit #对该文件添加可执行权限
vi /svn/repo1/hooks/pree-commit #修改pree-commit文件

修改后代码如下:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=svnlook #根据自己的具体情况,指定svnlook命令的具体的路径
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
#检测提交信息的长度,如果长度小于10个字符就报错
if [ "$LOGMSG" -lt 10 ];
then
echo "Log message can't be empty! you must input more than 10 chars as comment!." 1>&2
exit 1
fi

post-commit 则可以把我们提交后的文件自动更新到某一目录下。

1
2
3
cp post-commit.tmpl post-commit  #将该模板文件重命名为post-commit文件
chmod 755 post-commit #对该文件添加可执行权限
vi /svn/repo1/hooks/post-commit #修改post-commit文件

修改后代码如下:

1
2
3
4
5
6
7
8
REPOS="$1"
REV="$2"
#指定字符集,有的时候同步失败,可能就是字符集没有指定
export LANG="zh_CN.UTF-8"
#调用svn update命令 将版本库中的文件同步到/home/svn/repo1文件中去
#这里需要指定用户名以及密码
svn update /home/svn/repo1 --username sunms --password james236
--no-auth-cache >> /var/svn-post.log


链接:https://pan.baidu.com/s/1r6Y4LeolSpnwrcWGPy_nHg
提取码:yz8t

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 关于安装虚拟机的部分跳过,操作相对简单,网上有很多教程,大同小异。
  • 一、安装ContOS 7系统
    1. 1.1 点击文件 - 新建虚拟机 - 典型 - 下一步
    2. 1.2 安装程序光盘映像文件 - 下一步
    3. 1.3 填写好登陆用户名与密码 - 下一步
    4. 1.4 选择虚拟机存储位置 - 下一步
    5. 1.5 指定存储大小
    6. 1.6 点击自定义硬件 - 把网络适配器更改为桥接模式
  • 二、安装svn版本控制
    1. 2.1 获取root权限
    2. 2.2 安装svn
    3. 2.3 检验svn是否安装成功
    4. 2.4 创建版本库
  • 三、修改svn配置
    1. 3.1 修改 passwd 文件添加用户,设置用户密码,使用自带vim 进行编辑修改
    2. 3.2 修改 authz 文件对用户进行分组,以及配置用户读写权限
    3. 3.3 修改 svnserve.conf 文件,这是svn的具体配置文件,如果要使用到上面的 authz、 passwd,就需要修改配置该文件
    4. 3.4 配置完成,接下来就是开启svn的服务
  • 四、开启防火墙端口开放
    1. 4.1 常用命令
    2. 4.2 开启svn的端口
    3. 4.3 关于防火墙配置的其他常用命令
  • 五、开机自启SVN
    1. 5.1 在开机自动文件中添加svn服务
    2. 5.2 修改权限
    3. 5.3 关闭selinux
  • 六、通过花生壳外网访问
    1. 6.1 使用端口映射
    2. 6.2 外网访问地址
  • 七、附加说明
    1. 7.1 更换虚拟分配的IP地址
    2. 7.2 应用svn的pre-commit以及post-commit
  • ,