जब मैं अपने Ubuntu सर्वर को रिबूट करता हूं तो मैं स्फिंक्स को कैसे पुनः आरंभ कर सकता हूं?


12

मैंने अपने ubuntu 9.04 सर्वर पर स्फिंक्स खोज का निर्माण और स्थापित किया।

जब मैं रिबूट करता हूं तो मैं स्फिंक्स डेमन को स्वचालित रूप से कैसे शुरू करता हूं?

जवाबों:


13

मैं स्फिंक्स नहीं जानता, लेकिन यहां मूल दृष्टिकोण है। निम्नलिखित सामग्री के साथ एक फ़ाइल /etc/init.d/searchd बनाएं ( यह स्क्रिप्ट भी है , लेकिन आपको शायद इसे थोड़ा समायोजित करने की आवश्यकता होगी):

#!/bin/bash

case "${1:-''}" in
  'start')
        # put the command to start sphinx
        # i.e., /usr/bin/searchd start or /usr/bin/searchd --daemon or whatever the command is
        ;;
  'stop')
        # stop command here
        ;;
  'restart')
        # restart command here
        ;;
  *)
        echo "Usage: $SELF start|stop|restart"
        exit 1
        ;;
esac

फिर निम्नलिखित पर अमल करें:

$ sudo update-rc.d searchd defaults

सेवा को मैन्युअल रूप से नियंत्रित करने के लिए:

$ sudo /etc/init.d/searchd <start|stop|restart>

इस स्क्रिप्ट ने पूरी तरह से काम किया। रिकॉर्ड के लिए, यहां स्टार्ट / स्टॉप / रिस्टार्ट कमांड हैं जो मैंने उपयोग किया था। यह उबंटू हार्डी सर्वर पर है, और मैंने स्रोत से स्फिंक्स 0.9.8.1-रिलीज़ स्थापित किया है। स्टार्ट / usr / लोकल / बिन / सर्चड स्टॉप / usr / लोकल / बिन / सर्चड - स्टॉप रिस्टार्ट / usr / लोकल / बिन / सर्चड --stop && / usr / लोकल / बिन / सर्चड
Apreche

एक जादू की तरह काम किया। सावधानी के एक शब्द: सुनिश्चित करें कि खोज फ़ाइल में उचित अनुमतियाँ हैं।
डेविड

1

हमने डेबियन सिस्टम पर एक ग्राहक के लिए स्फिंक्स को तैनात किया, और प्रक्रियाओं को प्रबंधित करने के लिए रनिट का उपयोग किया । हमें एक विशेष init स्क्रिप्ट लिखने की ज़रूरत नहीं थी, और चूंकि हम अन्य प्लेटफार्मों (मुख्य रूप से CentOS / RHEL) पर रनिट का उपयोग कर रहे थे, यह पूरी तरह से पोर्टेबल था।


1

स्फिंक्स का संस्करण जो लेखन के समय ubuntu के लिए पैक किया गया है (0.99) के नीचे स्टार्टअप स्क्रिप्ट है।

मैंने इसे 2.0.1 बीटा के लिए फिर से इस्तेमाल किया, जिसे मैंने स्रोत से संकलित किया, बस लाइन बदल रहा था DAEMON=/usr/local/..और यह मेरे लिए काम करता है।

#! /bin/sh
#
#       Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#       Modified for Debian
#       by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
#               Modified for sphinx by Radu Spineanu <radu@debian.org>
#
#

### BEGIN INIT INFO
# Provides:          sphinxsearch
# Required-Start:    $local_fs $remote_fs $syslog $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Fast standalone full-text SQL search engine
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sphinx/bin/searchd
NAME=sphinxsearch
DESC=sphinxsearch

test -x $DAEMON || exit 0

LOGDIR=/var/log/sphinxsearch
PIDFILE=/var/run/searchd.pid
DODTIME=1                   # Time to wait for the server to die, in seconds
                            # If this value is set too low you might not
                            # let some servers to die gracefully and
                            # 'restart' will not work

# Include sphinxsearch defaults if available
if [ -f /etc/default/sphinxsearch ] ; then
    . /etc/default/sphinxsearch
fi

if [ "$START" != "yes" ]; then
  echo "To enable $NAME, edit /etc/default/sphinxsearch and set START=yes"
  exit 0
fi


set -e

running_pid()
{
    # Check if a given process pid's cmdline matches a given name
    pid=$1
    name=$2
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
    # Is this the expected child?
    [ "$cmd" != "$name" ] &&  return 1
    return 0
}

