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》,我将其脚本修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          subversion
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the subversion daemon
# Description:       starts subversion using start-stop-daemon
### END INIT INFO
 
# sudo svnserve -d -r /home/pi/repos
# http://www.everville.de/pages/howtos/linux/svnserve/index.html
 
# start/stop subversion daemon
 
test -f /usr/bin/svnserve || exit 0
 
# 这里是svnserve执行的参数,/home/pi/repos改为你自己的版本库地址
OPTIONS="-d -T -r /home/pi/repos"
 
case "$1" in
	start)
		echo -n "Starting subversion daemon:"
		echo -n " svnserve"
		# 这里的pi:pi为member:group,即用户:组名,改为适合你自己的
		start-stop-daemon --start --quiet --oknodo --chuid pi:pi --exec /usr/bin/svnserve -- $OPTIONS
		echo "."
    	;;
 
	stop)
		echo -n "Stopping subversion daemon:"
		echo -n " svnserve"
		start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/svnserve
		echo "."
		;;
 
	reload)
		;;
 
	force-reload)
	$0 restart
		;;
 
	restart)
	$0 stop
	$0 start
		;;
 
	*)
		echo "Usage: /etc/init.d/subversion (start|stop|reload|restart)"
		exit 1
		;;
 
esac
 
exit 0

大家可能注意到了BEGIN INIT INFO这样的信息,这其实是LSB信息,里面标识着这个服务运行的参数,当然在Debian 5及以下版本的系统中可以略去,但是在Debian 6及最新系统中会提示missing LSB information的错误信息,LSB信息是可以被服务加载器读取的,建议大家在不明白的情况下不要变动。

将上面的脚本按注释提示修改后保存为subversion文件,路径为/etc/init.d,添加执行属性:

chmod +x /etc/init.d/subversion

添加启动项:

update-rc.d /etc/init.d/subversion defaults

当然这个方法可能在Debian 6及高版本的Debian下不再适用,不过通过LSB信息,我们可以直接使用insserv命令来安装服务。

insserv -v -d /etc/init.d/subversion

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据