问题1:

Could not reliably determine the server's fully qualified domain name, using 内网IP for ServerName

云服务器:

内网IP 非127.0.0.1

sudo vim /etc/apache2/sites-available/default

打开default文件后,在default文件顶端加入:

ServerName 内网IP

端口号:80 --》8080

解决方法就是将apache的监听端口从80修改到8080即可。网络上的一些资料是基于旧的apache进行配置或者是windows环境下的apache,与ubuntu环境下的apache2的配置有些不同。下面的配置基于Ubuntu10.10以及apache2:

step1:修改监听端口以及主机端口为8080

Java代码  
  1. sudo vi /etc/apache2/ports.conf
Java代码  
  1. NameVirtualHost *:8080
  2. Listen 8080

step2: 只要修改virtualHost的端口即可

Java代码  
  1. sudo vi /etc/apache2/sites-available/default
Java代码  
  1. <VirtualHost *:8080>

step3:重启apache2

Java代码  
  1. sudo service apache2 stop
  2. sudo service apache2 start

SubVersion

出自Ubuntu中文

目录

[隐藏 ]

  • 1 SubVersion服务安装设置

    • 1.1 简介
    • 1.2 假设
    • 1.3 本文涉及的范围
    • 1.4 安装
    • 1.5 服务器配置
      • 1.5.1 创建 SVN 仓库
    • 1.6 访问方式
      • 1.6.1 直接访问文件仓库(file://)
      • 1.6.2 通过 WebDAV 协议访问(http://)
      • 1.6.3 通过具有安全套接字(SSL)的 WebDAV 协议访问(https://)
      • 1.6.4 通过自带协议访问(svn://)
      • 1.6.5 通过具被SSH隧道保护的自带协议访问(svn+ssh://)
    • 1.7 参考资料

[编辑 ] SubVersion服务安装设置

原文出处:https://wiki.ubuntu.org.cn/SubVersion

原文作者:ubuntu.com

授权许可:创作共用协议

翻译人员:XueCan

校对人员:无

适用版本:所有版本

文章状态:翻译中


本文档阐述了如何在 Ubuntu 上设置 Subversion(通常也被称为 svn)。我们假设本文的读者是具有一定经验的 Linux 用户和系统管理员。

[编辑 ] 简介

如果您对 Subversion 还比较陌生,本节将给您一个关于 Subversion 的简要介绍。

Subversion 是一款开放源代码的版本控制系统。使用 Subversion,您可以重新加载源代码和文档的历史版本。Subversion 管理了源代码在各个时期的版本。一个文件树被集中放置在文件仓库中。这个文件仓库很像是一个传统的文件服务器,只不过它能够记住文件和目录的每一次变化。

[编辑 ] 假设

首先我们假设您能够在 Ubuntu 中操作 Linux 的命令、编辑文件、启动和停止服务。当然,我们还认为您的 Ubuntu 正在运行中,您可以使用

[编辑 ] 本文涉及的范围

要通过 HTTP 协议访问 SVN 文件仓库,您需要安装并配置好 Web 服务器。Apache 2 被证实可以很好的与 SVN 一起工作。关于 Apache 2 的安装超出了本文的范围,尽管如此,本文还是会涉及如何配置 Apache 2 使用 SVN。

类似的,要通过 HTTPS 协议访问 SVN 文件仓库,您需要在您的 Apache 2 中安装并配置好数字证书,这也不在本文的讨论范围之中。

[编辑 ] 安装

幸运的,Subversion 已经包含在 main 仓库中。所以,要安装 Subversion,您只需要简单的运行:

$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn

如果系统报告了依赖关系的错误,请找出相应的软件包并安装它们。如果存在其它问题,也请自行解决。如果您是再不能解决这些问题,可以考虑通过 Ubuntu 的网站、Wiki、论坛或邮件列表寻求支持。

[编辑 ] 服务器配置

您应该已经安装了上述的软件包。本节将阐述如何创建 SVN 文件仓库以及如何设置项目的访问权限。

[编辑 ] 创建 SVN 仓库

许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。为了在下面的描述中简单明了,我们假设您的 Subversion 文件仓库放在 /home/svn,并且你的项目名称是简单的“myproject”。

同样的,也有许多常用的方式设置文件仓库的访问权限。然而,这也是安装过程中最经常出现错误的地方,因此我们会对此进行一个详细说明。典型 的情况下,您应该创建一个名为“Subversion”的组来拥有文件仓库所在的目录。下面是一个快速的操作说明,有关内容请参考相关文档的详细说明:

或者使用命令完成上述功能(增加组,并且把用户加到组里):

sudo addgroup subversion
sudo usermod -G subversion -a www-data

再或者直接使用命令编辑组文件"sudo vi /etc/group",增加组和成员(不推荐):

$ sudo vi /etc/group

结果看上去,像这样。

$ cat /etc/group|grep subversion
subversion:x:1001:www-data,exp

您需要注销然后再登录以便您能够成为 subversion 组的一员,然后就可以执行签入文件(Check in,也称提交文件)的操作了。

现在执行下面的命令

$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject

下面的命令用于创建 SVN 文件仓库:

$ sudo svnadmin create /home/svn/myproject

赋予组成员对所有新加入文件仓库的文件拥有相应的权限:

$ sudo chmod -R g+rws myproject

如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:

Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied

查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

$ ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:

$ sudo chown -R root:subversion myproject

[编辑 ] 访问方式

Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:

模式 访问方法
file:/// 直接访问本地硬盘上文件仓库
http:// 通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器
https:// 类似 http://,支持 SSL 加密
svn:// 通过自带协议访问 svnserve 服务器
svn+ssh:// 类似 svn://,支持通过 SSH 通道

本节中,我们将看到如何配置 SVN 以使之能够通过所有的方法得以访问。当然这里我们之讨论基本的方法。要了解更高级的用途,我们推荐您阅读《使用 Subversion 进行版本控制》在线电子书 。

[编辑 ] 直接访问文件仓库(file://)

这是所有访问方式中最简单的。它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。语法是:

$ svn co file:///home/svn/myproject
或者
$ svn co file://localhost/home/svn/myproject

注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).

对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。

[编辑 ] 通过 WebDAV 协议访问(http:// )

要通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的 /etc/apache2/mods-available/dav_svn.conf中:

<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName "myproject subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。

当您添加了上面的内容,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:

sudo /etc/init.d/apache2 restart

接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:

sudo htpasswd -c /etc/subversion/passwd user_name

它会提示您输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:

sudo htpasswd /etc/subversion/passwd other_user_name

您可以通过下面的命令来访问文件仓库:

$ svn co http://hostname/svn/myproject myproject --username user_name

它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。

警告:密码是通过纯文本传输的。如果您担心密码泄漏的问题,我们建议您使用 SSL 加密,有关详情请看下一节。

[编辑 ] 通过具有安全套接字(SSL)的 WebDAV 协议访问(https:// )

通过具有 SSL 加密的 WebDAV 协议访问 SVN 文件仓库(https://)非常类似上节所述的内容,除了您必须为您的Apache 2 Web 服务器设置数字证书之外。

您可以安装由诸如 Verisign 发放的数字签名,或者您可以安装您自己的数字签名。

我们假设您已经为 Apache 2 Web 服务器安装和配置好了相应的数字证书。现在按照上一节所描述的方法访问 SVN 文件仓库,别忘了把 http:// 换成 https:// 。如何,几乎是一模一样的!

[编辑 ] 通过自带协议访问(svn://)

当您创建了 SVN 文件仓库,您可以修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制。

例如,您可以取消下面的注释符号来设置授权机制:

# [general]
# password-db = passwd

现在,您可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:

username = password
#(注意行开始不要有多余空格)

要了解详情,请参考该文件。

现在,您可以在本地或者远程通过 svn://访问 SVN 了,您可以使用“svnserve”来运行 svnserver,语法如下:

$ svnserve -d --foreground -r /home/svn
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
要了解更多信息,请输入:
$ svnserve --help

当您执行了该命令,SVN 就开始监听默认的端口(3690)。您可以通过下面的命令来访问文件仓库:

$ svn co svn://hostname/myproject myproject --username user_name

基于服务器的配置,它会要求输入密码。一旦通过验证,就会签出文件仓库中的代码。

要同步文件仓库和本地的副本,您可以执行 update 子命令,语法如下:

$ cd project_dir
$ svn update

要了解更多的 SVN 子命令,您可以参考手册。例如要了解 co (checkout) 命令,请执行:

$ svn co --help
或者这样
$ svn --help commit
或者直接
☎ svn help co
checkout (co): 从版本库签出工作副本。
使用: checkout URL[@REV]... [PATH]
。。。。。

一个实例:

☎ killall svnserve; svnserve -d -r /home/svn/
/home/svn/lj12-source/conf ☎ dog *
authz:[groups]
authz:lj12 = veexp
authz:[lj12-source:/] <-注意写法。
authz:veexp = rw
authz:@lj12 = rw
authz:* = passwd:[users] <-2个用户和密码。
passwd:veexp = icep
passwd:test = test
svnserve.conf:[general]
svnserve.conf:anon-access = none
svnserve.conf:auth-access = write
svnserve.conf:password-db = passwd
svnserve.conf:authz-db = authz <-如果不启用authz,则test也可以取出。
☎ svn co svn://localhost/lj12-source --username veexp
认证领域: <svn://localhost:3690> a712643f-661e-0410-8ad4-f0554cd88977
用户名: veexp “veexp”的密码:
A lj12-source/tim.h A lj12-source/en.c
......

认证失败的密码缓冲记录位置,明文密码。到1.6版本,可能使用keyring管理。如果调试密码,直接删除如下文件就可。

~/.subversion/auth/svn.simple/:

eea34a6f7baa67a3639cacd6a428dba4

[编辑 ] 通过具被SSH隧道保护的自带协议访问(svn+ssh://)

配置和服务器进程于上节所述相同。我们假设您已经运行了“svnserve”命令。

我们还假设您运行了 ssh 服务并允许接入。要验证这一点,请尝试使用 ssh 登录计算机。如果您可以登录,那么大功告成,如果不能,请在执行下面的步骤前解决它。

svn+ssh:// 协议使用 SSH 加密来访问 SVN 文件仓库。如您所知,数据传输是加密的。要访问这样的文件仓库,请输入:

$ svn co svn+ssh://hostname/home/svn/myproject myproject --username user_name

注意:在这种方式下,您必须使用完整的路径(/home/svn/myproject)来访问 SVN 文件仓库

基于服务器的配置,它会要求输入密码。您必须输入您用于登录 ssh 的密码,一旦通过验证,就会签出文件仓库中的代码。

您还应该参考 SVN book 以了解关于 svn+ssh:// 协议的详细信息。

[编辑 ] 参考资料


环境

Ubuntu 10.04
Subversion 1.6.6

1、SVN安装
$ sudo apt-get install subversion
2、添加SVN管理用户及subversion组
# adduser svnuser
# addgroup subversion
# addgroup svnuser subversion
3、创建项目目录
# mkdir /home/svn
# cd /home/svn
# mkdir myProject
# chown -R root:subversion myProject
# chmod -R g+rws myProject
4、创建SVN文件仓库
# svnadmin create /home/svn/myProject
myProject文件夹必须为空
5、修改文件仓库访问权限
# chmod 700 /home/svn/myProject
6、设置访问权限
位于/home/svn/myProject/conf/文件夹下的authz、passwd、svnserve.conf文件
svnserve.conf:svn服务配置文件,该文件版本库目录的conf目录下。 
passwd:用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的。 
authz:权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的。
(1)设置svnserve.conf
# vim svnserve.conf
取消一下四行的注释
anon-access = read
auth-access = write
password-db = password
authz-db = authz
并将anon-access = read的read改为none,禁止匿名用户访问。
(2)设置passwd
# vim passwd
[users]
admin = admin
user = user
设置两个用户admin和user
(3)设置authz
# vim authz
[groups]
admin = admin
user = user
[/]
@admin=rw
*=r
admin属于admin组,具有读写权限;
user用户属于user组,具有读权限。
7、启动SVN服务
# svnserve -d -r /home/svn
-d 表示以守护进程模式运行

-r 指定SVN根目录

8、设置SVN开机启动

(1).创建执行脚本svn.sh(/root路径下)

#!/bin/bash
svnserve -d -r /home/svn
(2).添加可执行权限
#chmod ug+x /root/svn.sh
(3).添加自动运行

#vim /etc/init.d/rc.local

在最后添加一行内容如下:

/root/svn.sh

(4).检查
重启服务器,使用ps -aux |grep svn看看svn进程是否启动了。

后记:

1.

版本库的初次导入可以采用多种方式:

1

)直接构建好版本库目录,并将源码拷贝的对应的位置,然后

svn import

即可;

2

先用

svn checkout

取出版本,

然后构建目录和源码,

执行

svn add

svn commit

即可。

2.

导入或者提交文件类型的控制

svn

客户端是可以配置忽略哪些些文件,比如说我们不想提交

*.o

之类的文件。那么可

以通过设置

svn:ignore

或者

global-

ignore

来进

行过滤相关的文件。通常默认的情况就会过

滤掉

*.o,

*.so,*.a

等被

svn

认为是中间生成的文件。我本人使用的客服端不管是

WIN

的还是

Linux

的都是这种默认情况。

但是,如果有时基于某种需要,或者是导入一个别人之前维护的工程,里面有些

*.so

*.a

文件必须保留,那么如果在第一次

import

的时候全部

导入

呢?曾经问过有些朋友说,

svn

add

或者

svn

import

是可以直接把这种文件导入到版本库的。但是我个人进行测试的时

候,确实导入不进去,除非你直接

svn add

这个文件,然后提交应该就可以了。

如果这样的文件比较多,

而且比较分散,

那么如何解决呢?看一下

svn import

svn add

这两个命令的帮助,都有

--no-ignore

选项。这个选项的功能就是执行相应动作的时候,不忽

略任何文件。那么执行以下两条命令:

svn import [source] [repository] --no-ignore

svn add [source] --no-ignore

会自动将

source

目录下所有的内容全部

import

或者

add

因此,通过

--no-ignore

选项,可以满足提交一些特殊文件的需求。

3.

用一个旧版本的

svnadmin

创建的版本库,直接拷贝到另外一台

svn

版本比较高的

PC

使用时,发现提示数据库版本不匹配。

解决的方法:

1

)导出旧的版本库内容,包含版本信息

具体使用的命令为

svnadmin dump,

详细使用方法参考手册。该命令的格式为:

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

如果我将版本库完整的信息都倒出来的话,执行如下命令:

# svnadmin dump old_repos > repos.dump

默认版本库

dump

的时候是输出在终端的,通过重定下输出到

repos.dump

文件里面。该文

件实际是文本文件。

2

)导入旧版本库的内容

在需要导入的位置,新建一个版本库

# svnadmin create new_repos

然后将

repos.dump

文件导入到新的版本库:

# svnadmin load new_repos < repos.dump

该命令成功执行完毕之后,新的版本库中已经包含了

old_repos

版本库中的所有版本内容。

svnadmin dump

svnadmin load

命令都支持导入

/

导出某个指定

revsion

或者某个指定范围的

所有

revision

后记:

1.

版本库的初次导入可以采用多种方式:

1

)直接构建好版本库目录,并将源码拷贝的对应的位置,然后

svn import

即可;

2

先用

svn checkout

取出版本,

然后构建目录和源码,

执行

svn add

svn commit

即可。

2.

导入或者提交文件类型的控制

svn

客户端是可以配置忽略哪些些文件,比如说我们不想提交

*.o

之类的文件。那么可

以通过设置

svn:ignore

或者

global-

ignore

来进

行过滤相关的文件。通常默认的情况就会过

滤掉

*.o,

*.so,*.a

等被

svn

认为是中间生成的文件。我本人使用的客服端不管是

WIN

的还是

Linux

的都是这种默认情况。

但是,如果有时基于某种需要,或者是导入一个别人之前维护的工程,里面有些

*.so

*.a

文件必须保留,那么如果在第一次

import

的时候全部

导入

呢?曾经问过有些朋友说,

svn

add

或者

svn

import

是可以直接把这种文件导入到版本库的。但是我个人进行测试的时

候,确实导入不进去,除非你直接

svn add

这个文件,然后提交应该就可以了。

如果这样的文件比较多,

而且比较分散,

那么如何解决呢?看一下

svn import

svn add

这两个命令的帮助,都有

--no-ignore

选项。这个选项的功能就是执行相应动作的时候,不忽

略任何文件。那么执行以下两条命令:

svn import [source] [repository] --no-ignore

svn add [source] --no-ignore

会自动将

source

目录下所有的内容全部

import

或者

add

因此,通过

--no-ignore

选项,可以满足提交一些特殊文件的需求。

3.

用一个旧版本的

svnadmin

创建的版本库,直接拷贝到另外一台

svn

版本比较高的

PC

使用时,发现提示数据库版本不匹配。

解决的方法:

1

)导出旧的版本库内容,包含版本信息

具体使用的命令为

svnadmin dump,

详细使用方法参考手册。该命令的格式为:

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

如果我将版本库完整的信息都倒出来的话,执行如下命令:

# svnadmin dump old_repos > repos.dump

默认版本库

dump

的时候是输出在终端的,通过重定下输出到

repos.dump

文件里面。该文

件实际是文本文件。

2

)导入旧版本库的内容

在需要导入的位置,新建一个版本库

# svnadmin create new_repos

然后将

repos.dump

文件导入到新的版本库:

# svnadmin load new_repos < repos.dump

该命令成功执行完毕之后,新的版本库中已经包含了

old_repos

版本库中的所有版本内容。

svnadmin dump

svnadmin load

命令都支持导入

/

导出某个指定

revsion

或者某个指定范围的

所有

revision

后记:

1.

版本库的初次导入可以采用多种方式:

1

)直接构建好版本库目录,并将源码拷贝的对应的位置,然后

svn import

即可;

2

先用

svn checkout

取出版本,

然后构建目录和源码,

执行

svn add

svn commit

即可。

2.

导入或者提交文件类型的控制

svn

客户端是可以配置忽略哪些些文件,比如说我们不想提交

*.o

之类的文件。那么可

以通过设置

svn:ignore

或者

global-

ignore

来进

行过滤相关的文件。通常默认的情况就会过

滤掉

*.o,

*.so,*.a

等被

svn

认为是中间生成的文件。我本人使用的客服端不管是

WIN

的还是

Linux

的都是这种默认情况。

但是,如果有时基于某种需要,或者是导入一个别人之前维护的工程,里面有些

*.so

*.a

文件必须保留,那么如果在第一次

import

的时候全部

导入

呢?曾经问过有些朋友说,

svn

add

或者

svn

import

是可以直接把这种文件导入到版本库的。但是我个人进行测试的时

候,确实导入不进去,除非你直接

svn add

这个文件,然后提交应该就可以了。

如果这样的文件比较多,

而且比较分散,

那么如何解决呢?看一下

svn import

svn add

这两个命令的帮助,都有

--no-ignore

选项。这个选项的功能就是执行相应动作的时候,不忽

略任何文件。那么执行以下两条命令:

svn import [source] [repository] --no-ignore

svn add [source] --no-ignore

会自动将

source

目录下所有的内容全部

import

或者

add

因此,通过

--no-ignore

选项,可以满足提交一些特殊文件的需求。

3.

用一个旧版本的

svnadmin

创建的版本库,直接拷贝到另外一台

svn

版本比较高的

PC

使用时,发现提示数据库版本不匹配。

解决的方法:

1

)导出旧的版本库内容,包含版本信息

具体使用的命令为

svnadmin dump,

详细使用方法参考手册。该命令的格式为:

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

如果我将版本库完整的信息都倒出来的话,执行如下命令:

# svnadmin dump old_repos > repos.dump

默认版本库

dump

的时候是输出在终端的,通过重定下输出到

repos.dump

文件里面。该文

件实际是文本文件。

2

)导入旧版本库的内容

在需要导入的位置,新建一个版本库

# svnadmin create new_repos

然后将

repos.dump

文件导入到新的版本库:

# svnadmin load new_repos < repos.dump

该命令成功执行完毕之后,新的版本库中已经包含了

old_repos

版本库中的所有版本内容。

svnadmin dump

svnadmin load

命令都支持导入

/

导出某个指定

revsion

或者某个指定范围的

所有

revision

http://wenku.baidu.com/link?url=ZGHAJwPDIrdEehrN8zrWni0HRxA0YPGtBsrhPXRwRfQb2EpGPmsShVyEHwO6sbOC-QhtBec_hjXhAd0O02Kkg2RGDW0arYAfdVtEpA80Hye

ubuntu下SVN服务器安装配置

一、SVN安装
1.安装包
$ sudo apt-get install subversion

2.添加svn管理用户及subversion组
$ sudo adduser svnuser
$ sudo addgroup subversion
$ sudo addgroup svnuser subversion

3.创建项目目录
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir fitness
$ sudo chown -R root:subversion fitness
$ sudo chmod -R g+rws fitness

4.创建SVN文件仓库
$ sudo svnadmin create /home/svn/fitness

5.访问方式及项目导入:
$ svn co file:///home/svn/fitness
或者
$ svn co file://localhost/home/svn/fitness
* 注意:
如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
//--
下面的命令用于将项目导入到SVN 文件仓库:
$ svn import -m "New import" /home/svn/fitness file:///home/svnuser/src/fitness
一定要注明导入信息

//--------------------------//
6.访问权限设置
修改 /home/svn/fitness目录下:
svnserve.conf 、passwd 、authz三个文件,行最前端不允许有空格
//--
编辑svnserve.conf文件,把如下两行取消注释
password-db = password
authz-db = authz

//补充说明
# [general]
anon-access = read
auth-access = write
password-db = passwd
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿

名用户的访问,只需把 read 改成 none 就能达到目的。

//--
编辑/home/svnuser/etc/passwd 如下:
[users]
mirze = 123456
test1 = 123456
test2 = 123456
//--
编辑/home/svnuser/etc/authz如下
[groups]
admin = mirze,test1
test = test2
[/]
@admin=rw
*=r
这里设置了三个用户mirze,test1,test2密码都是123456
其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限

7.启动SVN服务
svnserve -d -r /home/svn
描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
如: svn://192.168.12.118/fitness

这时SVN安装就完成了.
局域网访问方式:
例如:svn checkout svn://192.168.12.118/fitness --username mirze --password 123456 /var/www/fitness

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

二、HTTP:// [apache]
1.安装包 [已安装subversion]
$ sudo apt-get install libapache2-svn

创建版本仓库:
sudo svnadmin create /目录地址
目录地址必须存在,这个就是保存版本仓库的地方,不同的版本仓库创建不同的文件夹即可,比如:
sudo svnadmin create /home/svn/project
本来/home/svn/project这个目录下什么都没有,执行下面的命令之后再去看一下,多出一些文件和文件夹,我们需要操作的是conf这个文件夹,这个文件夹下有一个文件,叫做passwd,用来存放用户名和密码。
然后把这个版本仓库目录授权给apache读写:
sudo chown -R www-data:www-data /目录地址
然后来到打开apache配置文件:
sudo gedit /etc/apache2/mods-available/dav_svn.conf

加入如下内容:
<Location /project>
DAV svn
SVNPath /home/svn/project
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /home/svn/project/conf/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>

location说的是访问地址,比如上述地址,访问的时候就是
http://127.0.0.1/project
其中有两行被注释掉了,以保证每次都需要用户名密码。
最后一步就是创建访问用户了,建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。
因为conf文件夹下已经存在passwd文件了,所以直接添加用户:
sudo htpasswd -c /home/svn/project/conf/passwd test
然后输入两遍密码,laoyang这个用户就创建好了。
打开/home/svn/project/conf/passwd这个文件,会开到形如如下形式的文本:
test:WEd.83H.gealA //后面是加密后的密码。
创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。
重启apache就可以了。
sudo /etc/init.d/apache2 restart

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

三、同步更新 [勾子]

同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。

知识点:
1、SVN的hooks
# start-commit 提交前触发事务
# pre-commit 提交完成前触发事务
# post-commit 提交完成时触发事务
# pre-revprop-change 版本属性修改前触发事务
# post-revprop-change 版本属性修改后触发事务
通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。
2、同步命令rsync的具体参数使用
3、具有基个语言的编程能力bash python perl都可以实现

post-commit具体实现细节
post-commit脚本

编辑文件:sudo vim /home/svn/fitness/hooks/post-commit

注意:编辑完成post-commit后,执行:sudo chmod 755 post-commit

内容:

#!/bin/sh
export LANG=zh_CN.UTF-8
sudo /usr/bin/svn update /var/www/www --username mirze --password 123456

#Set variable
SVN=/usr/bin/svn
WEB=/home/test_nokia/
RSYNC=/usr/bin/rsync
LOG=/tmp/rsync_test_nokia.log
WEBIP="192.168.0.23"
export LANG=en_US.UTF-8

#update the code from the SVN
$SVN update $WEB --username user --password password
#If the previous command completed successfully, to continue the following
if [ $? == 0 ]
then
 echo "" >> $LOG
 echo `date` >> $LOG
 echo "##############################" >> $LOG
 chown -R nobody:nobody /home/test_nokia/
 #Synchronization code from the SVN server to the WEB server, notes:by the key
 $RSYNC -vaztpH --timeout=90 --exclude-from=/home/svn/exclude.list $WEB root@$WEBIP:/www/ >> $LOG
fi

以上是具体的post-commit程序
注意事项:
1、一定要定义变量,主要是用过的命令的路径。因为SVN的考虑的安全问题,没有调用系统变量,如果手动执行是没有问题,但SVN自动执行就会无法执行了。
2、SVN update 之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码如果只是手动一样会更新,但自动一样的不行。
3、加上了对前一个命令的判断,如果update的时候出了问题,程序没有退出的话还会继续同步代码到WEB服务器上,这样会造成代码有问题
4、记得要设置所属用户,因为rsync可以同步文件属性,而且我们的WEB服务器一般都不是root用户,用户不正确会造成WEB程序无法正常工作。
5、建议最好记录日志,出错的时候可以很快的排错
6、最后最关键的数据同步,rsync的相关参数一定要清楚,这个就不说了。注意几个场景:
这里的环境是SVN服务器与WEB服务器是开的
把SVN服务器定义为源服务器 WEB服务器为目的服务器
场景一、如果目的WEB服务器为综合的混杂的,像只有一个WEB静态资源,用户提交的,自动生成的都在WEB的一个目录下,建议不要用–delete这个参数
上面这个程序就是这样,实现的是源服务器到目的服务器的更新和添加,而没有删除操作,WEB服务器的内容会多于源SVN的服务器的
场景二、实现镜像,即目的WEB服务器与源SVN服务器一样的数据,SVN上任何变化WEB上一样的变化,就需要–delete参数
场景三、不需要同步某些子目录,可能有些目录是缓存的临时垃圾目录,或者是专用的图片目录(而不是样式或者排版的)要用exclude这个参数
注意:这个参数的使用不用写绝对路径,只要目录名称就行 aa代表文件 aa/ 代表目录 ,缺点就是如果有多个子目录都是一样的名称那么这些名称就都不会被同步
建议用–exclude-from=/home/svn/exclude.list 用文件的形式可以方便的添加和删除
exclude.list

.svn/
.DS_Store
images/

利用SVN的钩子还可以写出很多的程序来控制SVN 如代码提交前查看是否有写日志,是否有tab,有将换成空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。

svn server 搭建相关推荐

  1. Linux 搭建SVN server

    一. SVN 简单介绍 Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository ...

  2. (0063)iOS开发之SVN server的搭建

    转载:http://www.cnblogs.com/claireyuancy/p/7345489.html 目的:了解 SVN 搭建的步骤原理! SVN是Subversion的简称,是一个开放源码的版 ...

  3. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统

    本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN ...

  4. [How TO]-在ubuntu20.10上搭建SVN Server

    背景: 做为一名嵌入式工程师,工作了八九年,积攒了大量的学习资料,家里备有3个电脑.好几块硬盘,另外还有百度云盘.阿里云盘等.各种零碎的资料.不知如何分类,导致出现了有的资料只出现在某一个硬盘中,或者 ...

  5. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】

    转自:http://www.cnblogs.com/xing901022/p/4399382.html 本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小 ...

  6. svn 使用TortoiseSVN server搭建本地SVN服务器

    使用TortoiseSVN server搭建本地SVN服务器 转载于:https://www.cnblogs.com/fireblackman/p/10799625.html

  7. win7系统搭建svn服务器,Win7系统如何使用VisualSVN Server搭建SVN服务器?

    SVN是程序员常用的一款软件,它可以很好的帮助程序员进行版本控制以及代码管理.但是要使用SVN还需要进行配置,那么今天就由小编替大家讲解一下Win7系统如何使用VisualSVN Server搭建SV ...

  8. 百度网盘+Visual SVN Server(windows)搭建SVN个人仓库

    百度网盘,我买了会员,你懂得,非会员,上传下载速度太慢!! 百度网盘,有"同步空间",(其实,这个也可以作为svn服务器使用,但是 是自动同步,不太好) 下面的内容是我拷贝的:Vi ...

  9. Linux搭建SVN Server

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  10. SVN服务器搭建--Subversio与TortoiseSVN的配置安装

    SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...

最新文章

  1. 如何正确配置Nginx+PHP
  2. 无线网络实体图生成工具airgraph-ng
  3. 学习java的一些笔记(8)
  4. 软路试--就像一棵树活着
  5. Ubuntu系统如何安装nodejs及npm
  6. 电脑屏幕保护怎么取消_怎么监控员工电脑?老板如何知道员工上班在干什么?...
  7. callapplybind的js实现以及应用
  8. 验证用户输入的是不是中文名字 淘宝精品案例 元素样式设置的方式 链式编程
  9. JDG战队与英特尔达成为期两年的冠名合作
  10. 递推DP URAL 1586 Threeprime Numbers
  11. Promise 的 9 个提示
  12. 25年前的预言(转贴一篇,事实胜于雄辩)
  13. JS中height、clientHeight、scrollHeight、offsetHeight区别
  14. C# --- WinForm基本知识与绘图(上)
  15. php小小通讯录,小小通讯录
  16. mysql 蚂蚁金服_面试蚂蚁金服,首战被MySQL惨虐,熬夜啃透这份阿里面经复盘一个月再战拿下P7offer...
  17. 沈阳城市建设学院计算机2019,沈阳城市建设学院2019-2020年校历及寒假放假时间安排,什么时候放寒假...
  18. java kml_当Java遇上KML
  19. RVIZ 的菜单背景变成黑色
  20. 张静君的“商脉通”和企业博客

热门文章

  1. FPGA实现SPI 协议
  2. 牛逼!用文言文来编程,97 年 CMU 本科生火遍全网!
  3. Hacker Rank 上的 Even Tree 小议
  4. HackerRank Word Order
  5. wkhtmltopdf生成的pdf分页后文字重叠
  6. JavaScript表单验证年龄
  7. element-ui的分页,添加首页、尾页,跳转按钮
  8. VS Code 实用快捷键
  9. 运用Fluxion高效破解WiFi密码
  10. idea git提交代码步骤(转载)