好久没有玩linux了,今天在Ubuntu上装了一个Subversion服务器。由于上次安装Subversion已经是好几年前的事情了,有点手生了。不过好到Ubuntu这个东东蛮方便的。 1、安装Subversion
- sudo apt-get install subversion
2、建立存储仓库
- sudo mkdir /var/svnroot
- cd /var/svnroot
生成项目
- svnadmin create projectname
添加密码验证:
- sudo nano /var/svnroot/inlocals/conf/svnserve.conf
去掉password-db = passwd 前面的#号注释。 修改passwd文件:
- sudo nano /var/svnroot/inlocals/conf/passwd
添加用户名=密码对,如:user=123
svnserve.conf配置说明:
- anon-access = read
- auth-access = write
- password-db = passwd
anon-access 和 auth-access 分别指定匿名和有权限用户的权限,默认给匿名用户只读的权限,如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在同一个目录。
3、导入版本库 把 /var/www 下的内容导入到版本号中:
- sudo svn import -m "第一次导入" /var/www file:///var/svnroot/inlocals
显示结果: 增加 /var/www/index.html 增加 /var/www/index.php
提交后的版本为 1。
4、启动服务器 svn 服务器可以用两种方法架设: 使用 svn 自带的 svnserve 实用程序和利用 Apache 架设。 1)使用 svnserve 搭建 svn 服务器。 启动svn服务器:
- sudo /usr/bin/svnserve -d -r /var/svnroot/
测试服务器:
- sudo svn checkout svn://192.168.0.4/inlocals
A inlocals/index.html A inlocals/index.php 取出版本 1。
修改index.html,提交修改:svn commit –username kokko –password 123456 正在发送 index.html 传输文件数据 . 提交后的版本为 2。
可以尝试重命名文件:svn rename index.php test.php 新增一个文件:svn add index.php 移动 index.php 到 blog/app 下:svn move index.php blog/app
注意: 我提交时提示 svn: 不能打开文件“/var/www/inlocals/.svn/lock”: Permission denied 此处是权限问题,我执行sudo chmod -Rf 777 /var/svnroot/inlocals/可以顺利提交,但是为了安全起见,可以为svn专门建立一个用户组。
注: 以前我一直用xinetd来启动svnserve的守护进程。 安装xinetd sudo apt-get install xinetd
编辑 /ect/xinetd.conf
- service svn
- {
- disable = no
- socket_type = stream
- protocol = tcp
- wait = no
- user = svn
- group = subversion (或svn))
- umask = 002
- port = 3690
- server = /usr/bin/svnserve
- server_args = -i -r /home/svn
- }
2)利用 Apache 架设Subversion 服务器 首先为apache安装mod_dav和mod_dav_svn两个模块: sudo apt-get install libapache2-svn
确定 mod_dav 和 mod_dav_svn 被打开: a2enmod dav dav_svn
配置Apaache,打开httpd.conf 添加:
-
- DAV svn
- SVNParentPath /var/svnroot/
执行sudo svn checkout 检出版本库
设定用户的权限和验证
现在不管谁都可以往SVN里塞东西,为了更好的控制,我们还需要设定访问权限,比如让指定的用户可以 commit,其他的只能 checkout。 因为我们在 Apache 上,所以访问权限的控制就可以直接借用 Apache 的,首先为你的用户设定用户名和密码: 先为管理员添加一个帐号, sudo htpasswd -cmb /home/kokkowon/passwords admin 111111 再增加一个帐号: sudo htpasswd -mb /home/kokkowon/passwords kokko 222222 然后修改httpd.conf:
-
- DAV svn
- SVNParentPath /var/svnroot/
- AuthType Basic #验证类型设置
- AuthName "Please Auth your accout" #验证提示框
- AuthUserFile /home/kokkowon/passwords #验证配置文件
- Require valid-user
说明: 最后,你需要把 版本根目录所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。 |