CentOS7 环境下yum安装SVN

        虚拟机安装实例走起说明,还是依旧在虚拟机里面测试,该版本如下:

        Linux:CentOS Linux release 7.4.1708 (Core)

        PHP:PHP 7.2.1

        mysql:mysql  Ver 15.1 Distrib 10.2.11-MariaDB

        nginx:nginx/1.10.2

        

        

        SVN在服务器中地址为:/var/svn

        NGINX在服务器中位置为:/usr/local/nginx

        SVN服务器/nginx服务器:192.168.126.158

        

        检查已安装版本

        检查是否安装了低版本的SVN,如果没有其他显示。说明没有安装过。

[root@localhost ~]# rpm -qa subversion

        卸载旧版本SVN:

[root@localhost ~]# yum remove subversion

        安装SVN:

[root@localhost ~]# yum install subversion

        验证安装,检验已经安装的SVN版本信息,如果成功会输出版本号

[root@localhost ~]# svnserve --version
svnserve,版本 1.7.14 (r1542130)
   编译于 Aug 23 2017,20:43:38

版权所有 (C) 2013 Apache 软件基金会。
此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。
Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。

下列版本库后端(FS) 模块可用: 

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。

Cyrus SASL 认证可用。


        1、建立版本库

        创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里)

[root@localhost ~]# mkdir -p /var/svn
[root@localhost ~]# svnadmin create /var/svn/MyFirstSvn
[root@localhost ~]# cd /var/svn/
[root@localhost svn]# ls
MyFirstSvn
[root@localhost svn]# cd MyFirstSvn/
[root@localhost MyFirstSvn]# ls -al
总用量 8
drwxr-xr-x 6 root root  86 1月  22 10:52 .
drwxr-xr-x 3 root root  24 1月  22 10:52 ..
drwxr-xr-x 2 root root  54 1月  22 10:52 conf
drwxr-sr-x 6 root root 233 1月  22 10:52 db
-r--r--r-- 1 root root   2 1月  22 10:52 format
drwxr-xr-x 2 root root 231 1月  22 10:52 hooks
drwxr-xr-x 2 root root  41 1月  22 10:52 locks
-rw-r--r-- 1 root root 229 1月  22 10:52 README.txt

        执行上面的命令后,自动建立MyFirstSvn 库,查看/var/svn/MyFirstSvn 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

冷暖自知一抹茶ck


        2、配置svn配置文件:

        1)、进入上面生成的文件夹conf下,进行配置:

[root@localhost MyFirstSvn]# cd /var/svn/MyFirstSvn/conf
[root@localhost conf]# ls
authz  passwd  svnserve.conf

        2)、用户密码passwd配置:

[users]
# harry = harryssecret
# sally = sallyssecret
cuikai = 123456

        3)、权限控制authz配置(目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容):

        #设置[/]代表根目录下所有的资源

[/]
cuikai = rw

        版本库目录格式:

            [<版本库>:/项目/目录]

            @<用户组名> = <权限>

            <用户名> = <权限>

            其中,方框号内部分可以有多种写法:

            /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定/opt/svndata。这样,/就是表示对全部版本库设置权限。

            repos1:/,表示对版本库1设置权限

            repos2:/abc, ,表示对版本库2中的abc项目设置权限

            repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

            权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

        3)、服务svnserve.conf配置:

[root@localhost conf]# vi svnserve.conf

追加以下内容:
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=MyFirstSvn

        4)、关闭防火墙、或者配置防火墙端口

配置防火墙端口:
首先要明确CentOS7的默认防火墙为firewallD。subversion的默认端口为3690,如果没有打开会报错:
[root@localhost conf]# firewall-cmd --zone=public --add-port=3690/tcp
success
[root@localhost conf]# firewall-cmd --reload
success

        5)、启动,查看和停止SVN服务

        启动SVN

        # -d : 守护进程 -r : svn数据根目录

[root@localhost conf]# svnserve -dr /var/svn

        查看SVN服务:#默认端口为:3690

[root@localhost conf]# ps aux|grep svnserve            
root       5519  0.0  0.1 197628  1032 ?        Ss   13:49   0:00 svnserve -dr /var/svn
root       5521  0.0  0.0 112676   984 pts/1    S+   13:49   0:00 grep --color=auto svnserve
[root@localhost conf]#

        检测SVN 端口

