Re: настройки сети
- From
- Andrey N. Oktyabrski (2:5020/400)
- To
- Andrey Ostanovsky
- Date
- 2007-04-05T18:28:54Z
- Area
- RU.UNIX.SOLARIS
From: "Andrey N. Oktyabrski" <ano@bestmx.ru>
Andrey Ostanovsky wrote:
> <?xml version="1.0"?>
> <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
> <!--
> Copyright 2004 Sun Microsystems, Inc. All rights reserved.
> Use is subject to license terms.
>
> Не, я лучше, как-нибудь, по-старинке, плоскими файлами запуска из /etc/rc.d.
А что плохо-то? Что мешает написать что-то типа этого в своей XMLине?
Copyright 2007 Andrey Ostanovsky, Inc. All rights reserved.
Use is subject to license terms.
> AO> Я спрашивал здесь как это делается, мне рассказали и накидали ссылок
> AO> где почитать. Оказалось всё довольно просто и даже удобно.
>
> Насчет "удобно" - мне есть с чем сравнивать. Писать xml руками - в любом случае
> не удобно, про читать - я уже и не говорю.
Удобно - я имел в виду пользоваться :-) А xml написать один раз для
одного сервиса. Для остальных копируем существующий и изменяем только
имя сервиса, остальные правки сводятся к редактированию скрипта
запуска/остановки. Пример:
ano@moon:~> cat /usr/local/smf/manifest/nginx.xml
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM
'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='ANOnginx:nginx'>
<service
name='network/nginx'
type='service'
version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency name='fs'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='net'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>
<exec_method
type='method'
name='start'
exec='/usr/local/smf/method/nginx start'
timeout_seconds='-1'>
</exec_method>
<exec_method
type='method'
name='stop'
exec='/usr/local/smf/method/nginx stop'
timeout_seconds='-1'>
</exec_method>
<exec_method
type='method'
name='reload'
exec='/usr/local/smf/method/nginx reload'
timeout_seconds='-1'>
</exec_method>
<exec_method
type='method'
name='restart'
exec='/usr/local/smf/method/nginx restart'
timeout_seconds='-1'>
</exec_method>
</service>
</service_bundle>
ano@moon:~> cat /usr/local/smf/method/nginx
#!/bin/sh
. /lib/svc/share/smf_include.sh
prog="nginx"
progdir="/opt/nginx/sbin"
pidfile="/var/run/nginx.pid"
if [ ! -f /opt/nginx/conf/nginx.conf ]; then
exit 0
fi
PATH=/usr/sbin:/usr/bin:/usr/local/sbin:/opt/csw/bin
start() {
echo "Starting $prog "
$progdir/$prog
}
stop() {
echo "Stopping $prog "
/usr/bin/kill `head -1 $pidfile`
}
restart() {
/usr/bin/kill -s USR2 `head -1 $pidfile`
start
}
reload() {
echo "Reloading nginx daemon configuration: "
/usr/bin/kill -s HUP `head -1 $pidfile`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo $"Usage: $0 {start|stop|reload|restart}"
exit 1
esac
exit $?
ano@moon:~> sudo svccfg
svc:> import /usr/local/smf/manifest/nginx.xml
...
svc:> select nginx
svc:/network/nginx> listprop
fs dependency
fs/entities fmri svc:/system/filesystem/local
fs/grouping astring require_all
fs/restart_on astring none
fs/type astring service
net dependency
net/entities fmri svc:/network/loopback
net/grouping astring require_all
net/restart_on astring none
net/type astring service
general framework
general/single_instance boolean true
start method
start/exec astring "/usr/local/smf/method/nginx start"
start/timeout_seconds count 18446744073709551615
start/type astring method
stop method
stop/exec astring "/usr/local/smf/method/nginx stop"
stop/timeout_seconds count 18446744073709551615
stop/type astring method
reload method
reload/exec astring "/usr/local/smf/method/nginx reload"
reload/timeout_seconds count 18446744073709551615
reload/type astring method
restart method
restart/exec astring "/usr/local/smf/method/nginx restart"
restart/timeout_seconds count 18446744073709551615
restart/type astring method
Всё. Сложностей-то и нет никаких вроде. Ну или я их не заметил :-)
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
SEEN-BY: 450/159 1024 461/640 469/999 4625/8 5000/76 5000 5006/1 5007/1
SEEN-BY: 5010/70 5011/13 5012/46 5015/28 5020/175 194 400 545 902 1922 2238
SEEN-BY: 5020/4441 5021/29 5025/3 5030/1080 1957 5035/38 5036/1 5045/7 5051/15
SEEN-BY: 5054/1 4 8 9 28 35 37 5060/88 5061/15 120 5062/10 5064/7 5066/18
SEEN-BY: 5075/5 5085/13 5093/57 5095/20 5096/18
PATH: 5020/400 545 5054/1 37