running()
{
# Check if the process is running looking at /proc
# (works for all users)

    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    # Obtain the pid and check it against the binary name
    pid=`cat $PIDFILE`
    running_pid $pid $DAEMON || return 1
    return 0
}

force_stop() {
# Forcefully kill the process
    [ ! -f "$PIDFILE" ] && return
    if running ; then
        kill -15 $pid
        # Is it really dead?
        [ -n "$DODTIME" ] && sleep "$DODTIME"s
        if running ; then
            kill -9 $pid
            [ -n "$DODTIME" ] && sleep "$DODTIME"s
            if running ; then
                echo "Cannot kill $LABEL (pid=$pid)!"
                exit 1
            fi
        fi
    fi
    rm -f $PIDFILE
    return 0
}

case "$1" in
  start)
        echo -n "Starting $DESC: "

        # Check if we have the configuration file
        if [ ! -f /etc/sphinxsearch/sphinx.conf ]; then
            echo "Please create an /etc/sphinxsearch/sphinx.conf configuration file."
            echo "Templates are in the /etc/sphinxsearch/ directory."
            exit 0
        fi

        start-stop-daemon --start --exec ${DAEMON}
        if running ; then
            echo "$NAME."
        else
            echo " ERROR."
        fi
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
            --exec $DAEMON
        echo "$NAME."
        ;;
  force-stop)
        echo -n "Forcefully stopping $DESC: "
        force_stop
        if ! running ; then
            echo "$NAME."
        else
            echo " ERROR."
        fi
        ;;
  restart)
    echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
            --exec $DAEMON
        [ -n "$DODTIME" ] && sleep $DODTIME
        start-stop-daemon --start --exec ${DAEMON}
        echo "$NAME."
        ;;

  status)
    echo -n "$LABEL is "
    if running ;  then
        echo "running"
    else
        echo " not running."
        exit 1
    fi
    ;;
  *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
    exit 1
    ;;
esac

exit 0

यह भी मेरे लिए काम किया!
ChrisInCambo

0

मैं वास्तव में स्फिंक्स को नहीं जानता, लेकिन ऑनलाइन मैनुअल को देखते हुए, आपको डेमॉन को चलाने के लिए एक स्टार्टअप स्क्रिप्ट की आवश्यकता है। आमतौर पर यह /etc/init.d में प्रविष्टि बनाकर और उपयुक्त /etc/rcX.d निर्देशिका में लिंक करके किया जाता है। विवरण के लिए /etc/init.d में README फ़ाइल की जाँच करें।

अगर और कुछ नहीं, तो इस तरह से कुछ जल्दी और गंदा जवाब है:

$ cat > /etc/init.d/sphinx
cd /usr/local/sphinx/etc
/usr/local/sphinx/bin/searchd
^D
$ ln -s /etc/init.d/sphinx /etc/init.d/rc3.d/S99sphinx

0

एक छोटी स्क्रिप्ट फ़ाइल बनाएं (बैश, शायद) जिसमें निम्न पंक्ति के बराबर है:

/ पाथ / टू / स्फिंक्स / इंस्टॉलेशन / खोज --config /path/to/sphinx/config/sphinx.conf &

फिर स्क्रिप्ट को रूट के रूप में /etc/init.d पर ले जाएं, और स्क्रिप्ट को चोद दें ("chmod + x myscript.sh")


0

/Etc/init.d निर्देशिका में एक पुनरारंभ स्क्रिप्ट जोड़ें।


0

मैं और भी सरल उपाय सुझाऊंगा:

बस जोड़ने / usr / bin / searchd को /etc/rc.local दर्शाने वाली पंक्ति से पहले बाहर निकलने 0


0

यदि आप अपने रेल आवेदन में स्फिंक्स का उपयोग करते हैं, तो यह एक आसान तरीका है जब भी मणि के साथ इसे प्रबंधित करें ।

रयान बेट्स ने इसके बारे में एक बहुत अच्छा स्क्रैंकास्ट बनाया। यह साइट मुझे यहां एक से अधिक लिंक नहीं डालने देगी लेकिन मैं इसे सुझाता हूं।


0

इस मंच पोस्ट पर एक नज़र डालें: http://sphinxsearch.com/forum/view.html?id=3568#18044

मूल रूप से आप एक क्रॉन जॉब जोड़ सकते हैं जो कमांड लाइन से इसे निष्पादित करके रिबूट पर स्फिंक्स शुरू करेगा:

Crontab -e

फिर निम्नलिखित जोड़ें:

@reboot searchd --config /path/to/config.conf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.