subversion的2种部署方式

一、简介

SVN全名Subversion,即版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个仓库(repository)中。这个仓库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。

二、方式1---独立服务器

主机介绍:

node1:192.168.0.166          #SVN的Server端

node2:192.168.0.156          #SVN的linux Client端

Windows:192.168.0.141        #SVN的Windows Client端

1. 安装SVN

[[email protected] ~]# yum install subversion mod_dav_svn -y

2. 制作仓库

[[email protected] ~]# mkdir /MySvn/
[[email protected] ~]# svnadmin create /MySvn/repos
[[email protected] ~]# cd /MySvn/repos
[[email protected] repos]# ls
conf  db  format  hooks  locks  README.txt
[[email protected] repos]# cd conf/
[[email protected] conf]# ls
authz  passwd  svnserve.conf

3. 配置SVN的配置文件

authz: SVN的权限文件

passwd: SVN的密码文件

svnserve.conf: SVN的配置文件

[[email protected] conf]# vim authz
[groups]
admin = admin,zhu       #admin组里有admin和zhu 2个成员
[repos:/]               #仓库名:/ 表示这个仓库的根目录
@admin = rw             #组名前面使用@,单个用户直接写用户名
xue = r
[[email protected] conf]# vim passwd
[users]
admin = admin           #用户名 = 密码
zhu = 12345
xue = qwer
[[email protected] conf]# vim svnserve.conf
[general]
anon-access = none          #匿名用户没有访问权限
auth-access = write
password-db = passwd
authz-db = authz

4. 启动SVN

[[email protected] ~]# svnserve -d -r /MySvn/             
[[email protected] ~]# netstat -tnlp | grep svn
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      2114/svnserve
[[email protected] ~]# iptables -I INPUT 1 -p tcp --dport 3690 -j ACCEPT    #放行端口

这里-r后面的参数,是用来指定SVN的根目录的,不要将仓库名写进去,即不要写成/MySvn/repos。

5. 测试

这里我先将/etc/目录下的文件导入到仓库中进行测试

[[email protected] ~]# svn import /etc/ file:///MySvn/repos/ -m "message"

-m后面的参数是备注信息,根据自己的需要写

linux(node2)上测试:

[[email protected] ~]# svn checkout svn://192.168.0.166/repos/ /mnt/           #IP后面直接跟仓库名,副本放到/mnt/目录下
Authentication realm: <svn://192.168.0.166:3690> 57532f62-ae95-428e-9a43-9a0a78173f2d
Password for ‘root‘:       #node2的root密码
Authentication realm: <svn://192.168.0.166:3690> 57532f62-ae95-428e-9a43-9a0a78173f2d
Username: admin
Password for ‘admin‘:      #上面配置的admin用户和密码

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.0.166:3690> 57532f62-ae95-428e-9a43-9a0a78173f2d

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the ‘store-plaintext-passwords‘ option to either ‘yes‘ or ‘no‘ in
‘/root/.subversion/servers‘.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes

密码文件的存放位置

[[email protected] ~]# tree .subversion/
.subversion/
├── auth
│   ├── svn.simple
│   │   └── 845e591d3dae91ace580695b8dc4a30d        #密码文件,可以将它删除,重新认证
│   ├── svn.ssl.client-passphrase
│   ├── svn.ssl.server
│   └── svn.username
├── config
├── README.txt
└── servers

这样在/mnt/目录下就有了SVN的一个副本。

[[email protected] mnt]# ls     #列出了部分文件
1.txt                  cron.deny                fstab             jvm            
abrt                   cron.hourly              gai.conf          jvm-commmon     
acpi                   cron.monthly             gconf             kde

Windows上测试:

提示输入用户名和密码,然后也会生成一个副本

三、方式2--apache+svn

主机列表:

Server:192.168.0.146         #SVN的Server端

node2:192.168.0.156          #SVN的linux Client端

Windows:192.168.0.124        #SVN的Windows Client端

1. 下载所需的源码包

