资讯详情

CentOS7下搭建SVN服务器

(1).安装SVN

1)安装SVN

1

2

3

4

5

6

7

8

9

[root@youxi1 ~]# yum -y install subversion mod_dav_svn

[root@youxi1 ~]# cat /etc/services | grep svn

svn 3690/tcp # Subversion //SVN的端口号。3690

svn 3690/udp # Subversion

svnetworks 2973/tcp # SV Networks

svnetworks 2973/udp # SV Networks

svnet 3413/tcp # SpecView Networking

svnet 3413/udp # SpecView Networking

ml-svnet 4171/tcp # Maxlogic Supervisor Communication

2)创建目录

1

2

3

[root@youxi1 ~]# mkdir /webdept ////创建存储版本库的主目录

[root@youxi1 ~]# svnadmin create /webdept/www.youxi1.com //创建两个版本库

[root@youxi1 ~]# svnadmin create /webdept/www.test1.com

注意:svnadmin是由subversion提供软件包。

查看版本库中的文件和文件夹

1

2

[root@youxi1 ~]# ls /webdept/www.youxi1.com/

conf db format hooks locks README.txt

说明:conf目录是本版仓库的配置文件,存储用户账户、权限、密码等

db目录是所有版本控制的数据存储目录

format文件是存储当前库配置版本号的文本文件,是正整数

hooks目录是放置hook脚本文件目录

locks目录是放置subversion监控定数据的目录,用于追踪存取文件库的客户端

查看conf目录下的文件

1

2

[root@youxi1 ~]# ls /webdept/www.youxi1.com/conf/

authz passwd svnserve.conf

说明:authz认证权限相关

passwd用户名和密码

svnserve.conf服务器配置文件

3)修改服务器配置文件

1

2

3

4

5

6

[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/svnserve.conf

anon-access = read//第19行匿名可读

auth-access = write///第20行认证可写

password-db = passwd//第27行,启用密码文件,默认在同一目录下passwd文件

authz-db = authz//第34行,启用同一目录下的认证文件authz文件

realm = www.youxi1.com//第39行登录提示信息

注:在本配置文件中,启用的参数开头不能有空间

4)编辑用户密码文件

1

2

3

4

[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/passwd

admin = 123456 //在[user]模块下编辑

user = 123456

user2 = 123456

5)编辑认证权限文件

1

2

3

4

5

6

7

[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/authz //在[groups]模块下编辑

user_group = user,user2 ///[组名] = [用户名,用户名,...]

[/] []

admin=rw ///[用户名] = [权限];指定用户权限

@user_group = r //@[组名] = [权限];指定组中的用户权限

* = //* = [权限];其他用户的权限,如果权限为空,则无权

6)启动SVN

1

2

3

4

5

6

[root@youxi1 ~]# svnserve -d -r /webdept/

[root@youxi1 ~]# ps aux | grep svn ///检查过程

root 1912 0.0 0.0 180716 800 ? Ss 14:41 0:00 svnserve -d -r /webdept/

root 1915 0.0 0.0 112720 984 pts/0 S 14:42 0:00 grep --color=auto svn

[root@youxi1 ~]# ss -antup | grep svn ///查看端口号

tcp LISTEN 0 7 *:3690 *:* users:(("svnsrve",pid=1912,fd=3))

  -d是daemon的意思,即守护进程。

  -r /webdept/是启动了所有版本库,如果只想启动其中一个可以指定详细地址,例如/webdept/www.youxi1.com/。

 7)如果没有关闭防火墙,并且不打算使用Apache+SVN,那么请将3690添加到防火墙规则

1

2

3

4

5

6

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=3690/tcp

success

[root@youxi1 ~]# firewall-cmd --reload

success

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --list-ports

3690/tcp

 8)添加开机自启

1

[root@youxi1 ~]# echo "svnserve -d -r /webdept/" >> /etc/rc.local<br>[root@youxi1 ~]# chmod +x /etc/rc.d/rc.local

(2).svn常见使用方法

  svn [子命令] [选项] [args]  这是常规使用方法。

  svn help [子命令]  查看子命令的使用方法,子命令有哪些选项等。如果不跟随子命令则显示所有子命令

  svn --version  查看程序的版本号和版本库访问模块。

  svn --version --quiet  只查看程序的版本号。

 1)常用的子命令

1

2

3

4

5

6

7

8

9

10

11

12

import  将未版本化的文件纳入版本控制并提交

checkout  从版本库中检出一个修订版

update  更新工作拷贝

add,delete,copy,move  增、删、复制、移动文件或目录

status  检查状态差异

diff  检查文件行级详细差异

revert  恢复

resolve  解决冲突

switch  切换工作拷贝对应的版本库分支

log  查看历史记录

list  显示文件目录

cat  查看某个文件内容

 2)实例

  导入:svn import [本地路径] [URL] [选项];其中URL可以是svn://[服务器IP地址]/[项目名],也可以是file://[绝对路径],前者从SVN服务器导入,后者从本地导入。

1

2

3

4

5

6

7

[root@youxi1 ~]# mkdir test/

[root@youxi1 ~]# touch test/{1,2}.html

[root@youxi1 ~]# svn import /root/test/ file:///webdept/www.youxi1.com/ -m "firest"  //-m类似注释

正在增加       test/1.html

正在增加       test/2.html

提交后的版本为 1。

  获取:svn checkout [URL] [本地路径];这里的URL一般是svn://[服务器IP地址]/项目名。只有第一次获取项目时使用checkout,后期使用的是update更新。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[root@youxi1 ~]# mkdir test2

[root@youxi1 ~]# svn checkout svn://192.168.5.101/www.youxi1.com/ test2/

