内容简介:SVN服务器在商业生产中有非常大的作用,虽然目前代码类的项目的版本基本已经使用Git作为持续集成的平台,但是依然有很多商业项目内部的部分资源通过svn进行版本控制和管理,尤其是美术资源类的项目,svn由于相对简单使用收到了很多人的欢迎。因此本文将简单描述在一台Linux服务器中搭建一个svn环境的方法,目的是让对服务器系统不太熟悉的开发人员(例如美术、项目经理等)也可以快速搭建一台svn服务器。后续如果有时间会更新关于svn开启ldap登录的方法。考虑到本文阅读者可能有对服务器和linux软件部署不太熟悉的
SVN服务器在商业生产中有非常大的作用,虽然目前代码类的项目的版本基本已经使用Git作为持续集成的平台,但是依然有很多商业项目内部的部分资源通过svn进行版本控制和管理,尤其是美术资源类的项目,svn由于相对简单使用收到了很多人的欢迎。因此本文将简单描述在一台 Linux 服务器中搭建一个svn环境的方法,目的是让对服务器系统不太熟悉的开发人员(例如美术、项目经理等)也可以快速搭建一台svn服务器。后续如果有时间会更新关于svn开启ldap登录的方法。
二、准备工作
考虑到本文阅读者可能有对服务器和linux软件部署不太熟悉的人,因为还是大致介绍一下Linux系统和Linux软件的安装思路。 Linux系统是一个一切皆文件的系统,任何系统内的组成,包括软件和硬件还有一些微处理器,本质上在linux系统中都可以通过类似于文件的性质进行编辑和处理。因此当前主流的互联网、游戏、金融公司都采用了Linux系统作为后端的服务运行系统。因为在这样的系统下权限的控制、文件的管理、配置的更新、错误的排查都能做到百分百的权利握在开发者的手中,甚至对于高阶的开发公司,改写系统内核也是必要的操作。日常使用的话基本用命令行 工具 操作。
当然对于本文的svn服务器部署,事情不需要这么复杂。但是使用Linux系统前最好还是对其有个粗略的了解比较好。
1、系统环境更新
对于一个全新的CentOS系统我们最好对齐的系统组件进行一次更新和升级。在CentOS中作为软件安装和版本管理的工作叫做yum,类比来说就是App store一样的东西。我们先更新系统:
[root@fangwei-physics ~]# yum update [root@fangwei-physics ~]# yum upgrade 复制代码
我们可以搜一下yum仓库中有没有svn服务端:
[root@fangwei-physics ~]# yum search subversion 已加载插件:fastestmirror Loading mirror speeds from cached hostfile ================================================================================================================================= N/S matched: subversion ================================================================================================================================= hgsubversion.noarch : Mercurial extension for working with Subversion repositories subversion-devel.i686 : Development package for the Subversion libraries subversion-devel.x86_64 : Development package for the Subversion libraries subversion-gnome.i686 : GNOME Keyring support for Subversion subversion-gnome.x86_64 : GNOME Keyring support for Subversion subversion-javahl.i686 : JNI bindings to the Subversion libraries subversion-javahl.x86_64 : JNI bindings to the Subversion libraries subversion-kde.i686 : KDE Wallet support for Subversion subversion-kde.x86_64 : KDE Wallet support for Subversion subversion-libs.i686 : Libraries for Subversion Version Control system subversion-libs.x86_64 : Libraries for Subversion Version Control system subversion-perl.i686 : Perl bindings to the Subversion libraries subversion-perl.x86_64 : Perl bindings to the Subversion libraries subversion-python.x86_64 : Python bindings for Subversion Version Control system subversion-ruby.i686 : Ruby bindings to the Subversion libraries subversion-ruby.x86_64 : Ruby bindings to the Subversion libraries subversion-tools.x86_64 : Supplementary tools for Subversion git-svn.x86_64 : Git tools for importing Subversion repositories hgsvn.noarch : A set of scripts to work locally on subversion checkouts using mercurial mod_dav_svn.x86_64 : Apache httpd module for Subversion server pysvn.x86_64 : Pythonic style bindings for Subversion python-subvertpy.x86_64 : Python bindings for Subversion subversion.i686 : A Modern Concurrent Version Control System subversion.x86_64 : A Modern Concurrent Version Control System svn2cl.noarch : Create a ChangeLog from a Subversion log svnmailer.noarch : Tool to post subversion repository commit information texlive-svn-prov.noarch : Subversion variants of \Provides... macros websvn.noarch : Online subversion repository browser 名称和简介匹配 only,使用“search all”试试。 复制代码
2、软件安装
在上一节的内容中我们可以看到所有匹配的软件都在列表里面了,而我们需要安装的仅仅是subversion这个软件,而且yum的功能非常智能,在安装的过程中一般会自动安装一个软件需要的所有依赖包。所以我们直接安装subversion服务端:
[root@fangwei-physics ~]# yum install -y subversion 已加载插件:fastestmirror Loading mirror speeds from cached hostfile 软件包 subversion-1.7.14-14.el7.x86_64 已安装并且是最新版本 无须任何处理 复制代码
此处由于本台服务器已经完成了SVN服务端的安全,因此无需任何处理,如果没有安装过的服务器由于 -y
参数的存在会自动完成软件的安装。
三、配置设定
SVN服务软件目前已经装在本台服务器中了,我们下一步需要做的就是服务器配置的设定。
1、创建仓库文件夹
首先我们要在服务器里面创建一个文件夹,用来作为服务器的仓库所在地址。注意此处有服务运行位置和子仓库位置的概念。例如我们在 /svn
下启动了svn服务,则svn的各个仓库都应该以文件夹的形式放在这个目录中。
我们本次配置使用 /svn
作为主目录,使用mkdir指令新建文件夹:
[root@fangwei-physics ~]# mkdir /svn 复制代码
然后再这个主目录中新建仓库文件夹,本次以kivinsae为例:
[root@fangwei-physics ~]# mkdir /svn/kivinsae 复制代码
然后对这个仓库进行svn初始化操作,这个步骤如果对git有所了解的话其实和 git init
差不多:
[root@fangwei-physics ~]# svnadmin create /svn/kivinsae 复制代码
到此为止,一个仓库文件夹的创建以及配置初始化已经完成了,接下来我们会对权限等配置进行说明。
2、权限和用户设置
进入仓库文件夹,我们会发现有一个conf文件夹,每个项目的配置文件默认就存放在这个文件夹中:
[root@fangwei-physics ~]# ls -la /svn/kivinsae/ 总用量 8 drwxr-xr-x 6 root root 86 6月 25 10:58 . drwxr-xr-x 3 root root 21 6月 25 10:58 .. drwxr-xr-x 2 root root 54 6月 25 11:03 conf drwxr-sr-x 6 root root 233 6月 25 10:58 db -r--r--r-- 1 root root 2 6月 25 10:58 format drwxr-xr-x 2 root root 231 6月 25 10:58 hooks drwxr-xr-x 2 root root 41 6月 25 10:58 locks -rw-r--r-- 1 root root 229 6月 25 10:58 README.txt [root@fangwei-physics ~]# ls -la /svn/fangwei/conf/ 总用量 12 drwxr-xr-x 2 root root 54 6月 25 11:03 . drwxr-xr-x 6 root root 86 6月 25 10:58 .. -rw-r--r-- 1 root root 1008 6月 25 11:03 authz -rw-r--r-- 1 root root 328 6月 25 11:00 passwd -rw-r--r-- 1 root root 3077 6月 25 11:00 svnserve.conf 复制代码
我们分别介绍各个文件的作用, authz
文件夹用于设定各个用户的权限,主要是读写权限的设定, passed
文件用于设置仓库的用户信息,在连接仓库或者 checkout仓库
的时候用户信息是连接需要用到的凭证; svnserver.conf
文件作为整个仓库的主要配置文件,设定了用户验证以及模块调用等基本设定和参数的信息。
我们首先来看一下 passwd
文件;
[root@fangwei-physics ~]# cat /svn/kivinsae/conf/passwd [users] # harry = harryssecret # sally = sallyssecret fangwei = fangwei 复制代码
我们将本仓库所有用户的信息都写入user模块内,格式为 <username> = <password>
,每一位用户一条,依次设定即可
然后来看一下 authz
文件:
[root@fangwei-physics ~]# cat /svn/kivinsae/conf/authz [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] admin = fangwei [kivinsae:/] @admin = rw * = 复制代码
这里重点说一下文件夹权限设定和group分组设定。在商业应用环境中,一个项目仓库经常会有几十上百人参与开发与跟进,这个时候用户的数量可能会非常的多,此时逐个设定用户权限无疑是一件非常蛋疼的时候,这个时候我们可以通过对所有用户进行分组来配置权限,只要在group模块中按照 <groupname> = <username1>,<username2>,<username3>...
这样的格式逐个添加用户组即可。
而在下面的文件夹权限中,首先要对模块进行命名,例如对于kivinsae这个项目仓库,如果要对整个仓库的所有文件应用权限,则模块名为 [kivinsae:/]
,一般值得注意的是,这类模块设定权限的时候一般都要加上 * = r
或者 * =
,分别意为非设定的用户只有只读权和非设定用户无任何权利。在group中我们设定了fangwei为admin用户,则在文件夹权限设定中,则使用 @<groupname> = <权限>
的格式设定权限。权限部分的话 r
为只读, w
为只写, rw
为读写。
最后我们来聊一聊 svnserve.conf
文件。
[root@fangwei-physics ~]# cat /svn/fangwei/conf/svnserve.conf [general] anon-access = read auth-access = write password-db = passwd authz-db = authz realm = Fangwei-Test-Repo # force-username-case = none [sasl] # use-sasl = true 复制代码
一般默认如上开启即可,如果需要使用ldap登录验证,则需要讲use_sasl的注释去掉进行启用。
四、业务维护
在一切完成后,其实可以直接使用svnserve工具进行服务的启用,如下:
[root@fangwei-physics ~]# svnserve --daemon --root /svn 复制代码
--daemon
指通过守护模式运行, --root
则指向svn仓库主目录的位置。
但是直接通过进程进行运行存在其弊端,类似于不方便管理和开机启动设定比较麻烦等,所以一般来说我们推荐讲这类服务端应用写成systemd进程的形式:
[root@fangwei-physics ~]# vim /etc/systemd/system/svn.service 复制代码
记住此处systemd服务名不要用svnserve.service,会和原进程产生冲突。 svn.service
内容编辑如下:
[Unit] Description=Subversion Server [Service] Type=forking ExecStart=/usr/bin/svnserve -d -r /svn ExecStop=/usr/bin/kill -9 $(pidof svnserve) Restart=always [Install] WantedBy=default.target 复制代码
主要设定了ExecStart和ExecStop,确保每次都能正常启动服务。然后我们需要将这个service模块保存到systemd中:
[root@fangwei-physics ~]# systemd daemon-reload 复制代码
到这一步,我们基本就完成了svn服务软件的systemd化管理。之后我们只需要做两部工作:
1、把服务设置为开机启动
[root@fangwei-physics ~]# systemd enable svn.service 复制代码
2、启动服务
[root@fangwei-physics ~]# systemd start svn.service 复制代码
之后我们就能通过svn客户端来登录svn仓库,并和朋友或者同事一起进行项目的开发和持续集成了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- hexo建站搭建流程
- 新手搭建网站的主要流程
- Ubuntu 搭建 Elasticsearch 6 集群流程
- 创业公司,如何搭建项目管理流程
- 设计师个人官网搭建全流程
- Spark环境搭建及相关工作流程介绍
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Introduction to Algorithms, 3rd Edition
Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest、Clifford Stein / The MIT Press / 2009-7-31 / USD 94.00
Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad ......一起来看看 《Introduction to Algorithms, 3rd Edition》 这本书的介绍吧!