[[email protected] ~]# wget -c t 0 www.sqlite.org/2014/sqlite-autoconf-3080701.tar.gz
[[email protected] ~]# wget -c -t 0 apache.cs.utah.edu/subversion/subversion-1.8.10.tar.bz2
[[email protected] ~]# wget -c -t 0 http://apache.fayea.com/apache-mirror/apr/apr-1.5.1.tar.bz2
[[email protected] ~]# wget -c -t 0 http://apache.fayea.com/apache-mirror/apr/apr-util-1.5.4.tar.bz2
[[email protected] ~]# wget -c -t 0 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2
[[email protected] ~]# wget -c -t 0 mirror.bit.edu.cn/apache//httpd/httpd-2.4.10.tar.bz2

2.安装apache

[[email protected] ~]# tar xf apr-1.5.1.tar.bz2
[[email protected] ~]# tar xf apr-util-1.5.4.tar.bz2
[[email protected] ~]# tar xf pcre-8.36.tar.bz2
[[email protected] ~]# tar xf httpd-2.4.10.tar.bz2

[[email protected] apr]# ./configure --prefix=/usr/local/apr           #安装apr
[[email protected] apr]# make && make install

[[email protected] apr-util]# ./configure --prefix=/usr/local/apr-util \      #安装apr-util
--with-apr=/usr/local/apr/
[[email protected] apr-util]# make && make install

[[email protected] pcre-8.36]# ./configure --prefix=/usr/local/pcre            #安装pcre
[[email protected] pcre-8.36]# make && make install

[[email protected] httpd-2.4.10]# ./configure  --prefix=/usr/local/apache \    #安装apache
--enable-dav --sysconfdir=/etc/httpd   --enable-so  --enable-ssl  --enable-track-vars  --enable-rewrite  --with-zlib  --enable-mods=most  --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
[[email protected] httpd-2.4.10]# make
[[email protected] httpd-2.4.10]# make install

3. 安装subversion

[[email protected] ~]# tar xf sqlite-autoconf-3080701.tar.gz

[[email protected] sqlite-autoconf-3080701]# ./configure --prefix=/usr/local/sqlite    #安装sqlite
[[email protected] sqlite-autoconf-3080701]# make && make install

[[email protected] subversion-1.8.10]# ./configure --prefix=/usr/local/subversion \   #安装SVN
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite --with-apxs=/usr/local/apache/bin/apxs  --with-zlib --enable-mod-activation
[[email protected] subversion-1.8.10]# make && make install

--enable-mod-activation选项一定要加,不然apache会找不到mod_dav_svn.so和mod_authz_svn.so这2个模块的。

4. 完善安装(一个良好的习惯)

[[email protected] ~]# vim /etc/profile
export PATH=$PATH:/usr/local/apache/bin/:/usr/local/subversion/bin/
[[email protected] ~]# . !$
#在PATH变量中添加apache和subversion的可执行文件

[[email protected] ~]# vim /etc/man.config
MANPATH /usr/local/apache/man
MANPATH /usr/local/subversion/share/man/
#让系统可以找到apache的帮助文档

[[email protected] ~]# vim /etc/ld.so.conf.d/apache-x86_64.conf
/usr/local/apache/lib
[[email protected] ~]# vim /etc/ld.so.conf.d/subverion-x86_64.conf
/usr/local/subversion/lib
[[email protected] ~]# ldconfig -v
#让系统可以找到apache和subversion的库文件

[[email protected] ~]# ln -sv /usr/local/apache/include /usr/include/apache
`/usr/include/apache/include‘ -> `/usr/local/apache/include‘
[[email protected] ~]# ln -sv /usr/local/subversion/include /usr/include/subverion
`/usr/include/subverion‘ -> `/usr/local/subversion/include‘
#让系统可以找到apache和subverion的头文件

5. 配置apache,让apache管理SVN

[[email protected] ~]# vim /etc/httpd/httpd.conf
LoadModule dav_svn_module     /usr/local/subversion/libexec/mod_dav_svn.so    #确保有这2行
LoadModule authz_svn_module   /usr/local/subversion/libexec/mod_authz_svn.so

User apache                   #修改这4行
Group apache
DocumentRoot "/OtherSvn"
<Directory "/OtherSvn">

