记得5年多以前我写过一篇blog,名叫《SVN+Apache域用户认证配置方法》,搜索了一下,居然还能找到,还被到处转载,呵呵,也算是一件让人开心的事。
当时因为公司没人懂linux,而我自己又是长期出差在外,不方便维护服务器,只好在windows下部署。印象中整个过程还是相当繁琐的。
因工作需要,今天在ubuntu 10.04 server上部署了一套subversion,没想到这么简单,下面是配置步骤和注意事项:
- sudo apt-get install libapache2-svn subversion apache2
- sudo vim /etc/apache2/sites-available/default,加入
<Location /svn/>
DAV svn
SVNParentPath /home/username/svn/repos
SVNListParentPath on
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /home/username/svn/passwdfile
AuthzSVNAccessFile /home/username/svn/authzfile
Require valid-user
</Location>
- passwdfile可以用htpasswd passwdfile username passwd格式来生成,具体参数可以看man htpasswd
- 注意Location /svn/的svn后面有一条斜线,没有的话,会造成SVNListParentPath失效,提示403错误,看apache2日志的错误信息是:
The URI does not contain the name of a repository. [403, #190001],这一点官方手册写的范例就是没有斜线,是错误的,让人无语
其他类 apache2, subversion, svn
在以往的操作过程中,svn的提交跟测试服务器的更新是要分开进行的,这实在不是很必要,操作繁琐浪费时间。想起svn仓库中的hook,经过配置后,达到了想要的效果。
- 环境:ubuntu server 8.04.2,为便于管理,采用基于apache2虚拟主机的配置方案,将svn绑定到具体的网站目录或二级域名。仓库存放在统一的一个目录/home/username/svn/,网站也统一放到一个目录/home/username/web/。
- 步骤如下:
- sudo apt-get install apache2 libapache2-svn subversion
- sudo a2enmod dav_svn
- sudo /etc/init.d/apache2 reload
- 增加配置段到虚拟主机:<Location /svn>
DAV svn
SVNParentPath /home/username/svn/svnlib
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /home/username/svn/dav_svn.passwd
AuthzSVNAccessFile /home/username/svn/dav_svn.authz
Require valid-user
</Location>
- 用htpasswd建立dav_svn.passwd
- 再配置dav_svn.authz权限控制,具体参照svn手册
- 建立项目svn仓库:cd /home/username/svn/svnlib;svnadmin create project_demo
- 取出一份空svn代码,这是为了方便调用svn hook时svn up用的:cd /home/username/web/;svn co http://domain/svn/project_demo
- 为配置apache2调用的hook修改文件归属:sudo chown www-data:www-data -R project_demo
- 建立hook文件:sudo vim /home/username/svn/svnlib/project_demo/hooks/post-commit,输入内容:cd /home/username/web/project_demo;svn up
- 增加执行权限:sudo chmod +x post-commit
- 打完收工
其他类 apache2, svn
创建本地工作拷贝:svn co http://localhost/svn/project/
cd project 后修改代码…
新加文件:svn add filename
提交修改后的代码:svn ci -m “注释说明”
下载svn服务器新代码到本地拷贝:svn up
Linux svn