使用SVN+Apache 搭建一个版本控制服务器

服务概述:

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion,简单来说SVN就是用于多个人共同开发同一个项目,共用资源的目的。SVN 版本控制系统, 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目。

常见版本控制软件:
Cvs  由于之前CVS编码的问题,现在大多数软件开发公司都使用SVN替代了CVS
Svn  集中式版本控制器
git  分布式版本控制器

SVN两种运行方式 ;

模式1:svn单独运行   监听: 3690端口    访问: svn://IP
模式2: svn + apache   监听: 80 端口  访问: http://IP        #两种方式各有利弊,可以自行选择


SVN存储版本数据有2种方式: 

BDB(一种事务安全型表类型) 和 FSFS  (一种不需要数据库的存储系统)。

因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。   


repository(源代码库):  源代码统一存放的地方

Update (更新):  当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

Checkout(提取):   当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):   当你已经修改了代码,你就需要Commit到repository


运行机制;

         

=========================开始安装===============================

安装需要: svn服务器,apache, mod_dav_svn 软件包 ;
# mod_dav_svn模块 : apache http 服务器的插件,可以让版本库通过http协议,在网站上展现。

1,   查看系统基础环境 ;

[root@svn ~]# cat /etc/redhat-release                      #查看系统版本信息

CentOS Linux release 7.4.1708 (Core) 

