有没有人有可用的 svn 服务初始化脚本?
谢谢
答案1
现在它应该非常简单(如果只有 svnserve 附带它;我目前正在使用 v1.9.5):
sudo systemctl enable svnserve
sudo systemctl daemon-reload
但是 /etc/init.d/svnserve 仍然适用于 Stretch(Debian v9.2,我目前使用的):
#!/bin/sh
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides: svnserve
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: svnserve init script
# Description: bare minimum svn init script
### END INIT INFO
DESC="subversion server"
DAEMON=/usr/bin/svnserve
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"
注意:更改 repo 基本路径以满足您的需求,即我使用“svnadmin create /data/svn/repo1”和守护进程参数中的此路径,以便我可以简单地 svn://host/repo1
然后运行:
sudo chmod 755 /etc/init.d/svnserve
sudo update-rc.d svnserve defaults
如果您收到有关缺少 init-d-script 的错误,则您可能正在使用旧的 Debian,例如 Wheezy,因此“sudo rm /etc/init.d/svnserve”然后“sudo cp /etc/init.d/skeleton /etc/init.d/svnserve”(在 Wheezy 中存在,但现在不存在),并更改以下三行(第一个块是默认的,第二个块是它应该的,注意 sbin=>bin):
NAME=daemonexecutablename
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"*
[信息太多比信息太少好]
答案2
这是我做的。注意我的 svn 目录位于根文件夹 /svn
#!/bin/bash
#
# /etc/rc.d/init.d/subversion
#
# Starts the Subversion Daemon
#
# chkconfig: 2345 90 10
# description: Subversion Daemon
# processname: svnserve
. /etc/rc.d/init.d/functions
[ -x /usr/bin/svnserve ] || exit 1
RETVAL=0
prog="svnserve"
desc="Subversion Daemon"
start() {
echo -n $"Starting $desc ($prog): "
daemon $prog -r /svn -d
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
echo
}
stop() {
echo -n $"Shutting down $desc ($prog): "
killproc $prog
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failure
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
RETVAL=$?
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart}"
RETVAL=1
esac
exit $RETVAL
更改此行以反映您的目录
daemon $prog -r /svn -denter code here
然后在shell中运行
#chkconfig --add svnserve
#chkconfig svnserve on
重启服务看看是否能正常工作
#service svnserve restart
然后轰隆隆 :D
答案3
我创建了一个智能的 Debian 脚本,主要基于 Tomcat 包。您可以根据需要更改主要变量,它还可以处理默认机制。尽情享受吧。
/bin/sh #!/bin/sh # # /etc/init.d/subversion——Subversion 的启动脚本 # # 作者:Csaba Tenkes[电子邮件保护] # ### 开始初始化信息 # 提供:颠覆 # 必需启动:$local_fs $remote_fs $network # 必需停止:$local_fs $remote_fs $network # 默认开始: 2 3 4 5 # 默认停止: 0 1 6 # 简短描述:开始颠覆 #描述:启动 Subversion 服务器。 ### 结束初始化信息 设置-e PATH=/bin:/usr/bin:/sbin:/usr/sbin DESC="Subversion 服务器" 名称=svnserve SCRIPTNAME=/etc/init.d/$NAME PIDFILE=/var/run/$NAME.pid SVN_USER=颠覆 SVN_GROUP=颠覆 SVN_REPO_PATH=/opt/svn-repos/ SVNSERVE=/usr/bin/$名称 SVNSERVE_ARGS="-d -r $SVN_REPO_PATH" [ -x "$SVNSERVE" ] || 退出 0 [ -r /etc/默认/$名称 ] && . /etc/默认/$名称 ./lib/lsb/init-函数 案例“$1” 开始) 设置 +e log_daemon_msg“开始 $DESC” “$NAME” 如果 ![ -f "$PIDFILE" ]; 则 # TODO: 'ps fax | grep svnserve| grep ?' 或进程存在 umask 002 启动-停止守护进程 --start --chuid $SVN_USER:$SVN_GROUP --make-pidfile --pidfile $PIDFILE --exec $SVNSERVE -- \ $SVNSERVE_ARGS> / dev / null; chown $SVN_USER "$PIDFILE" log_end_msg 0 别的 log_progress_msg“(已在运行)” log_end_msg $? 菲 设置-e ;; 停止) 设置 +e log_daemon_msg“停止$DESC” “$NAME” 如果 [ -f "$PIDFILE" ]; 那么 如果 start-stop-daemon --stop --exec $SVNSERVE; 那么 log_end_msg 0 别的 log_end_msg $? 菲 rm -f "$PIDFILE" 别的 log_progress_msg“(未运行)” log_end_msg 0 菲 设置-e ;; 重启|强制重新加载) 如果 [ -f "$PIDFILE" ]; 那么 $0停止 睡眠 1 菲 0 美元起 ;; 地位) 设置 +e 启动-停止守护进程--测试--启动--pidfile“$PIDFILE”\ --用户$SVN_USER --exec $SVNSERVE \ >/dev/null 2>&1 如果 [ “$?” = “0” ]; 那么 如果 [ -f "$PIDFILE" ]; 那么 PID=`cat $PIDFILE` log_daemon_msg "$DESC" "$NAME (pid $PID) 正在运行." log_end_msg 0 出口 0 别的 log_daemon_msg "$DESC" "$NAME 未运行" log_end_msg 0 出口 3 菲 别的 log_daemon_msg "$DESC " "$NAME 正在使用 pid `cat $PIDFILE` 运行" log_end_msg 0 出口 0 菲 设置-e ;; *) log_success_msg "用法:$SCRIPTNAME {start|stop|status|restart|force-reload}" 出口 1 ;; 埃萨克 出口 0