CentOS下搭建SVN服务器
一,介绍SVN
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 ----百度百科
二,安装SV
官网下载: http://subversion.apache.org/packages.html
SVN客户端TortoiseSVN :https://tortoisesvn.net/downloads.html
1,yum install subversion安装
1 |
[[email protected] conf]# yum install subversion |
2,新建一个目录用于存储SVN目录
1 |
[[email protected]]mkdir /svn |
3,新建一个测试仓库
1 2 3 4 5 6 7 8 9 |
[[email protected] svn]# svnadmin create /svn/test/ [[email protected] svn]# ll /svn/test/ total 24 drwxr-xr-x. 2 root root 4096 Jul 28 18:12 conf drwxr-sr-x. 6 root root 4096 Jul 28 18:12 db -r--r--r--. 1 root root 2 Jul 28 18:12 format drwxr-xr-x. 2 root root 4096 Jul 28 18:12 hooks drwxr-xr-x. 2 root root 4096 Jul 28 18:12 locks -rw-r--r--. 1 root root 229 Jul 28 18:12 README.txt |
以下关于目录的说明:
hooks目录:放置hook脚步文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
4,配置SVN服务的配置文件svnserver.conf:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
[[email protected] conf]# vim svnserve.conf ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.tigris.org/ for more information. [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = read ##注意前边不要有空格,要顶齐 auth-access = write ##注意前边不要有空格,要顶齐 ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd ##注意前边不要有空格,要顶齐 ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file's location is relative to the the ### directory containing this file. If you don't specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. authz-db = authz ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = This is My First Test Repository ##这个是提示信息 [sasl] ### This option specifies whether you want to use the Cyrus SASL ### library for authentication. Default is false. ### This section will be ignored if svnserve is not built with Cyrus ### SASL support; to check, run 'svnserve --version' and look for a line ### reading 'Cyrus SASL authentication is available.' # use-sasl = true ### These options specify the desired strength of the security layer ### that you want SASL to provide. 0 means no encryption, 1 means ### integrity-checking only, values larger than 1 are correlated ### to the effective key length for encryption (e.g. 128 means 128-bit ### encryption). The values below are the defaults. # min-encryption = 0 # max-encryption = 256 |
5,配置访问用户及密码
1 2 3 4 5 6 7 8 9 10 11 |
[[email protected] conf]# vim passwd ### 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 lqb = lqb123456 test1 = 123456 test2 = 654321 |
6,配置新用户的授权文件
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 26 27 28 29 30 31 32 33 34 |
[[email protected] conf]# vim authz ### This file is an example authorization file for svnserve. ### Its format is identical to that of mod_authz_svn authorization ### files. ### As shown below each section defines authorizations for the path and ### (optional) repository specified by the section name. ### The authorizations follow. An authorization line can refer to: ### - a single user, ### - a group of users defined in a special [groups] section, ### - an alias defined in a special [aliases] section, ### - all authenticated users, using the '$authenticated' token, ### - only anonymous users, using the '$anonymous' token, ### - anyone, using the '*' wildcard. ### ### A match can be inverted by prefixing the rule with '~'. Rules can ### grant read ('r') access, read-write ('rw') access, or no access ### (''). [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 # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r admin = lqb,test2 user = test1 [/svn/test/] @admin = rw @user = r |
备注:
admin = lqb,test2 创建admin组,组成员为:lqb,test2
user = test1 创建用户组,用户成员:test1
[test:/] 赋予根权限,为了便于管理和权限的控制,可以把权限细化到版本库中相应的目录
@admin = rw admin组有读写的权限
@user = r user组只有读的权限
*= 表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。
备注:版本库的目录格式如下:
[<版本库>:/项目/目录]
@<用户组名> = 权限
<用户名> = 权限
其中[]內容有許多写法:
[/],表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:/svn/svndata([/]=/svn/svndata).[/]就是表示对全部版本设置的权限
[test:/],表示对版本库test设置权限;
[test:/svnadmin],表示对版本库test中的svnadmin项目设置权限;
[test:/svnadmin/second],表示对版本库test中的svnadmin项目的目录设置权限;
权限的主体可以是用户组,用户或者*,用户组在前面要以@开头,*表示全部用户
权限分为:r ,w, rw和null ,null空表示没有任何权限。
auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。
7,启动svn服务
1 |
[[email protected] conf]#svnserve -d -r /svn/ |
注意:更改svnserver.conf时需要重启SVN服务,更改authz,passwd文件时则不需要重启服务
二,通过客户端进行连接:
<一>,Windos客户端连接操作
1,使用windows的客户端来进行连接
2,在Linux使用如下命令行:
1 2 3 4 |
[[email protected] conf]# svn co svn://192.168.200.200/test A test/工作文档.txt.bak A test/soft Checked out revision 2. |
如果失败的话,基本上可以断定authz文件的配置有问题,可以修改下:
1 2 3 4 5 6 |
admin = lqb,test2 user = test1 [/] @admin = rw @user = r * = ###表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录 |
3,check out后会在桌面创建一个文件夹,说明操作成功,接下来向该文件夹放文件,然后右键SVN commit,会看到文件在同步,如图一,二,三,四,五
图一
图二
图三
图四
4,同步完成之后,我们可以在本地查看是否同步到服务器中,右击桌面--->TortoiseSVN→Repo Browser即可查看,也可以先SVN Update更新一下,确保内容是最新的。
5,如果要删除文件,直接本地删除然后commit即可。
如果查看历史版本TortoiseSVN,右击文件夹-->TortoiseSVN-->Show log.而且可以查看文档发生了什么变化。
如果版本库地址发生了变化更换的步骤如下:右击文件夹-->TortoiseSVN-->Relocate修改地址确认commit即可
<二>,Linux客户端同步过程:
把linux做为SVN客户端,所以你操作的并不一定是SVN的服务器那台,以后如果说我要定时自动发布代码等等,这时候就要用到脚本了,所以接下来的也是很重要的首先安装SVN,步骤同上,在此就不在赘述。
1,同步文件,check out: svn co svn://192.168.1.202/sadoc /data/svndata/ --username=我的用户名 --password=我的密码
1 2 3 4 5 6 7 8 9 10 |
[[email protected] conf]# svn co svn://192.168.200.200/test /svn --username=lqb --password=lqb123456 A /svn/svn.txt.bak A /svn/工作文档.txt.bak.bak A /svn/svn-test.txt A /svn/svn.txt A /svn/工作文档.txt.bak A /svn/ROOT.war A /svn/soft A /svn/soft/ROOT.war Checked out revision 16. |
注意! 你的密码,对于认证域: <svn://23.110.85.249:3690> 68cfb7eb-c123-4643-8825-8a067020e3f4只能明文保存在磁盘上!
如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。
2,版本库内容更新
1 2 3 4 5 6 |
[[email protected] conf]# svn update svn://192.168.200.200/test /svn --username=lqb --password=lqb123456 Skipped 'svn://192.168.200.200/test' At revision 16. Summary of conflicts: Skipped paths: 1 [[email protected] conf]# |
3,查看svn中的数据
1 2 3 4 5 6 7 8 9 |
[[email protected] conf]# svn ls svn://192.168.200.200/test/ --username=lqb --password=lqb123456 ROOT.war soft/ svn-test.txt svn.txt svn.txt.bak 工作文档.txt.bak 工作文档.txt.bak.bak [[email protected] conf]# |
4,本地数据commit数据到SVN中
1 2 3 4 5 6 7 8 9 |
[[email protected] svn]# vim 123.log "123.log" [New] 3L, 32C written [[email protected] svn]# svn add 123.log A 123.log [[email protected] svn]# svn ci -m "commit data" Adding 123.log Sending svn.txt Transmitting file data .. Committed revision 17. |
-m [--message] ARG: 指定日志信息ARG 不添加-m参数会报错。
<三>,SVN目录树
一般比较规范的SVN它会有三个目录,分别为:
/svn/trunk: 主干
/svn/branch: 个人或团队开发的分支
/svn/tag: 标记版本,比如某个版本开发好了。
现在我要创建三个这样的目录,然后我要导入到版本库中去,这里会用到的是import命令
import:将未纳入版本控制的文件或目录树提交到版本库。要分清楚它和commit的区别,commit指的是把工作副本的修改提交到版本库。
1 2 3 4 5 6 7 |
[[email protected] svndata]# mkdir -p svn/{trunk,branch,tag} [[email protected] svndata]# svn import /svn/svn svn://192.168.200.200/test --username=lqb --password=lqb123456 -m "import" Adding /svn/svn/trunk Adding /svn/svn/tag Adding /svn/svn/branch Committed revision 18. [[email protected] svndata]# |
把主干的东西拷到一个分支
1 2 |
[[email protected] svndata]# svn copy svn://192.168.200.200/test/trunk svn://192.168.200.200/test/branch/branch -m "create a branch" --username=lqb --password=lqb123456 Committed revision 19. |
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
0
分享
收藏
上一篇:Linux下Web网站压力测试工具Webbench下一篇:zabbix汉化
https://blog.csdn.net/mjx342112780/article/details/52063406
SVN服务端的搭建和简单使用
SVN简单说明
SVN
是
Subversion
的简称,是一个开放源代码的版本控制系统,相较于
RCS
、
CVS
,它采用了分支管理系统,它的设计目标就是取代
CVS
。互联网上很多版本控制服务已从
CVS
迁移到
Subversion
。说得简单一点,
SVN
就是用于多个人共同开发同一个项目,共用资源的目的。
本文主要简单得介绍服务端的搭建和简单使用。
- 1
- 2
- 3
- 4
一、服务端应用程序的下载
1.SVN服务端可以安装在windows/linux/mac电脑上都可以.一般都是linux或windows上.我以windows上为例。
VisualSVN-Server-2.1.2.msi
可装在
XP
系统上,
VisualSVN-Server-2.7.7.msi,
以更高版本可以装到
win 7
及以上版本。
- 1
- 2
2.我下载的地址:http://download.csdn.net/download/wds1181977/7611803
安装SVN服务端
如图:
- 1
- 2
此处注意一定要把use secure connection(https://)的勾选框去掉
完成后选择运行可以看到SVN的操作程序
安装完成可以使用了。
SVN服务端的简单使用
1.页面的简单说明。
页面上有三个文件,一个是Repositories(仓库,用于存放项目和文档用),第二个是Users(用来新增用户,及单个用户的管理),第三个是Groups(开发组的管理),如图:
2.配置用户访问权限,选择Properties 进入用户权限配置,添加可以选择单个的用户,也是选择已经配置放的开放成员组。也可设置读写权限:
注意,这里不能有anyone Read/Write(此荐的意思是任何人都可以访问,有的话要删除)。无法删除的话,那应该是Respositories(父文件夹)就设置为所有人可以访问,将Respositories的权限也设置一下,移除anyone Read/Write项。
3.创建仓库及一般操作
1.
选中
Repositories
右击会出现操作列表:
- 1
- 2
2.
创建仓库点击后直接输入项目名字既可。此处我创建的是:
和
WeiXin
两个项目。
- 1
- 2
创建文档存放和代码存放的仓库:
1.
选择创建好的项目,右击弹出选择列表
-
选择
"
新建
"
:
- 1
- 2
- 3
2.选择”新建”后弹出选择框
3.输入名字完成,完成后会看到目录
4.有用户权限的情况下,可以选择Browse,浏览器会打开,提示输入账号和密码。
将浏览器上的网址:”http://rbiyqnf80znknmi/svn/weibo/“,修改为本地电脑的ip,”http://192.168.1.48/svn/weibo/“,就可以让外部电脑访问weibo项目了。其他开发成员就用这访问网址进行代码管理和资料下载。
5.用户的添加,也比较简单,右击选择新建用户。
6.开发组成员的添加,跟用户添加相似,右击选择新建组(有组,可以直接点击难看成员)
本文只是简单地搭建SVN服务端的搭建和简单使用说明。如有什么好的建议请给我指出,或者有什么疑问可直接联系我,QQ:342122780.
请大家顶个赞。谢谢。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mjx342112780/article/details/52063406
文章标签: SVN服务器的搭建svn服务端的简单使svn版本控制
个人分类: 代码管理
Centos6.X中搭建SVN服务器,支持http与https
如果你是一个新手,而且你已经被网上各种svn安装文档搞懵逼了,最好先看一下如下文章,也许会对你有所帮助。
如果你对上述知识已经了如指掌,只是想要参考一篇文章,在centos中编译安装svn服务器,那么这篇文章就是你需要的。
参考本文,可在CentOS6.X操作系统中搭建SVN服务器,并实现通过http或https访问svn服务。
环境大致如下
centos6.5 + svn1.9.5 + httpd2.4.25 + openssl-1.0.1u
为了保证安装过程与本文尽量一致,请下载与本文中相同版本的软件包
为了能够顺畅的进行编译安装,请先在服务器上安装开发环境
yum groupinstall "Development tools"
yum groupinstall "Server Platform Development"
安装apr和apr-util
httpd和svn都依赖apr与apr-util,所以先安装他们
登录apache官网,可以下载apr与apr-util,官网地址如下
http://apr.apache.org/download.cgi
此处apr下载1.5.2版本,apr-util下载1.5.4版本
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
编译安装apr
tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install
验证安装是否成功
编译安装apr-util
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make && make install
验证安装是否成功
apr与apr-util安装完毕。
安装zlib
svn依赖zlib,实现压缩功能,所以此处需要安装zlib
登录zlib官网即可下载zlib
此处zlib下载1.2.11版本
wget http://www.zlib.net/zlib-1.2.11.tar.gz
编译安装zlib
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
安装在默认路径即可,未指明路径的情况下对应的库路径默认为/usr/local/lib
./configure
make && make install
安装sqlite3
svn依赖sqlite,而且svn的版本与sqlite的版本有一定的对应关系,此处sqlite版本为3.17.0
登录sqlite官网即可下载最新的包
http://www.sqlite.org/download.html
此处下载3.17.0
wget http://www.sqlite.org/2017/sqlite-autoconf-3170000.tar.gz
编译安装sqlite3
tar -zxvf sqlite-autoconf-3170000.tar.gz
cd sqlite-autoconf-3170000
./configure
make && make install
安装openssl
httpd实现https,需要依赖openssl,此处使用的openssl版本为1.0.1u
注:选择openssl版本时不要选择带有"心脏滴血"等高危漏洞的版本
登录opensll官网即可下载对应版本
版本列表
https://www.openssl.org/source/old/
此处下载1.0.1u
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
编译安装openssl
tar -zxvf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
在执行config时需要加入-fPIC no-gost
./config --prefix=/usr/local/openssl -fPIC no-gost
如果未添加-fPIC选项,在编译安装httpd2.4.25时,有可能会出现类似如下的错误
/usr/bin/ld: /usr/local/openssl/lib/libcrypto.a(e_gost_err.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
/usr/local/openssl/lib/libcrypto.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[4]: *** [mod_ssl.la] Error 1
make[4]: Leaving directory `/usr/local/src/httpd-2.4.25/modules/ssl'
make[3]: *** [shared-build-recursive] Error 1
make[3]: Leaving directory `/usr/local/src/httpd-2.4.25/modules/ssl'
make[2]: *** [shared-build-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/httpd-2.4.25/modules'
make[1]: *** [shared-build-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/httpd-2.4.25'
make: *** [all-recursive] Error 1
完成config以后,根据提示执行如下命令
make depend
上述过程完成后,执行安装命令
make install
验证安装是否成功
为了方便使用,将openssl命令路径加入PATH环境变量。
vim /etc/profile.d/openssl.sh
加入如下内容
export OPENSSL_HOME=/usr/local/openssl
export PATH=$OPENSSL_HOME/bin:$PATH
使变量生效
source /etc/profile
直接在命令行中输入openssl version命令,验证环境变量是否生效。
返回的版本信息为1.0.1u则表示环境变量设置成功
安装serf
serf是1.8版本以后的svn客户端依赖的库,当svn命令需要通过http或https访问svn时,需要此库,也就是说,如果你只是通过浏览器或者TortoiseSVN(windows svn客户端)访问svn服务端的http和https地址,理论上来说是不需要安装serf的,但是在linux操作系统中,我们往往需要使用svn命令进行检出或检入,而svn命令也是一种svn客户端,当我们使用svn命令访问svn的http或者https地址时,如果没有安装客户端的依赖库,可能会出现如下错误。
svn: E170000: Unrecognized URL scheme for 'http://192.168.1.103/zsythink'
svn: E170000: Unrecognized URL scheme for 'https://192.168.1.103/zsythink'
svn1.8之前的版本,使用neon作为svn客户端命令的依赖库
svn1.8之后的版本,使用serf作为svn客户端命令的依赖库
由于我们选择的subversion服务端版本为1.9.5,所以svn命令对应的版本也是1.9.5,所以需要安装serf
当然,有一个投机取巧办法,可以让你不安装serf,由于我们使用的系统为centos6.X,而6.X版本的centos往往会默认安装subversion1.6,在这种默认安装了svn1.6的情况下,你也可以不安装serf,当你通过http或者https地址访问svn服务端时,使用默认安装的svn命令即可(依赖neon,但是默认安装已经不用你操心了),而不是使用编译安装的svn1.9.5对应bin目录下的svn命令,但是,如果没有默认安装的subversion1.6,还是别偷懒了,根据你的svn版本,安装neon或者serf吧,此处安装serf。
而安装serf需要用到scons,所以,从scons官网获得scons
此处安装2.5.1
wget https://nchc.dl.sourceforge.net/project/scons/scons/2.5.1/scons-2.5.1-1.noarch.rpm
安装scons
rpm -ivh scons-2.5.1-1.noarch.rpm
验证安装是否成功
登录serf官网,下载serf,还是apache的项目
此处下载serf1.3.9
wget https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2
安装serf
tar -xvf serf-1.3.9.tar.bz2
cd serf-1.3.9
scons PREFIX=/usr/local/serf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr-util/bin/apu-1-config OPENSSL=/usr/local/openssl/
scons install
安装完成后,将serf的lib库路径追加到动态库配置文件中
echo "/usr/local/serf/lib/" >> /etc/ld.so.conf
ldconfig -v
安装Httpd2.4
因为要实现通过http或者https地址访问svn,所以现在我们开始安装httpd2.4
登录官网下载对应版本
此处下载2.4.25
wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.25.tar.gz
httpd还依赖pcre(正则表达式),为了能够正常编译安装httpd,请确保已经安装了pcre,此处为了方便,使用yum进行安装,确保已经安装了pcre和pcre-devel。
如果没有安装pcre或者pcre-devel,在编译安装httpd过程中,可能会出现如下错误提示
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
编译安装httpd
tar -zxvf httpd-2.4.25.tar.gz
cd httpd-2.4.25
安装时开启ssl选项
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --enable-so --enable-dav --enable-maintainer-mode --enable-rewrite --enable-ssl --with-ssl=/usr/local/openssl
make && make install
本机并没有默认安装的httpd,此处我们将编译安装的httpd设置为开启自动启动,如下方法为centos6.X中的方法。
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd
在#!/bin/sh的下面加入如下行,保存退出
#chkconfig: 2345 85 35
设置httpd开机自动启动
chkconfig httpd on
检查确认,2345级别为on
chkconfig --list httpd
为了方便使用,将对应命令路径加入环境变量
添加环境变量文件
vim /etc/profile.d/httpd.sh
写入如下内容,保存退出
export HTTPD_HOME=/usr/local/apache2
export PATH=$HTTPD_HOME/bin:$PATH
使变量生效
source /etc/profile
验证
安装subversion1.9.5
从apache subversion官网获取源码包
此处下载1.9.5版本
wget http://mirror.bit.edu.cn/apache/subversion/subversion-1.9.5.tar.gz
编译安装svn
tar -zxvf subversion-1.9.5.tar.gz
cd subversion-1.9.5
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-zlib --enable-maintainer-mode --with-serf=/usr/local/serf
make && make install
由于本机是centos6.X,有可能默认安装了subversion1.6,所以,如果此时不使用绝对路径,直接在命令行中输入svnserve --version命令,看到的版本信息可能会是1.6
为了方便使用,此处将编译安装的命令路径加入环境变量
vim /etc/profile.d/svn.sh
加入如下内容
export SVN_HOME=/usr/local/svn
export PATH=$SVN_HOME/bin:$PATH
使环境变量生效
source /etc/profile
使用svnserve --version命令查看,得到的版本信息为1.9.5
指定svn仓库的根目录并启动
创建svn根目录
mkdir /data
启动svn
svnserve -d -r /data
整合svn与httpd
初步整合httpd与svn,以达到使用http地址访问svn的目的,这也是配置https的基础。
进行httpd相关设置
将httpd访问svn依赖的模块从svn目录拷贝到httpd的模块目录,以便httpd使用
cp /usr/local/svn/libexec/mod_authz_svn.so /usr/local/apache2/modules/
cp /usr/local/svn/libexec/mod_dav_svn.so /usr/local/apache2/modules/
编辑httpd的配置文件,加载对应的模块,并且设置对应location,以便客户端能够访问。
vim /usr/local/apache2/conf/httpd.conf
在httpd.conf配置文件中的最后加入如下内容(两个"#for svn"之间的内容都要加入httpd.conf,部分内容可根据你的实际情况进行修改)
#for svn
#加载整合svn所需的模块文件,刚才已经将这些动态库拷贝到了modules目录中
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#设置对应location,以便访问对应svn仓库
#此处将location路径设置为/,也就是说,通过浏览器访问svn时,IP地址后面的"/"就对应了svn的根仓库目录。
#SVNParentPath设置为svn仓库的总根目录,此处设置为/data,而Location设置为"/",所以,在IP地址中输入 http://IP/ 即表示访问的是文件系统中的/data目录中的svn仓库根目录。
#AuthzSVNAccessFile设置svn权限配置文件位置
#AuthUserFile 设置svn用户名密码配置文件位置
<Location />
DAV svn
SVNParentPath /data
SVNListParentPath On
SVNAutoversioning On
SVNReposName "svn"
AuthzSVNAccessFile /data/authz.conf
AuthType Basic
AuthName "svn repo auth"
AuthUserFile /data/passwd.conf
Require valid-user
</Location>
#for svn
进行svn相关设置
建立一个SVN版本库,首先创建仓库目录。
mkdir -p /data/zsythink
当然,我们可以在data仓库根目录下创建多个版本库,此处只创建一个。
在对应目录初始化svn版本库
svnadmin create --pre-1.6-compatible /data/zsythink/
注意:如果这里不写--pre-1.6-compatible,更新svn的时候会报如下错误,--pre-1.6-compatible表示使用与1.6版本的svn兼容的模式。
post commit FS processing had error:
Couldn't open rep-cache database
apache线程的用户为daemon用户,所以,为了httpd能够正常访问此仓库,将仓库目录为daemon用户授权
chown -R daemon /data
chmod -R 755 /data
配置认证需要的相关文件
使用htpasswd命令,生成用户名和密码,密码默认经过MD5加密,非明文密码
首先使用如下命令生成passwd.conf文件,并且创建第一个svn认证用户,第一次生成文件使用-c,以后再添加新的svn用户,不要使用-c选项,否则以前的用户信息将会被覆盖。
htpasswd -c /data/passwd.conf zhushuangyin
使用上述命令将会创建passwd.conf文件,并且添加一个用户名为zhushaungyin的用户,同时提示输入用户的密码。
以后再次添加新的svn用户时,不要使用-c选项,示例如下
htpasswd /data/passwd.conf zsy
查看/data/passwd.conf文件的内容,发现已经存在两个svn用户,对应密码已经经过加密。
passwd.conf文件已经配置完毕,现在开始配置权限控制文件,authz.conf
vim /data/authz.conf
根据实际情况,加入类似如下内容
##############################################
[groups]
#<groupname1>=<username1>,<username2>
admin=zhushuangyin
#[<versionLib>:projectName/directory]
#@<groupsname>=<authorities>
#<username>=<authorities>
[/]
@admin = rw
#管理员组中的成员对svn的根目录有读写权限
[zsythink:/test]
zsy = rw
#指定用户zsy可读写zsythink仓库中test目录下的文件
##############################################
初步测试
完成上述步骤后,可以进行初步的测试
但是为了保险起见,重启svn服务
killall svnserve
svnserve -d -r /data
然后启动httpd
service httpd start
确保防火墙与selinux的设置对httpd没有影响
访问对应仓库地址
提示输入用户名密码,输入对应的用户名密码后查看
配置Https
生成rsa证书私钥
openssl genrsa 2048 > /data/server.key
根据私钥生成证书请求文件,执行如下命令,根据提示填写证书申请信息
openssl req -new -key /data/server.key > /data/server.csr
执行上述命令后,要求输入Country Name时,填写CN
State or Province Name填写服务器所在地的省份名称
Locality Name填写服务器所在地的城市名称
Organization Name填写组织名称或者公司名称
Organizational Unit Name填写部门名称(可直接空格省略)
Common Name填写服务器主机名
Email Address填写管理员邮箱(可直接空格省略)
A challenge password不建议填写,填写后启动httpd服务时会提示输入密码,更加安全,但是比较麻烦,而且有可能忘记密码,直接回车表示不填写密码,此处直接回车
An optional company name可选公司名不填,直接回车
示例如下
根据私钥和证书请求文件生成自签证书。
openssl req -x509 -days 36500 -key /data/server.key -in /data/server.csr > /data/server.crt
将私钥与证书拷贝至httpd的配置文件目录。
cp /data/server.key /usr/local/apache2/conf/
cp /data/server.crt /usr/local/apache2/conf/
设置httpd支持ssl
编辑httpd配置文件,将Include conf/extra/httpd-ssl.conf前面的注释去掉
确定httpd-ssl.conf配置文件中的证书与私钥指定正确,如下
如果你的私钥文件与证书文件的名称或路径与上述示例中的不同,则根据实际情况进行修改。
完成上述步骤后,修改svn对应的location
vim /usr/local/apache2/conf/httpd.conf
在对应的location中加入如下配置
SSLRequireSSL
示例如下
完成上述配置后重启httpd
service httpd restart
使用https访问对应仓库地址即可
如果使用TortoiseSVN作为svn客户端,第一次使用https地址访问SVN服务器时,可能会出现如下提示,提示证书验证失败,是否信任此证书,这是正常现象,因为我们的证书是自建的,没有权威的CA认证,为了方便,选择永久接受证书即可。
推荐阅读
-
详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建
-
Centos8搭建本地Web服务器的实现步骤
-
centos7系统下搭建docker本地镜像仓库的方法
-
CentOS服务器环境下MySQL主从同步配置方法
-
详解在CentOS下搭建自己的Git服务器
-
Centos7服务器下启动jar包项目的最佳方法
-
阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法
-
CentOS(Linux)下的apache服务器配置与管理方法分享
-
CentOS下Lighttpd Web服务器安装与配置方法
-
centos下yum搭建安装linux+apache+mysql+php环境教程