2008年11月4日星期二

在Solaris 10下用SMF配置Subversion

Solaris 10下配置subversion有如下几个关键点:
  1. 获取subversion
  2. 配置subversion
  3. 设置subversion为系统服务
在获取subversion的时候,直接从subversion的官方网站难以获得二进制版本,最后用的是pkg-get从blastwave.org上获取的。参见www.blastwave.org/howto.html吧,要记得更新pkg库

花了不少时间从blastwave上down下二进制的subversion以及subversion的dependece二进制

subversion中的程序默认下载在/opt/csw/bin下面了

第二步配置subversion还是很简单的,从网络上能找到很多

第三步配置subversion成系统服务,以自动启动的方式运行。这里网络上很多都是用init.d/rc*.d这样的方法来弄,不过呢,这些已经是不建议的方式了。
solaris 10里面建议用SMF来完成管理,确实很方便。
具体的SMF就不讲了,Google下或者去sun的Bigadmin里面能看到很多。

(因为现在是根据回忆来写,有些路径或者文件名可能会打错。。。。)
我这里配置subversion是参考了/var/svc/manifest/network/utmp.xml这个文件,因为我的subversion也是一个network服务,类似utmp需要依靠多用户run-level
所以写了个subversion.xml如下
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='export'>
  <service name='network/subversion' type='service' version='0'>
    <create_default_instance enabled='true'/>
    <single_instance/>
    <dependent name='svnserve_multi-user' restart_on='none' grouping='optional_all'>
      <service_fmri value='svc:/milestone/multi-user'/>
    </dependent>
    <!-- 以脚本启动-->
    <exec_method name='start' type='method' exec='/lib/svc/method/svc-subversion' timeout_seconds='60'>
      <method_context/>
    </exec_method>
<!-- 以kill方式将服务进程干掉,这是有subversion的管理方式决定的,干掉svnserve进程-->
    <exec_method name='stop' type='method' exec=':kill' timeout_seconds='60'>
      <method_context/>
    </exec_method>
    <stability value='Unstable'/>
    <template>
      <common_name>
        <loctext xml:lang='C'>Subversion monitoring</loctext>
      </common_name>
    </template>
  </service>
</service_bundle>


然后写了个启动的shell脚本: subversion
#! /usr/bin/bash

# Start the subversion server
/opt/csw/bin/svnserve -d -r /export/home/svn/svn/repos/

用svccfg import subversion.xml导入到管理库里面,将subversion这个脚本添加执行权限,并拷贝成/lib/svc/method/svc-subversion

然后svcs |grep subversion看看运行状态,如果是online就OK了

可以通过 svcadm disable subversion
svcadmin enable subversion
svcadmin restart subversion
来管理这个服务

更多的看man svccfg 和 svcadm

通过 svcs -xv subversion可以诊断故障

有问题看看/var/svc/log/network-subversion的日志

没有评论: