Commit 4356fed64ed20dced80b1a289b361f77a0f55e6f

Authored by Kevin Fourie
1 parent 1c9f9d07

KTS-2430

"Create proper init script for stack install"
Done. Added to examples directory too.

Committed By: Kevin Fourie
Reviewed By: Conrad Vermeulen



git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7299 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 492 additions and 0 deletions
examples/linux/init/dmsctl.sh 0 → 100644
  1 +#!/bin/sh
  2 +
  3 +# Boot KnowledgeTree services
  4 +# chkconfig: 2345 55 25
  5 +# description: KnowledgeTree Services
  6 +#
  7 +# processname: ktdms
  8 +
  9 +HOSTNAME=`hostname`
  10 +RETVAL=0
  11 +PID=""
  12 +ERROR=0
  13 +SERVER=all
  14 +VDISPLAY="99"
  15 +INSTALL_PATH=@@BITROCK_INSTALLDIR@@
  16 +JAVABIN=$INSTALL_PATH/j2re/bin/java
  17 +export LD_LIBRARY_PATH="$INSTALL_PATH/apache2/lib:$INSTALL_PATH/common/lib:$LD_LIBRARY_PATH"
  18 +export PATH=$PATH:$INSTALL_PATH/php/bin
  19 +export PHPRC=$INSTALL_PATH/php/etc
  20 +
  21 +# Apache
  22 +HTTPD_PIDFILE=$INSTALL_PATH/apache2/logs/httpd.pid
  23 +HTTPD_PID=""
  24 +HTTPD="$INSTALL_PATH/apache2/bin/httpd -f $INSTALL_PATH/apache2/conf/httpd.conf"
  25 +HTTPD_STATUS=""
  26 +
  27 +# MySQL
  28 +MYSQL_PIDFILE=$INSTALL_PATH/mysql/data/mysqld.pid
  29 +MYSQL_PID=""
  30 +MYSQL_START="$INSTALL_PATH/mysql/bin/safe_mysqld --port=3306 --socket=$INSTALL_PATH/mysql/tmp/mysql.sock --old-passwords --datadir=$INSTALL_PATH/mysql/data --log-error=$INSTALL_PATH/mysql/data/mysqld.log --pid-file=$INSTALL_PATH/mysql/data/mysqld.pid"
  31 +MYSQL_STOP="$INSTALL_PATH/mysql/bin/mysqladmin --socket=$INSTALL_PATH/mysql/tmp/mysql.sock -u root -p shutdown"
  32 +MYSQL_STATUS=""
  33 +MYSQL_PASSWORD=""
  34 +
  35 +# Xvfb
  36 +XVFB_PIDFILE=$INSTALL_PATH/Xvfb/xvfb.pid
  37 +XVFB_PID=""
  38 +XVFBBIN=$INSTALL_PATH/Xvfb/bin/Xvfb
  39 +XVFB="$XVFBBIN :$VDISPLAY -screen 0 800x600x8 -fbdir $INSTALL_PATH/Xvfb/var/run"
  40 +XVFB_STATUS=""
  41 +
  42 +# OpenOffice
  43 +SOFFICE_PATH="$INSTALL_PATH/openoffice/program"
  44 +SOFFICE_PIDFILE=$INSTALL_PATH/openoffice/soffice.bin.pid
  45 +SOFFICE_PID=""
  46 +SOFFICE_PORT="8001"
  47 +SOFFICEBIN=$INSTALL_PATH/openoffice/program/soffice.bin
  48 +SOFFICE="$SOFFICEBIN -nofirststartwizard -nologo -headless -display :$VDISPLAY -accept=socket,host=localhost,port=$SOFFICE_PORT;urp;StarOffice.ServiceManager"
  49 +SOFFICE_STATUS=""
  50 +
  51 +# Lucene
  52 +LUCENE_PIDFILE=$INSTALL_PATH/knowledgeTree/bin/luceneserver/lucene.pid
  53 +LUCENE_PID=""
  54 +LUCENE="$JAVABIN -jar ktlucene.jar"
  55 +LUCENE_STATUS=""
  56 +
  57 +get_pid() {
  58 + PID=""
  59 + PIDFILE=$1
  60 + # check for pidfile
  61 + if [ -f $PIDFILE ] ; then
  62 + exec 6<&0
  63 + exec < $PIDFILE
  64 + read pid
  65 + PID=$pid
  66 + exec 0<&6 6<&-
  67 + fi
  68 +}
  69 +
  70 +get_apache_pid() {
  71 + get_pid $HTTPD_PIDFILE
  72 + if [ ! $PID ]; then
  73 + return
  74 + fi
  75 + if [ $PID -gt 0 ]; then
  76 + HTTPD_PID=$PID
  77 + fi
  78 +}
  79 +
  80 +get_mysql_pid() {
  81 + get_pid $MYSQL_PIDFILE
  82 + if [ ! $PID ]; then
  83 + return
  84 + fi
  85 + if [ $PID -gt 0 ]; then
  86 + MYSQL_PID=$PID
  87 + fi
  88 +}
  89 +
  90 +get_xvfb_pid() {
  91 + get_pid $XVFB_PIDFILE
  92 + if [ ! $PID ]; then
  93 + return
  94 + fi
  95 + if [ $PID -gt 0 ]; then
  96 + XVFB_PID=$PID
  97 + fi
  98 +}
  99 +
  100 +get_soffice_pid() {
  101 + get_pid $SOFFICE_PIDFILE
  102 + if [ ! $PID ]; then
  103 + return
  104 + fi
  105 + if [ $PID -gt 0 ]; then
  106 + SOFFICE_PID=$PID
  107 + fi
  108 +}
  109 +
  110 +get_lucene_pid() {
  111 + get_pid $LUCENE_PIDFILE
  112 + if [ ! $PID ]; then
  113 + return
  114 + fi
  115 + if [ $PID -gt 0 ]; then
  116 + LUCENE_PID=$PID
  117 + fi
  118 +}
  119 +
  120 +is_service_running() {
  121 + PID=$1
  122 + if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
  123 + RUNNING=1
  124 + else
  125 + RUNNING=0
  126 + fi
  127 + return $RUNNING
  128 +}
  129 +
  130 +is_mysql_running() {
  131 + get_mysql_pid
  132 + is_service_running $MYSQL_PID
  133 + RUNNING=$?
  134 + if [ $RUNNING -eq 0 ]; then
  135 + MYSQL_STATUS="mysql not running"
  136 + else
  137 + MYSQL_STATUS="mysql already running"
  138 + fi
  139 + return $RUNNING
  140 +}
  141 +
  142 +is_apache_running() {
  143 + get_apache_pid
  144 + is_service_running $HTTPD_PID
  145 + RUNNING=$?
  146 + if [ $RUNNING -eq 0 ]; then
  147 + HTTPD_STATUS="apache not running"
  148 + else
  149 + HTTPD_STATUS="apache already running"
  150 + fi
  151 + return $RUNNING
  152 +}
  153 +
  154 +is_xvfb_running() {
  155 + get_xvfb_pid
  156 + is_service_running $XVFB_PID
  157 + RUNNING=$?
  158 + if [ $RUNNING -eq 0 ]; then
  159 + XVFB_STATUS="Xvfb not running"
  160 + else
  161 + XVFB_STATUS="Xvfb already running"
  162 + fi
  163 + return $RUNNING
  164 +}
  165 +
  166 +is_soffice_running() {
  167 + get_soffice_pid
  168 + is_service_running $SOFFICE_PID
  169 + RUNNING=$?
  170 + if [ $RUNNING -eq 0 ]; then
  171 + SOFFICE_STATUS="openoffice not running"
  172 + else
  173 + SOFFICE_STATUS="openoffice already running"
  174 + fi
  175 + return $RUNNING
  176 +}
  177 +
  178 +is_lucene_running() {
  179 + get_lucene_pid
  180 + is_service_running $LUCENE_PID
  181 + RUNNING=$?
  182 + if [ $RUNNING -eq 0 ]; then
  183 + LUCENE_STATUS="lucene not running"
  184 + else
  185 + LUCENE_STATUS="lucene already running"
  186 + fi
  187 + return $RUNNING
  188 +}
  189 +
  190 +test_apache_config() {
  191 + if $HTTPD -t; then
  192 + ERROR=0
  193 + else
  194 + ERROR=8
  195 + echo "apache config test fails, aborting"
  196 + exit $ERROR
  197 + fi
  198 +}
  199 +
  200 +start_mysql() {
  201 + is_mysql_running
  202 + RUNNING=$?
  203 + if [ $RUNNING -eq 1 ]; then
  204 + echo "$0 $ARG: mysql (pid $MYSQL_PID) already running"
  205 + else
  206 + $MYSQL_START &
  207 + if [ $? -eq 0 ]; then
  208 + echo "$0 $ARG: mysql started at port 3306"
  209 + sleep 2
  210 + else
  211 + echo "$0 $ARG: mysql could not be started"
  212 + ERROR=3
  213 + fi
  214 + fi
  215 +}
  216 +
  217 +stop_mysql() {
  218 + NO_EXIT_ON_ERROR=$1
  219 + is_mysql_running
  220 + RUNNING=$?
  221 + if [ $RUNNING -eq 0 ]; then
  222 + echo "$0 $ARG: $MYSQL_STATUS"
  223 + if [ "x$NO_EXIT_ON_ERROR" != "xno_exit" ]; then
  224 + exit
  225 + else
  226 + return
  227 + fi
  228 + fi
  229 + echo "MySQL will prompt you for the root password."
  230 + if [ "x$MYSQL_PASSWORD" != "x" ]; then
  231 + MYSQL_STOP="$MYSQL_STOP --password=$MYSQL_PASSWORD"
  232 + fi
  233 + $MYSQL_STOP
  234 +
  235 + is_mysql_running
  236 + RUNNING=$?
  237 + if [ $RUNNING -eq 0 ]; then
  238 + echo "$0 $ARG: mysql stopped"
  239 + else
  240 + echo "$0 $ARG: mysql could not be stopped"
  241 + ERROR=4
  242 + fi
  243 +}
  244 +
  245 +start_apache() {
  246 + test_apache_config
  247 + is_apache_running
  248 + RUNNING=$?
  249 +
  250 + if [ $RUNNING -eq 1 ]; then
  251 + echo "$0 $ARG: httpd (pid $HTTPD_PID) already running"
  252 + else
  253 + if $HTTPD ; then
  254 + echo "$0 $ARG: httpd started at port 8080"
  255 + else
  256 + echo "$0 $ARG: httpd could not be started"
  257 + ERROR=3
  258 + fi
  259 +fi
  260 +}
  261 +
  262 +stop_apache() {
  263 + NO_EXIT_ON_ERROR=$1
  264 + test_apache_config
  265 + is_apache_running
  266 + RUNNING=$?
  267 +
  268 + if [ $RUNNING -eq 0 ]; then
  269 + echo "$0 $ARG: $HTTPD_STATUS"
  270 + if [ "x$NO_EXIT_ON_ERROR" != "xno_exit" ]; then
  271 + exit
  272 + else
  273 + return
  274 + fi
  275 + fi
  276 + get_apache_pid
  277 + if kill $HTTPD_PID ; then
  278 + echo "$0 $ARG: httpd stopped"
  279 + else
  280 + echo "$0 $ARG: httpd could not be stopped"
  281 + ERROR=4
  282 + fi
  283 +}
  284 +
  285 +start_xvfb() {
  286 + is_xvfb_running
  287 + RUNNING=$?
  288 +
  289 + if [ $RUNNING -eq 1 ]; then
  290 + echo "$0 $ARG: Xvfb (pid $XVFB_PID) already running"
  291 + else
  292 + $XVFB >/dev/null 2>&1 &
  293 + if [ $? -eq 0 ]; then
  294 + echo "$0 $ARG: Xvfb started on display $VDISPLAY"
  295 + ps ax | grep $XVFBBIN | awk {'print $1'} > $XVFB_PIDFILE
  296 + sleep 2
  297 + else
  298 + echo "$0 $ARG: xvfb could not be started"
  299 + ERROR=3
  300 + fi
  301 +fi
  302 +}
  303 +
  304 +stop_xvfb() {
  305 + NO_EXIT_ON_ERROR=$1
  306 + is_xvfb_running
  307 + RUNNING=$?
  308 +
  309 + if [ $RUNNING -eq 0 ]; then
  310 + echo "$0 $ARG: $XVFB_STATUS"
  311 + if [ "x$NO_EXIT_ON_ERROR" != "xno_exit" ]; then
  312 + exit
  313 + else
  314 + return
  315 + fi
  316 + fi
  317 + get_xvfb_pid
  318 + if killall $XVFBBIN ; then
  319 + echo "$0 $ARG: Xvfb stopped"
  320 + else
  321 + echo "$0 $ARG: Xvfb could not be stopped"
  322 + ERROR=4
  323 + fi
  324 +}
  325 +
  326 +start_soffice() {
  327 + is_soffice_running
  328 + RUNNING=$?
  329 +
  330 + if [ $RUNNING -eq 1 ]; then
  331 + echo "$0 $ARG: openoffice (pid $SOFFICE_PID) already running"
  332 + else
  333 + $SOFFICE >/dev/null 2>&1 &
  334 + if [ $? -eq 0 ]; then
  335 + echo "$0 $ARG: openoffice started at port $SOFFICE_PORT"
  336 + ps ax | grep $SOFFICEBIN | awk {'print $1'} > $SOFFICE_PIDFILE
  337 + sleep 2
  338 + else
  339 + echo "$0 $ARG: openoffice could not be started"
  340 + ERROR=3
  341 + fi
  342 +fi
  343 +}
  344 +
  345 +stop_soffice() {
  346 + NO_EXIT_ON_ERROR=$1
  347 + is_soffice_running
  348 + RUNNING=$?
  349 +
  350 + if [ $RUNNING -eq 0 ]; then
  351 + echo "$0 $ARG: $SOFFICE_STATUS"
  352 + if [ "x$NO_EXIT_ON_ERROR" != "xno_exit" ]; then
  353 + exit
  354 + else
  355 + return
  356 + fi
  357 + fi
  358 + get_soffice_pid
  359 + if killall $SOFFICEBIN ; then
  360 + echo "$0 $ARG: openoffice stopped"
  361 + else
  362 + echo "$0 $ARG: openoffice could not be stopped"
  363 + ERROR=4
  364 + fi
  365 +}
  366 +
  367 +start_lucene() {
  368 + is_lucene_running
  369 + RUNNING=$?
  370 +
  371 + if [ $RUNNING -eq 1 ]; then
  372 + echo "$0 $ARG: lucene (pid $LUCENE_PID) already running"
  373 + else
  374 + cd $INSTALL_PATH/knowledgeTree/bin/luceneserver
  375 + $LUCENE >/dev/null 2>&1 &
  376 + if [ $? -eq 0 ]; then
  377 + echo "$0 $ARG: lucene started"
  378 + ps ax | grep ktlucene.jar | awk {'print $1'} > $LUCENE_PIDFILE
  379 + sleep 2
  380 + else
  381 + echo "$0 $ARG: lucene could not be started"
  382 + ERROR=3
  383 + fi
  384 + cd $INSTALL_PATH
  385 +fi
  386 +}
  387 +
  388 +stop_lucene() {
  389 + NO_EXIT_ON_ERROR=$1
  390 + is_lucene_running
  391 + RUNNING=$?
  392 +
  393 + if [ $RUNNING -eq 0 ]; then
  394 + echo "$0 $ARG: $LUCENE_STATUS"
  395 + if [ "x$NO_EXIT_ON_ERROR" != "xno_exit" ]; then
  396 + exit
  397 + else
  398 + return
  399 + fi
  400 + fi
  401 + get_lucene_pid
  402 + if killall $JAVABIN ; then
  403 + echo "$0 $ARG: lucene stopped"
  404 + else
  405 + echo "$0 $ARG: lucene could not be stopped"
  406 + ERROR=4
  407 + fi
  408 +}
  409 +
  410 +help() {
  411 + echo "usage: $0 help"
  412 + echo " $0 (start|stop|restart)"
  413 + echo " $0 (start|stop|restart) apache"
  414 + echo " $0 (start|stop|restart) mysql"
  415 + echo " $0 (start|stop|restart) soffice"
  416 + echo " $0 (start|stop|restart) lucene"
  417 + echo " $0 (start|stop|restart) xvfb"
  418 + cat <<EOF
  419 +
  420 +help - this screen
  421 +start - start the service(s)
  422 +stop - stop the service(s)
  423 +restart - restart or start the service(s)
  424 +
  425 +EOF
  426 +exit 0
  427 +}
  428 +
  429 +noserver() {
  430 + echo -e "ERROR: $1 is not a valid server. Please, select 'mysql', 'apache', 'soffice', 'lucene' or 'xvfb'\n"
  431 + help
  432 +}
  433 +
  434 +[ $# -lt 1 ] && help
  435 +
  436 +if [ ! -z ${2} ]; then
  437 + [ "${2}" != "mysql" ] && [ "${2}" != "apache" ] && [ "${2}" != "soffice" ] && [ "${2}" != "lucene" ] && [ "${2}" != "xvfb" ] && noserver $2
  438 + SERVER=$2
  439 +fi
  440 +
  441 +
  442 +if [ "x$3" != "x" ]; then
  443 + MYSQL_PASSWORD=$3
  444 +fi
  445 +
  446 +
  447 +case $1 in
  448 + help) help
  449 + ;;
  450 + start)
  451 + if [ "${SERVER}" != "all" ]; then
  452 + start_${2}
  453 + else
  454 + start_mysql
  455 + start_apache
  456 + start_xvfb
  457 + sleep 2
  458 + start_soffice
  459 + start_lucene
  460 + fi
  461 + ;;
  462 + stop) if [ "${SERVER}" != "all" ]; then
  463 + stop_${2}
  464 + else
  465 + stop_lucene "no_exit"
  466 + stop_soffice "no_exit"
  467 + stop_xvfb "no_exit"
  468 + stop_apache "no_exit"
  469 + stop_mysql
  470 + fi
  471 + ;;
  472 + restart) if [ "${SERVER}" != "all" ]; then
  473 + stop_${2} "no_exit"
  474 + sleep 2
  475 + start_${2}
  476 + else
  477 + stop_lucene "no_exit"
  478 + stop_soffice "no_exit"
  479 + stop_xvfb "no_exit"
  480 + stop_apache "no_exit"
  481 + stop_mysql "no_exit"
  482 + start_mysql
  483 + start_apache
  484 + start_xvfb
  485 + sleep 2
  486 + start_soffice
  487 + start_lucene
  488 + fi
  489 + ;;
  490 +esac
  491 +
  492 +exit $ERROR
... ...