1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

How to: Basic Elasticsearch installation. (Debian/Ubuntu)

Discussion in 'Enhanced Search Support' started by Slavik, Jan 18, 2012.

  1. Slavik

    Slavik XenForo Moderator Staff Member

    Basic Elasticsearch Installation (Debian/Ubuntu)

    This guide is provided to show how to do a basic (vanilla get up and go) install of Elasticsearch (0.18.7), the Elasticsearch Service Wrapper and the required Java Runtime Environment (JRE) (1.7.0_02) on Debian/Ubuntu. This guide will not cover running a dedicated Elasticsearch user.

    For RHEL/SUSE users, a guide can be found here.

    This guide assumes the user has basic knowledge of SSH and prior to starting the steps below has logged in as root.

    Please note, whilst this is a simple and easy setup, I take no responsibility for any damages or losses that may occur to your system by following the steps below. If you are unsure at any stage, please ask for assistance or seek the help of a qualified Linux Systems Administrator.

    Installing the JRE
    Type the following commands into your SSH terminal.

    Code:
    apt-get install openjdk-7-jre-headless
    java -version
    
    Assuming everything was done correctly, you should get a similar output to:

    Code:
    # java -version
    java version "1.7.0_02"
    Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)
    
    Install Elasticsearch

    Code:
    cd /
    curl -OL -k http://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.18.7.zip
    unzip elasticsearch-0.18.7.zip
    mv elasticsearch-0.18.7 /usr/local/elasticsearch
    
    Install the Elasticsearch Service Wrapper

    Create a new file in /etc/init.d/ named elasticsearch

    Open /etc/init.d/elasticsearch and paste the following code in.

    Code:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          elasticsearch
    # Required-Start:    $all
    # Required-Stop:    $all
    # Default-Start:    2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Starts elasticsearch
    # Description:      Starts elasticsearch using start-stop-daemon
    ### END INIT INFO
     
    ES_HOME=/usr/local/elasticsearch
    ES_MIN_MEM=256m
    ES_MAX_MEM=1g
    DAEMON=$ES_HOME/bin/elasticsearch
    NAME=elasticsearch
    DESC=elasticsearch
    PID_FILE=/var/run/$NAME.pid
    LOG_DIR=/var/log/$NAME
    DATA_DIR=/var/lib/$NAME
    WORK_DIR=/tmp/$NAME
    CONFIG_FILE=/etc/$NAME/elasticsearch.yml
    DAEMON_OPTS="-p $PID_FILE -Des.config=$CONFIG_FILE -Des.path.home=$ES_HOME -Des.path.logs=$LOG_DIR -Des.path.data=$DATA_DIR -Des.path.work=$WORK_DIR"
     
     
    test -x $DAEMON || exit 0
     
    set -e
     
    case "$1" in
      start)
        echo -n "Starting $DESC: "
        mkdir -p $LOG_DIR $DATA_DIR $WORK_DIR
        if start-stop-daemon --start --pidfile $PID_FILE --startas $DAEMON -- $DAEMON_OPTS
        then
            echo "started."
        else
            echo "failed."
        fi
        ;;
      stop)
        echo -n "Stopping $DESC: "
        if start-stop-daemon --stop --pidfile $PID_FILE
        then
            echo "stopped."
        else
            echo "failed."
        fi
        ;;
      restart|force-reload)
        ${0} stop
        sleep 0.5
        ${0} start
        ;;
      *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
    esac
     
    exit 0
    
    Save and Exit.

    Make the file executable.

    Code:
    chmod +x /etc/init.d/elasticsearch
    
    Install the script

    Code:
    update-rc.d elasticsearch defaults
    
    Basic Configuration

    You should do some basic configuration of Elasticsearch before installing the addon in XenForo.


    1) Create a file at /etc/elasticsearch/ named elasticsearch.yml and paste the following in.

    Code:
    cluster.name: PUT-SOMETHING-UNIQUE-HERE
    
    Save and Close


    2) Open up /etc/init.d/elasticsearch on line 13+14 edit

    Code:
    ES_MIN_MEM=256m
    ES_MAX_MEM=1g 
    To a number suitable for the size of your forum.

    I reccomend approximately 256mb for the MIN_MEM and 1 GB for the MAX_MEM per 1 million posts on your forum.

    1 Million Posts: 256m:1g
    2 Million Posts: 512m:2g
    3 Million Posts: 768m:3g
    4 Million Posts: 1024m:4g
    etc

    This will not mean the service will use all that available memory, however it will have it at its disposal if required.

    So for example a 3 Million Post forum would edit

    Code:
    ES_MIN_MEM=256m
     
    ES_MAX_MEM=1g
    to

    Code:
    ES_MIN_MEM=768m
     
    ES_MAX_MEM=3g
    Save and Exit.


    3) Optional - Move the Elasticsearch data directory.

    Your linux install may be configured in such a way that your install partition is only a few Gb in size, and placing a large Elasticsearch index there is not ideal.

    In which case you will want to move the index directory to a different, larger, location (in this example /var/elasticsearch)

    Code:
    cd /var
    mkdir elasticsearch
    
    Open up /usr/local/elasticsearch/config/elasticsearch.yml on line 143 edit

    Code:
    # path.data: /path/to/data
    
    to

    Code:
    path.data: /var/elasticsearch
    

    Save and Exit


    4) Restart the Elasticsearch Service

    In SSH type

    Code:
    /etc/init.d/elasticsearch restart
    You should get the following output

    Code:
    /etc/init.d/elasticsearch restart
    Stopping ElasticSearch...
    Stopped ElasticSearch.
    Starting ElasticSearch...
    Waiting for ElasticSearch......
    running: PID: xxxxx
    
    Elasticsearch is now runing with your updated config.

    Install the XenForo Enhanced Search Addon

    1) Turn your board off into maintainance mode*

    2) Download the addon from your customer area at http://xenforo.com/customers/

    3) Follow the instructions found at http://xenforo.com/help/enhanced-search/

    4) Wait for your indexes to be rebuilt

    5) Open your board.

    *You may leave your board open during the re-index process, however until items have been indexed they will be unavailable to your users if searched for. Likewise the indexing process is rather server intensive, and as such this is my personal recomendation and not a requirement.


    Congratulations. Your board should now be running XenForo Enhanced Search.
     
  2. ragtek

    ragtek Guest

    thx for this:)

    what about a bash script doing this?:D
    would be faster as c&p^^
     
  3. Slavik

    Slavik XenForo Moderator Staff Member

    Maybe if I get bored one day :)
     
    GeeksChat, ceribik and ragtek like this.
  4. TBolley

    TBolley Active Member

    Onto Last Debian 6.0.3 64 Bit cant be found openjdk-7-jre-headless
     
  5. Slavik

    Slavik XenForo Moderator Staff Member

    Try

    Code:
    apt-get install openjdk-6-jre-headless
    
     
    TBolley and GeeksChat like this.
  6. TBolley

    TBolley Active Member

    works thanx
     
  7. TBolley

    TBolley Active Member

    get some other problem

    Code:
    root@Debian:/var# /etc/init.d/elasticsearch start
    Starting elasticsearch: start-stop-daemon: --start needs --exec or --startas
    Try 'start-stop-daemon --help' for more information.
    /etc/init.d/elasticsearch: 65: --startas: not found
    failed.
    

    found problem
     
  8. TBolley

    TBolley Active Member

  9. anonymous

    anonymous Member

    Sounds to me you didn't
    chmod +x /etc/init.d/elasticsearch

    Also please tell me you've setup another user and aren't running everything as root :(
     
    Slavik likes this.
  10. Slavik

    Slavik XenForo Moderator Staff Member


    Did you make the file executable?

    The guides dont cover setting up as other users, mainly as it would also have to explain editing open file limits etc, which, for most people just starting out on elasticsearch would be a bit too complex.
     
  11. TBolley

    TBolley Active Member

    hmmm dont work for me under Debian 6.0.3 64 Bit, running as root
     
  12. Slavik

    Slavik XenForo Moderator Staff Member

    I will re-image my debian server from 1+1 on Monday back to default and see if it installs correctly without issue following this guide, I may have missed something out but I don't thinkso.
     
  13. Rudy

    Rudy Well-Known Member

    Some hosts don't allow root access, and having fought with this for weeks, it won't run as a service. What other options are there?

    There is a Java Service Wrapper which the folks at elasticsearch.org recommend but the setup seems very convoluted. Has anyone tried it? (EDIT: Never mind--it requires root also.)

    I have our host looking into it--they may have to handle installation so it starts properly.
     
  14. Adam Howard

    Adam Howard Well-Known Member

    The easier way to install this is of course is to download and run the DEB file for Debian / Ubuntu

    http://www.elasticsearch.org/download/

    From there you can configure it.

    I've done a few of these types of installs without issue :)
     
  15. Andy.N

    Andy.N Well-Known Member

    How to upgrade elastic to latest version?
     
  16. DRaver

    DRaver Active Member

    There is no parameter:

    ES_MIN_MEM=256m
    ES_MAX_MEM=1g

    I found only :

    # Heap Size (defaults to 256m min, 1g max)
    #ES_HEAP_SIZE=2g

    # Heap new generation
    #ES_HEAP_NEWSIZE=

    # max direct memory
    #ES_DIRECT_SIZE=

    # Additional Java OPTS
    #ES_JAVA_OPTS=

    # Maximum number of open files
    MAX_OPEN_FILES=65535

    # Maximum amount of locked memory
    #MAX_LOCKED_MEMORY=
     
  17. Slavik

    Slavik XenForo Moderator Staff Member


    Those are the new settings you'll need to alter accordingly.
     
  18. DRaver

    DRaver Active Member

    ??? and what is what?

    What must i edit in the new setting to work with: 4 Million Posts?
     
  19. Slavik

    Slavik XenForo Moderator Staff Member


    ES_HEAP_SIZE=4g

    (Note the removed #)

    Don't start altering the other settings.
     
  20. Mouth

    Mouth Well-Known Member


    Specifically, if you choose to replace /etc/init.d/elasticsearch with the one from the package you will need to to review and edit your /etc/default/elasticsearch as this becomes the new location for configuration settings
     
    SneakyDave likes this.

Share This Page