[root@localhost conf]# netstat -ln |grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN

        停止重启SVN

[root@localhost conf]# killall svnserve                    #停止,杀死SVN服务器
[root@localhost conf]# svnserve -dr /var/svn/MyFirstSvn/           #启动
svnserve: E000098: 不能绑定服务器套接字: 地址已在使用
[root@localhost conf]# ps -aux | grep svnserve
root       4787  0.0  0.1 197132  1024 ?        Ss   22:24   0:00 svnserve -dr /var/svn/MyFirstSvn/
root       4806  0.0  0.0 112660   976 pts/0    S+   22:25   0:00 grep --color=auto svnserve
[root@localhost conf]# kill 4787
[root@localhost conf]# ps -aux | grep svnserve
root       4808  0.0  0.0 112660   976 pts/0    S+   22:26   0:00 grep --color=auto svnserve
[root@localhost conf]# kill 4808
-bash: kill: (4808) - 没有那个进程
[root@localhost conf]# systemctl start svnserve.service
[root@localhost conf]# systemctl status svnserve.service
● svnserve.service - Subversion protocol daemon
   Loaded: loaded (/usr/lib/systemd/system/svnserve.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2017-07-10 22:26:21 CST; 8s ago
  Process: 4815 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 4816 (svnserve)
   CGroup: /system.slice/svnserve.service
           └─4816 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /var/svn
7月 10 22:26:21 localhost systemd[1]: Starting Subversion protocol daemon...
7月 10 22:26:21 localhost svnserve[4815]: DIGEST-MD5 common mech free
7月 10 22:26:21 localhost systemd[1]: Started Subversion protocol daemon.
[root@localhost conf]# systemctl start svnserve.service        #启动
[root@localhost conf]# systemctl status svnserve.service       #查看状态 
[root@localhost conf]# systemctl stop svnserve.service        #停止
[root@localhost conf]# systemctl restart svnserve.service       #重启
[root@localhost conf]# systemctl enable svnserve.service       #设置开机启动


        6)、怎么自动同步svn的代码到项目目录呢?

        利用SVN的POST-COMMIT钩子自动部署代码 我们在开发的过程将代码提交到SVN后使用SVN的hook,通过post-commit脚本,在目 标文件夹根下执行svn update操作,将更新内容同步到测试环境,这样开发调试非常方便。

[root@bogon MyFirstSvn]# cd hooks/
[root@bogon hooks]# cp -f post-commit.tmpl post-commit
[root@bogon hooks]# vi post-commit
删除除了第一行的#!/bin/sh的代码,编辑,/usr/local/nginx/html/ck2.com  为我的项目目录

#!/bin/sh

/usr/bin/svn update --username cuikai --password 123456  /usr/local/nginx/html/ck2.com

[root@bogon hooks]#  chmod +x post-commit
[root@bogon hooks]#  /usr/bin/svn checkout svn://192.168.216.158/MyFirstSvn  /usr/local/nginx/html/www.ck2.com
认证领域: <svn://192.168.216.158:3690> MyFristSvn
“root”的密码: 
认证领域: <svn://192.168.216.158:3690> MyFristSvn
用户名: cuikai
“cuikai”的密码: 

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

   <svn://192.168.216.158:3690> MyFristSvn

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

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A    /usr/local/nginx/html/www.ck2.com/index.php
A    /usr/local/nginx/html/www.ck2.com/1.txt
取出版本 2。

        

        至此,svn已经配置成功!

        怎么测试呢?在虚拟机的本机里面利用已经搭好的lnmp,测试即可,修改本机hostC:Windows\system32\drivers\etc\hosts,添加

192.168.216.158  www.ck2.com

        本机通过客户端TortoriseSVN checkout下来代码,


        在本机编辑代码,index.php

<?php
echo 'My Frist Svn';

        在添加一个1.txt文件,(后续我们可以编辑更改1.txt内容查看,svn是否会自动更新代码到项目目录)

111

2223

        svn提交代码,查看项目目录代码

冷暖自知一抹茶ck


        最后在本机访问虚拟机(注意关闭防火墙),查看代码效果:

        冷暖自知一抹茶ck



冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论