Solaris 10에서 아파치2 SMF 세팅하기

Solaris 2008. 6. 10. 20:36 posted by CecilDeSK
반응형
솔라리스에 번들로 설치된 아파치의 경우 SMF설정이 간단하게 이루어 지지만 
http://www.sunfreeware.com 에서 패키지로 설치하거나 직접 컴파일한경우에는 smf관련 Methods와 Manifests를 
직접 작성해야합니다.
apache2 가 /usr/local/apache2 에 설치되어있다고 가정하고 시작하겠습니다. 
우선 아래와 같은 Methods 화일을 /lib/svc/method/ 에 apache2 란 이름으로 생성합니다.
httpd.conf 와 httpd.pid 위치는 다르게 설정했을경우 경로를 직접 수정해 주세요
[sol:/]# vi /lib/svc/method/apache2
#!/sbin/sh
# apache2  --in place /lib/svc/method/apache2
#

. /lib/svc/share/smf_include.sh

PATH=${PATH}:/usr/local/apache2/bin
APACHECONF=/usr/local/apache2/conf/httpd.conf
PIDFILE=/usr/local/apache2/logs/httpd.pid

if [ -f $PIDFILE ] ; then
        pid=`cat $PIDFILE 2>/dev/null`
else
        pid=`pgrep httpd`
fi

logmsg()
{
        logger -p daemon.warning -t apache2 "$1"
        echo "$1" >&2
}

case "$1" in
        start)
                [ ! -f ${APACHECONF} ] && exit 0
                [ -n "$pid" ] && kill -TERM $pid 2>/dev/null
                /usr/local/apache2/bin/apachectl -k start
                if [ $? -ne 0 ]
                then
                        exit $SMF_EXIT_ERR_CONIG
                fi
                ;;

        stop)
                /usr/local/apache2/bin/apachectl -k stop
                ;;

        reload)
                /usr/local/apache2/bin/apachectl -k graceful
                ;;

        restart)
                /usr/local/apache2/bin/apachectl -k restart
                ;;

        *)
                echo "Usage: $0 \c" >&2
                echo "(start|stop|reload|restart)" >&2
                exit 1
                ;;

esac
exit $SMF_EXIT_OK
다음은 Manifest 화일의 생성 입니다.
[sol:/]#vi /var/svc/manifest/site/apache2.xml
화일 생성 위치는 일단 site 디렉토리에 apache2.xml로 생성했습니다.
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

<!--     Apache2 SMF Manifest -->

<service_bundle type='manifest' name='site:apache2'>

<service
        name='site/apache2'
        type='service'
        version='1'>

        <create_default_instance enabled='false' />

        <single_instance />

        <dependency name='paths'
            grouping='require_all'
            restart_on='error'
            type='path'>
                <service_fmri value='file://localhost/usr/local/apache2/bin/apachectl' />
                <service_fmri value='file://localhost/usr/local/apache2/bin/httpd' />
                <service_fmri value='file://localhost/usr/local/apache2/conf/httpd.conf' />
        </dependency>

        <dependency name='network'
            grouping='require_any'
            restart_on='error'
            type='service'>
                <service_fmri value='svc:/network/service' />
        </dependency>

        <dependent
                name='apache2_multi-user'
                grouping='optional_all'
                restart_on='none'>
                <service_fmri value='svc:/milestone/multi-user' />
        </dependent>

        <!--
                The timeout needs to be large enough to wait for startup.
        -->
        <exec_method
            type='method'
            name='start'
            exec='/lib/svc/method/apache2 start'
            timeout_seconds='60' />

        <exec_method
            type='method'
            name='stop'
            exec='/lib/svc/method/apache2 stop'
            timeout_seconds='60' />

        <stability value='Unstable' />

        <template>
                <common_name>
                        <loctext xml:lang='C'>
                        Apache 2 (httpd)
                        </loctext>
                </common_name>
                <documentation>
                        <manpage title='httpd' section='8' />
                </documentation>
        </template>
</service>

</service_bundle>
이렇게 두개의 화일을 생성했다면 퍼미션을 설정
shell 초기화에따라 안해줘도 되는경우도있겠지만 혹시 모르니 ...;
[sol10:/]#chown root:bin /lib/svc/method/apache2
[sol10:/]#chmod 555 /lib/svc/method/apache2
[sol10:/]#chown root:sys /var/svc/manifest/site/apache2.xml
[sol10:/]#chmod 444 /var/svc/manifest/site/apache2.xml

이제 import 해야겠죠?
우선 Manifest 화일이 제대로 되었나 체크를
[sol10:/]#xmllint /var/svc/manifest/site/apache2.xml
or
[sol10:/]#svccfg
svc:>
svc:> validate /var/svc/manifest/site/apache2.xml

간단하게 체크해보고 이상없군요 ㅡ,ㅡ;
이제 설정화일을 SMF로 import 하고
[sol10:/]# svccfg -v import /var/svc/manifest/site/apache2.xml
사용가능하게 enable 시키는 작업
[sol10:/]#svcadm -v enable svc:site/apache2
이렇게 설정해주면 됩니다.
서비스가 제대로 되고있나 확인?
[sol10:/]#svcs |grep apache
online 19:38:59 svc:/site/apache2:default
제대로 되었군요 혹시 online 대신 다른 메세지가 뜬다면

svcs -xv 나 svcs -x 로 확인해보세요

apache2의 method 와 manifest 화일을 첨부합니다.
apache2 Methods 화일


apache2 Manifest 화일

,,,,,,,

반응형