认证领域: <svn://192.168.5.101:3690> www.youxi1.com

“root”的密码:   //直接回车<Enter>切换账号

认证领域: <svn://192.168.5.101:3690> www.youxi1.com

用户名: admin  //输入用户名

“admin”的密码:   //输入密码

-----------------------------------------------------------------------

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

   <svn://192.168.5.101:3690> www.youxi1.com

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?no  //no,不保存

A    test2/1.html

A    test2/2.html

取出版本 1。

  添加和提交:svn add [新增的文件或文件夹];svn commit [选项];提交必须到工作副本下,也就是checkout下载到的本地路径下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

[root@youxi1 ~]# touch test2/3.html  //本地创建

[root@youxi1 ~]# svn add test2/3.html  //添加到SVN缓存中

A         test2/3.html

[root@youxi1 ~]# svn commit -m "second"  //需要移动到下载目录下

svn: E155007: “/root”不是工作副本

[root@youxi1 ~]# cd test2/

[root@youxi1 test2]# svn commit -m "second"  //提交SVN缓存

认证领域: <svn://192.168.5.101:3690> www.youxi1.com

“admin”的密码:

-----------------------------------------------------------------------

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

   <svn://192.168.5.101:3690> www.youxi1.com

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?no

正在增加       3.html

传输文件数据.

提交后的版本为 2。

  注意1:checkout导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联。checkout是第一次用,后面的用法就是更新。

  注意2:add向拷贝文件所在的文件夹中添加新的文件,并作标识,是新添加的。提交后该文件才会存储到中央项目仓库。

(3).SVN+Apache

 1)在上面的基础上,安装httpd

1

[root@youxi1 ~]# yum -y install httpd

 2)查看apache对SVN是否支持,以及两个动态库是否存在

1

2

3

4

5

6

[root@youxi1 ~]# vim /etc/httpd/conf.modules.d/10-subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so  //如果存在这两行,代表apache对SVN是支持的

LoadModule authz_svn_module   modules/mod_authz_svn.so

LoadModule dontdothat_module  modules/mod_dontdothat.so

[root@youxi1 ~]# ls /etc/httpd/modules/{mod_dav_svn.so,mod_authz_svn.so}

/etc/httpd/modules/mod_authz_svn.so /etc/httpd/modules/mod_dav_svn.so  //两个动态库也是存在的

 3)配置Apache

1

2

3

4

5

6

7

8

9

10

[root@youxi1 ~]# vim /etc/httpd/conf.d/subversion.conf

<Location /webdept>

  DAV svn

  SVNParentPath /webdept  //SVN根目录

  AuthType Basic  //BAsic认证方式

  AuthName "www.youxi1.com web type"  //提示信息

  AuthUserFile /webdept/svn/passwd  //Apache登录的用户名和密码

  AuthzSVNAccessFile /webdept/svn/authz  //Apache用户登录的访问权限

  Require valid-user  //不允许匿名用户

</LOcation>

  也可以直接写入/etc/httpd/conf/httpd.conf配置文件,这个文件里调用了/etc/httpd/conf.d/目录下的.conf文件。

 4)创建用户密码文件和用户访问权限文件

  创建用户密码文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[root@youxi1 ~]# htpasswd -c /webdept/svn/passwd apacheuser1  //-c创建文件

New password:

Re-type new password:

Adding password for user apacheuser1

[root@youxi1 ~]# htpasswd /webdept/svn/passwd apacheuser2  //不能有-c,否则会覆盖文件

New password:

Re-type new password:

Adding password for user apacheuser2

[root@youxi1 ~]# htpasswd /webdept/svn/passwd apacheuser3

New password:

Re-type new password:

Adding password for user apacheuser3

[root@youxi1 ~]# cat /webdept/svn/passwd

apacheuser1:$apr1$uTlyJF5s$yz5fRFK2PZGIzAwmERdq4.

apacheuser2:$apr1$jTNZIcSi$NVwEHIigLHFBmX4osrBiq/

apacheuser3:$apr1$T81c.kp5$JMPzf/R5O1I0W7JZNNUIK1

  创建用户访问权限文件

1

2

3

4

5

6

7

8

9

10

[root@youxi1 ~]# vim /webdept/svn/authz

[groups]

group_name = apacheuser1,apacheuser2  //设置组

[/]  //SVN根目录

apacheuser1 = rw

[www.youxi1.com:/]  //第一个仓库

@group_name = rw  //组权限

[www.test1.com:/]  //第二个仓库

apacheuser2 = rw  //单用户权限

apacheuser3 = rw

 5)重启httpd,如果防火墙是开启状态,请添加防火墙端口规则

1

2

3

4

5

6

7

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp

success

[root@youxi1 ~]# firewall-cmd --reload

success

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --list-ports

3690/tcp 80/tcp

[root@youxi1 ~]# systemctl restart httpd.service

 6)测试

(4).SVN远程连接中央项目仓库时,Windows下注意点

 1)checkout

   这个URL可以是svn://[服务器IP地址]/[项目名],也可以是http://[IP地址]/[根目录]/[项目名]。注意:svn://要用svn的用户密码(我这里就是/webdept/www.youxi1.com/conf/passwd);http://要用http的用户密码(我这里就是/webdept/svn/passwd)

 2)小图标不显示

  工作区右键-->TortoiseSVN-->Settings-->Icon Overlays中Status cache选择Shell;Drive Types选择Fixed drives。Icon Set选择与系统匹配的选项。最后注销重新登录。

 3)提交

  右键新加的文件或文件夹-->TortoiseSVN-->Add。刷新后文件应该出现一个加号。

  右键新加的文件或文件夹-->SVN Commit。文件的加号变为勾。

标签: t81光电开关传感器传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台