在ubuntu上的安装配置svn
SVN服务器在ubuntu上的安装配置
1. SVN服务器的安装和配置
1.1. 安装命令
sudo apt-get install subversion
sudo apt-get install subversion-tools
1.2. 添加组和用户的命令
创建subversion用户组,并把用户www-data加入到subversion用户组中
sudo addgroup subversion
sudo usermod -G subversion -a www-data administrator
修改组也可以直接修改组文件: sudo vi /etc/group。
然后需要直接重新启动SVN服务再登录以便能够真正成为 subversion 组的一员。
1.3. 创建SVN仓库
创建目录,进入目录下创建SVN版本存放的仓库目录。仓库目录可以就是单个项目的名称。
sudo mkdir /srv/svn
sudo mkdir svnEntrepot
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
sudo chown -R www-data:subversion /srv/svn
sudo chmod -R g+rws /srv/svn
把上面创建的仓库变成 SVN 文件仓库,在目录下看到svn版本库的所有文件夹以及配置文件,如:conf、db、format、hooks、locks、README.txt。其svn的配置文件主要都在conf中,其下有authz 、hooks-env.tmpl、passwd、svnserve.conf这四个文件。
sudo svnadmin create /srv/svn/svnEntrepot
1.4. 配置SVN的配置文件
1.4.1. 配置文件/srv/svn/unitac/conf/svnserve.conf
[general]
#匿名用户权限不可读
anon-access = none
#权限用户可写
auth-access = write
#密码文件为passwd,默认在同一目录下
password-db = passwd
#权限文件为authz,默认在同一目录下
authz-db = authz
注意:每一行要顶格,前面不能空格
1.4.2. 配置文件/srv/svn/unitac/conf/ authz
配置用户权限
[groups]
admin= tone #这里设置用户组和用户,例如admin组的用户为tone
[/] #这表示从仓库的目录开始设置权限。
@admin =rw #admin组有rw(读写权限)
*=r #其他人有r(只读权限)
[/unitac] #对unitac子目录进行设置权限。
@admin= r
注意:这里组的名字不一定叫admin,组的名字可以任意,admin组有多个用户的话,可以这样制定admin=tone,tone1,tone2等。
1.4.3. 配置文件/srv/svn/unitac/conf/ passwd
保存用户名和密码
[users]
# harry = harryssecret
# sally = sallyssecret
tone=www
设定用户tone的密码是www,是的没错,密码是明文的。
1.5. 启动SVN服务器
sudo svnserve -d -r /srv/svn
sudo svnserve -d -r /srv/svn --listen-port 3690
-d 已守护模式启动
-r 指定svn版本库根目录,这样是便于客户端不用输入全路径,就可以访问版本库了。
–listen-port是带端口设置的启动。
例如:svn://ip:port/unitac
启动时报错处理:
查看svnserve进程pid:ps –aux #查看svnserve进程pid
杀死进程:kill -9 pid ,再次启动服务。
1.6. 查看版本
svnlook --version // 查看svn的版本
svnlook youngest myrepos // 查看到目前为止最新的版本号
2.apache服务器的安装和配置
2.1. 安装命令
sudo apt-get install apache2
2.2. 默认的网站根目录路径
Apache2安装后,默认的网站根目录是"/var/www/html",目录下面有一个index.html文件,在浏览器中输入"127.0.0.1",就可以打开该页面。
2.3. apache的配置
Apache的安装目录/etc/apache2下,需要配置下面的文件参数
2.3.1. 配置文件apache2.conf
修改apache的访问根目录,找到<Directory /var/www/html>的位置,更改/var/www/为新的根目录。
2.3.2. 配置文件/etc/apache2/sites-available/000-default.conf
修改apache的访问根目录,找到DocumentRoot /var/www/html的位置,更改/var/www为新的根目录。
2.3.3. 配置文件/etc/apache2/mods-available/dav_svn.conf
将svn配置到apache中通过http web方式进行访问,配置如下:
<Location /svn>
DAV svn #告诉apache哪个模块负责上面的URL
#SVNPath /srv/svn/unitac
SVNParentPath /srv/svn
SVNAdvertiseV2Protocol Off
AuthType Basic #启用基本的验证
AuthName "Subversion Repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /etc/subversion/authz
Require valid-user
</Location>
把配置文件做一个链接
ln -s /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-enabled/dav_svn.conf
SVNPath是项目库地址,如果只有一个项目库,则直接可以用SVNPath。如果有多个项目库,则可直接使用SVNParentPath,让新建的项目库放在/srv/svn/下。这两个只能配置一个。
AuthUserFile是存放用户文件。AuthzSVNAccessFile是用户组权限文件。
配置文件是告诉apache关于svn的访问路径以及相关配置文件,注意存放的根目录。
Require valid-user是登录svn要做验证。
2.3.4. 配置文件/etc/subversion/passwd
这个文件包含了用户授权的详细信息。
sudo htpasswd -c /etc/subversion/passwd user_name //添加用户的命令
系统会提示输入密码,一旦输入了密码,该用户就建立了。如果要继续创建其他用户,
注意:不能再用-c选项了,因为-c选项表示创建一个新的用户授权文件,一旦选用,原有的授权文件就被覆盖了。
修改密码和注册用户的操作是一样的。
sudo htpasswd /etc/subversion/passwd user_name
系统会提示你输入新密码,一旦输入了密码,该用户的密码就成功修改了。
2.3.5. 配置文件/etc/subversion/authz
这个文件存放被svnmanager管理的svn的权限管理文件。
mkdir /etc/subversion/autnz
chmod 777 /etc/subversion/passwd
chmod 777 /etc/subversion/autnz
2.4. 启动apache服务
所有的配置结束,或者有修改配置的操作都需要重启apache的服务,才能使配置生效。
启动apache服务:
`/etc/init.d/apache2 start`
或者 sudo /etc/init.d/apache2 start
重启apache服务:
/etc/init.d/apache2 restart
或者 sudo /etc/init.d/apache2 restart
停止apache服务:
/etc/init.d/apache2 stop
或者 sudo /etc/init.d/apache2 stop
然后就可以通过http://ip/svn/项目名 进行远程访问。
3.SVN的备份
3.1.备份指令
1)svnadmin dump备份
$svnadmin dump myrepos > 目录位置/YYmmdd_fully_backup.svn //不要放在当前目录下
在YYmmdd_fully_backup.svn文件所在的目录下输入进行导入:
$svnadmin load newrepos < YYmmdd_fully_backup.svn
压缩备份
$svnadmin dump /home/svn/repos | gzip > YYmmdd_fully_backup.gz
导入:
$zcat YYmmdd_fully_backup.gz | svnadmin load repos
同一个服务器上的迁移:
$svnadmin dump myrepos | svnadmin load newrepos
增量备份(对应版本的备份)
$svnadmin dump /home/svn/repos –r 0:100 > YYmmdd _incremental _backup.svn
$svnadmin dump /home/svn/repos -r 101:200 --incremental > YYmmdd_incremental_backup.svn
2)svnadmin hotcopy备份
备份
$svnadmin hotcopy /home/svn/repos YYmmdd_fully_backup --clean-logs
#恢复
$svnadmin hotcopy YYmmdd_fully_backup /home/svn/repos