Debian下将Subversion(SVN)的svnserve加入启动服务项

前面两篇文章简单的介绍了SVN的使用,其中讲到了如何通过svnserve直接启动SVN服务,但是每次都使用svnserve -d -r ~/repos这样的命令还是略显麻烦,尤其是当我们需要停止或者重启svnserve时还要调用kill命令,十分不便,接下来介绍的是如何将其作为系统服务,让其可以被Debian的invoke-rc.d命令管理。

说是系统服务,说白了就是我们需要启动脚本,大家可以到/etc/init.d路径下看到一堆启动脚本,比如有我们熟悉的nginx,有了初始脚本(initscript)我们就可以通过update-rc.d创建文件链接的方式将其链入启动级别(runlevel)中去了,同样也可以被invoke-rc.d管理。

你可以随意查阅/etc/init.d路径下的某些程序的脚本文件,大体上能知道这类文件的写法,当然今天我不是介绍initscript的写法的,更何况网上已经有现成的脚本可用了,参考文章《running Subversion’s svnserve on a Debian system》,我将其脚本修改如下:

继续阅读

Debian下使用Subversion(SVN)来管理Nginx Web网站发布

前面一篇文章讲解了如何不依赖Apache来直接使用SVN,这里我将讲解如何利用SVN来管理网站的发布,这次环境仍然是Debian,预装了SVN和Nginx,SVN服务已经启动,版本库已经建立并完成项目提交,假设我们拥有的版本库及项目路径为/home/user/repos/project1,web发布路径为/home/user/www/project1,这里的project1为Web项目,那么当我们在客户端将Web项目代码提交(commit)到project1代码库中时,能否自动更新/home/user/www/project1的Web发布路径的内容呢?

当然是可以的,首先我们需要checkout一次,把库的文件checkout到Web路径下:

cd /home/user/www
svn co svn://localhost/project1 --username bob --password 123456

其次是修改hooks目录下的post-commit文件以完成提交后挂钩,按上文所述,这个文件应该位于版本库中/home/user/repos/project1/hooks,如果没有则建立一个,内容如下:

#!/bin/sh 
# /home/user/www/project1为我们的web发布路径
svn up /home/user/www/project1 --username bob --password 123456 --no-auth-cache

注意--no-auth-cache,否则会提示验证信息ATTENTION! Your password for authentication realm导致执行失败。

最后为post-commit文件增加执行属性:

chmod +x post-commit

完成上述步骤后,试试从客户端提交代码到版本库中,看看Web内容是不是也改变了?

Debian不使用Apache直接架设Subversion(SVN)服务器

低配置的Debian服务器,想架设个Subversion(SVN)服务器用来托管部分代码,服务器上原先装有Nginx,网上大多数配置SVN的都要求结合Apache使用,低配服务器为这个装个Apache略显夸张,于是经过一段摸索,找到了一个方法,可以不使用Apache服务程序,记在这里留做备忘。

1. 首先是安装Subversion,直接使用apt-get命令:

sudo apt-get install subversion subversion-tools

2. 建立SVN仓库,假设代码仓库位于home路径下的repos文件夹,项目名称为project1:

mkdir ~/repos
svnadmin create ~/repos/project1

3. 修改配置文件~/repos/project1/conf/authz添加授权认证信息,比如将bob加入管理员组,并对其添加读写权限,内容如下:

[groups]
admin=bob # 将bob添加到admin组 
[/] 
bob = rw  # 成员bob对/目录的权限:r读,w写

4. 修改配置文件~/repos/project1/conf/passwd添加用户密码,比如设置bob的认证密码,可以像下面这样:

[users] 
bob = 123456

继续阅读