[root@svn ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0      #查看系统网络配置信息 

TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
IPADDR=IP
PREFIX=24                                          #简写掩码 
GATEWAY=
DNS1=223.5.5.5
[root@svn ~]# 


2,安装svn服务 apache服务 和 mod_dav_svn 模块  ;
   [root@svn ~]# yum install subversion  httpd  mod_dav_svn  -y

               # mod_dav_svn模块 : apache http 服务器的插件,可以让版本库通过http协议,在网站上展现。

3,创建版本库目录,并修改相应权限 ;

[root@svn ~]# mkdir /var/repos                #创建版本库的目录为 repos 
[root@svn ~]# cd /var/
[root@svn var]# ls
repos  run  spool  tmp  www  yp

4,创建两个项目仓库  ;  zhangsan.cn和svn2              # 仓库名称可自己定义

[root@svn var]# svnadmin create /var/repos/zhangsan.cn
[root@svn var]# svnadmin create /var/repos/svn2
[root@svn var]# cd repos/                 #进入到版本库目录下进行查看 ;
[root@svn repos]# ls
svn2  zhangsan.cn


5,启动:SVN服务器 ;

   [root@svn repos]# svnserve -d -r /var/repos/

                  #     -r  /var/repos指定svn根目录是/var/repos

                  #    -d表示以daemon方式(后台运行)运行

6, 查看运行状态 ;
[root@svn repos]# ps -aux | grep svn
root       2040  0.0  0.1 162200   656 ?        Ss   11:07   0:00 svnserve -d -r /var/repos/
root       2042  0.0  0.2 112676   984 pts/0    S+   11:09   0:00 grep --color=auto svn
[root@svn repos]# 

[root@svn repos]# netstat -antup |grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      2040/svnserve       


7,总结:svn服务器搭建 ;
1、安装:  yum install subversion httpd mod_dav_svn
2、创建仓库存储代码: svnadmin create /var/repos/xuegod.cn
3、启动svn服务器:svnserve -d -r /var/repos/



++++++++++++++++++++++++++Apache 部分++++++++++++++++++++++++++++++

1,查看apache支持subversion两个动态库有没有安装成功 ;
 [root@svn repos]# find / -name mod_dav_svn.so
   /usr/lib64/httpd/modules/mod_dav_svn.so
 [root@svn repos]# find / -name mod_authz_svn.so

   /usr/lib64/httpd/modules/mod_authz_svn.so


2,配置apache通过mod_dav_svn 模块来访问SVN服务器 ;

<Location /svn>
       DAV svn
       SVNParentPath /var/repos
        AuthType Basic
AuthName " SVN server of zhangsan!"
   AuthUserFile /home/svn/passwd
        AuthzSVNAccessFile /home/svn/auth
        Require valid-user
</Location>

注释:

<Location /svn>

       DAV svn
       SVNParentPath /var/repos      #存放两个仓库:zhangsan和svn2的真实目录
        AuthType Basic
        AuthName " SVN server of zhangsan!"     #apache认证时弹出的消息
        AuthUserFile /home/svn/passwd             # passwd存储用户名和密码
        AuthzSVNAccessFile /home/svn/auth     #存放用户的权限
        Require valid-user
</Location>

3,建立本地访问控制文件/home/svn/passwd,
        #后期通过httpd服务器访问svn时,会使用这个文件中的用户信息验证用户和密码。
[root@svn repos]# mkdir /home/svn
[root@svn repos]# cd /home/svn/
[root@svn svn]# htpasswd -c /home/svn/passwd  tube

New password:                   #设置密码
Re-type new password:              #重复
Adding password for user tube      #用户是 tube

               # -c create, 创建/home/svn/passwd文件。会提示你输入密码,默认是MD5加密

[root@svn svn]# htpasswd  /home/svn/passwd  xz       #在创建一个  xz 的用户 
New password: 
Re-type new password: 
Adding password for user xz   

#后期再创建时,就不需要加-c参数,否则,会把之前添加到/home/svn/passwd中信息,全部覆盖。

4,查看用户名和密码:
[root@svn svn]# cat /home/svn/passwd
   tube:$apr1$.5l2pZhy$.W6jXeibNvJdmymPOdG4p0

   xz:$apr1$lxyrrYIY$9eZyOp.KnbpN.ez92Wzln/


5,建立本地项目版本库,权限控制文件。
达到以下目标: 
用户      仓库                  权限
tube    zhangsan.cn,svn2     rw

xz       zhangsan.cn            rw

[root@svn svn]# vim /home/svn/auth      #编辑配置文件写入以下内容
[/]
tube = rw
[zhangsan.cn:/]
xz = rw

注释:
[/]                        #  表示在所有仓库的根目录下
tube = rw            #  表示 tube 用户对所有仓库根目录下的软件版本库有rw权限
[zhangsan.cn:/]          #表示,仓库zhangsan.cn 的根目录下的访问权限

xz= rw                       # xz用户对zhangsan.cn仓库具有读和写权限

6,给目录授权,并重启httpd  ;

[root@svn svn]# chown -R apache:apache /var/repos/
[root@svn svn]# ll /var/repos/
总用量 0
drwxr-xr-x 6 apache apache 86 6月  15 11:00 svn2
drwxr-xr-x 6 apache apache 86 6月  15 10:59 zhangsan.cn

[root@svn svn]# systemctl start httpd.service


7,   测试 ; SVN 的访问地址是:   http://IP/svn/zhangsan.cn/

                        

                       

总结:配置Apache+SVN
1、创建配置文件:vim /etc/httpd/conf.d/subversion.conf  让apache可以支持svn
2、创建SVN用户和密码文件: /home/svn/passwd        htpasswd
3、创建SVN权限管理文件:/home/svn/auth


+++++++++++++++++++++++++++SVN客户端使用说明+++++++++++++++++++++++++

      http://tortoisesvn.net/about.zh.html         #客户端下载地址 

        

# 注: 下载 36 或者是 64 根据自己的操作系统来决定,我这里是安装的 64 ,

1,安装完成客户端后,鼠标右击 

                    

2,  点击 “OK” 会提示你输入用户名和密码  ;

                 

3, 直接点击 “OK” 会在桌面直接生成一个 zhangsan 文件夹  ;

                 

                 

4,上传代码:
随意保存一个网页,把网页源代码复制到目录 zhangsan.cn中,然后提交第一个网站代码:

              

5,点击 commit ,选中之后 点击  “OK”

                          

6,   查看一下 

                    

7,在Linux 上也查看一下 ;

[root@svn svn]# svn checkout http://IP/svn/zhangsan.cn zhangsan.cn

认证领域: <http://10.0.0.15:80>  SVN server of zhangsan!
“root”的密码: 
认证领域: <http://10.0.0.15:80>  SVN server of zhangsan!
用户名: tube
“tube”的密码: 


-----------------------------------------------------------------------
注意!  你的密码,对于认证域:


   <http://IP:80>  SVN server of zhangsan!


只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。


你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?no
A    zhangsan.cn/new 2.html
取出版本 1。
[root@svn svn]# ls
auth  passwd  zhangsan.cn
[root@svn svn]# cd zhangsan.cn/
[root@svn zhangsan.cn]# ls
new 2.html
[root@svn zhangsan.cn]# 


 ============================End================================









猜你喜欢

转载自blog.csdn.net/sinat_41075146/article/details/80692864
今日推荐