pidFile "/var/run/httpd.pid"             #增加下面的配置
<Location /svn>          #这个路径可以随便写,到时URL后面加上这个路径就可以了
DAV svn
SVNParentPath /OtherSvn                  #版本库根目录(不要加上仓库名)
AuthType Basic                           #基本认证类型
AuthName "welcome you"                   #提示对话框的标题
AuthUserFile /OtherSvn/passwd            #登录的密码文件
AuthzSVNAccessFile /OtherSvn/auth.conf   #SVN的授权文件
Require valid-user                       #认证用户可以访问
</Location>

6.制作仓库并添加配置文件

[[email protected] ~]# mkdir /OtherSvn
[[email protected] ~]# svnadmin create /OtherSvn/OtherRepos         #制作仓库
[[email protected] ~]# cd /OtherSvn/
[[email protected] OtherSvn]# cp OtherRepos/conf/authz auth.conf
[[email protected] OtherSvn]# vim auth.conf                         #授权文件
[groups]
admin = admin,zhu
[OtherRepos:/]
@admin = rw
[[email protected] ~]# htpasswd -c -m -b /OtherSvn/passwd admin admin     #密码文件
Adding password for user admin

-c的意思是创建passwd文件,只有在第一次的时候才会使用。

7.修改文件权限并启动

[[email protected] ~]# useradd -r -s /sbin/nologin apache
[[email protected] ~]# chown -R apache:apache /OtherSvn/
[[email protected] ~]# chmod -R 755 /OtherSvn/
[[email protected] ~]# service httpd start
[[email protected] ~]# iptables -I INPUT 1 -m state --state NEW -p tcp --dport 80 -j ACCEPT

httpd的启动脚本放在附件里

8. 测试

还是将/etc/导入仓库中进行测试

[[email protected] ~]# svn import /etc/ file:///OtherSvn/OtherRepos/ -m "message"

Windows测试:

URL:SVN服务器IP地址 + Location后面指定的路径 + 仓库名

一定要加仓库名,不然会出现下面的报错

[Fri Nov 14 13:43:25.789643 2014] [:error] [pid 2048:tid 140506000836352] [client 192.168.0.124:52380] The URI does not contain the name of a repository.  [403, #190001]

意思就是URL里面没有包括仓库名

linux测试:

[[email protected] ~]# mkdir /SVN_Client
[[email protected] ~]# svn checkout http://192.168.0.146/svn/OtherRepos/ /SVN_Client
Authentication realm: <http://192.168.0.146:80> welcome you
Password for ‘root‘: 
Authentication realm: <http://192.168.0.146:80> welcome you
Username: admin
Password for ‘admin‘:
#只是路径不同了而已

四、备份和恢复

  1. svnadmin dump

参数介绍:

-r [--revision] :指定版本ARG(或X:Y范围)
--incremental   :以增量方式进行转存

用法:

svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]

全量备份:

[[email protected] ~]# svnadmin dump /OtherSvn/OtherRepos/ > OtherRepos.bak

增量备份:

[[email protected] ~]# svnadmin dump /OtherSvn/OtherRepos/ -r 2 --incremental > OtherRepos2.bak

将版本1中的文件转存出来

恢复:

[[email protected] ~]# svnadmin create /OtherSvn/test
[[email protected] ~]# svnadmin load /OtherSvn/test/ < OtherRepos.bak
[[email protected] ~]# svnadmin load /OtherSvn/test/ < OtherRepos2.bak    #先还原全量再还原增量

2. svnadmin hotcopy

用法:

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

[[email protected] ~]# svnadmin hotcopy /OtherSvn/OtherRepos/ /media/
[[email protected] ~]# cd /media/
[[email protected] media]# ls
conf  db  format  hooks  locks  README.txt
#恢复的时候,直接把文件移动过去就好了
时间: 2024-10-17 08:55:25

subversion的2种部署方式的相关文章

全面解读python web 程序的9种部署方式

python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web server ---->application -----> DB server 主流的web server 一个巴掌就能数出来,apache,lighttpd,nginx,iis application,中文名叫做应用服务,就是你基于某个web framework写的应用代码 DB server 泛指存储服务,web开发中用mysql比较多,最近几年因为网站规模扩大,memcache

Tokyo Tyrant(TTServer)系列(五)-ttserver的几种部署方式

ttserver的几种部署方式 ttserver可以理解成一种key-value形式的数据库,部署ttserver的方式,可以根据访问量和数据规模循选择不同的部署策略. 详细启动参数请参考:http://blog.csdn.net/xifeijian/article/details/37744131 1.单机:数据量不大,访问量不大ttserver -host 192.168.1.110 -port 1978 -thnum 128 -dmn -ulim 1024m -ulog /home/ope

NBIoT三种部署方式【转】

转自:https://472880.kuaizhan.com/89/34/p441944286fccf2 本文作者:吴老司撩通信 本文来源:EETOP NB-IoT支持在频段内(In-Band).保护频段(Guard Band)以及独立(Stand-alone)共三种部署方式. 本篇介绍NB的三种部署方式(Operation Modes). 那个谁,你到底叫啥名 关于Operation Modes的翻译问题,列举下:工作模式.工作方式.操作模式.部署方式.部署场景.运行模式……这是非要凑成七个葫

Weblogic的三种部署方式

Weblogic的三种部署方式 在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件config.xml 进行项目的部署. 控制台部署 1  启动weblogic服务,登录到weblogic控制台页面,输入用户名和密码,登录到控制台里面 2  点击左侧的部署 3  在右侧点击安装按钮,准备进行项目安装 4  看到路径输入框,可以在下面选择要部署的项目的位置 5  也可以直接输入要部署的包的位

Tomcat的几种部署方式

在Tomcat中部署Web应用的方式主要有如下几种: 利用Tomcat的自动部署. 把web应用拷贝到webapps目录.Tomcat在启动时会加载目录下的应用,并将编译后的结果放入work目录下. 使用Manager App控制台部署. 在tomcat主页点击"Manager App" 进入应用管理控制台,可以指定一个web应用的路径或war文件. 修改conf/server.xml文件部署. 修改conf/server.xml文件,增加Context节点可以部署应用. 增加自定义的

【原创】大叔经验分享(23)hive metastore的几种部署方式

hive及其他组件(比如spark.impala等)都会依赖hive metastore,依赖的配置文件位于hive-site.xml hive metastore重要配置 hive.metastore.warehouse.dirhive2及之前版本默认为/user/hive/warehouse/,创建数据库或表时会在该目录下创建对应的目录 javax.jdo.option.ConnectionURLjavax.jdo.option.ConnectionDriverNamejavax.jdo.o

SAP Fiori应用的三种部署方式

封面图片来自Google搜索,关键字: Fiori Deployment 方式1 On premise环境下以BSP应用作为Fiori应用部署和运行的载体 典型的例子是SAP CRM这几个Fiori应用: 在Google上搜索关键字Fiori Architecture, 能找到这样一张图片,其中CRM和S/4 HANA的Fiori应用都以BSP应用的方式运行在下图我标注了红色方框的ABAP前台服务器上. 以CRM的My lead应用为例,在Chrome的development tool里能找到其

Web应用三种部署方式的优缺点

方式一:修改server.xml文件 优点: 配置速度快,只需要在server.xml文件中添加<Context>标签,在其中分别配置path虚拟路径和docBase真实路径然后启动Tomcat服务器即可 缺点: 需要配置两个路径,如果path为空字符串,则为缺省配置 每次修改server.xml文件后都要重新启动Tomcat服务器,重新部署 方式二:在Catalina文件夹下创建虚拟主机,并进行虚拟主机配置 优点: 在虚拟主机下配置.xml的文件,<Context>标签中的doc

tomcat 三种部署方式以及server.xml文件的几个属性详解

一.直接将web项目文件件拷贝到webapps目录中 这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.如果你想要修改这个默认目录,可以在conf下的server.xml文件里修改Host标签里的appBase值. 这个方法实际上和在IDE开发环境里部署项目是一样的. 用此方法的访问路径为http://localhost:8080/webname 二.修改Server.xml文件 在conf下的server.xml文件里找