Daemon scripts for memcached on CentOS

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Daemon scripts for memcached on CentOS

    CopyPasted from: Daemon scripts for memcached - Blogs - vBulletin SEO Forums

    Daemon scripts for memcached

    Create the configuration file

    Code:
    touch /etc/memcached.conf
    And put in:

    Code:
    #Memory a user
    -m 16
    # default port
    -p 11211
    # user to run daemon nobody/apache/www-data
    -u nobody
    # only listen locally
    -l 127.0.0.1
    Create the startups files

    Code:
    touch /etc/init.d/memcached
    chmod +x /etc/init.d/memcached
    Edit with your favorite editor and paste this code

    Code:
    #!/bin/bash
    #
    # memcached    This shell script takes care of starting and stopping
    #              standalone memcached.
    #
    # chkconfig: - 80 12
    # description: memcached is a high-performance, distributed memory
    #              object caching system, generic in nature, but
    #              intended for use in speeding up dynamic web
    #              applications by alleviating database load.
    # processname: memcached
    # config: /etc/memcached.conf
    # Source function library.
    . /etc/rc.d/init.d/functions
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/local/bin/memcached
    DAEMONBOOTSTRAP=/usr/local/bin/start-memcached
    DAEMONCONF=/etc/memcached.conf
    NAME=memcached
    DESC=memcached
    PIDFILE=/var/run/$NAME.pid
    [ -x $DAEMON ] || exit 0
    [ -x $DAEMONBOOTSTRAP ] || exit 0
    RETVAL=0
    start() {
     echo -n $"Starting $DESC: "
     daemon $DAEMONBOOTSTRAP $DAEMONCONF
     RETVAL=$?
     [ $RETVAL -eq 0 ] && touch $PIDFILE
     echo
     return $RETVAL
    }
    stop() {
     echo -n $"Shutting down $DESC: "
     killproc $NAME
     RETVAL=$?
     echo
     [ $RETVAL -eq 0 ] && rm -f $PIDFILE
     return $RETVAL
    }
    # See how we were called.
    case "$1" in
     start)
      start
      ;;
     stop)
      stop
      ;;
     restart|reload)
      stop
      start
      RETVAL=$?
      ;;
     status)
      status $prog
      RETVAL=$?
      ;;
     *)
      echo $"Usage: $0 {start|stop|restart|status}"
      exit 1
    esac
    exit $RETVAL
    Code:
    touch /usr/local/bin/start-memcached
    chmod +x  /usr/local/bin/start-memcached
    Edit with your favorite editor and paste this code


    Code:
    #!/usr/bin/perl -w
    # start-memcached
    # 2003/2004 - Jay Bonci <jaybonci@debian.org>
    # This script handles the parsing of the /etc/memcached.conf file
    # and was originally created for the Debian distribution.
    # Anyone may use this little script under the same terms as
    # memcached itself.
    use strict;
    if ($> != 0 and $< != 0) {
     print STDERR "Only root wants to run start-memcached.\n";
     exit;
    }
    my $etcfile = shift || "/etc/memcached.conf";
    my $params = [];
    my $etchandle; 
    # This script assumes that memcached is located at /usr/bin/memcached, and
    # that the pidfile is writable at /var/run/memcached.pid
    my $memcached = "/usr/local/bin/memcached";
    my $pidfile = "/var/run/memcached.pid";
    # If we don't get a valid logfile parameter in the /etc/memcached.conf file,
    # we'll just throw away all of our in-daemon output. We need to re-tie it so
    # that non-bash shells will not hang on logout. Thanks to Michael Renner for 
    # the tip
    my $fd_reopened = "/dev/null";
    sub handle_logfile {
     my ($logfile) = @_;
     $fd_reopened = $logfile;
    }
    sub reopen_logfile {
     my ($logfile) = @_;
     open *STDERR, ">>$logfile";
     open *STDOUT, ">>$logfile";
     open *STDIN, ">>/dev/null";
     $fd_reopened = $logfile;
    }
    # This is set up in place here to support other non -[a-z] directives
    my $conf_directives = {
     "logfile" => \&handle_logfile
    };
    if (open $etchandle, $etcfile) {
     foreach my $line (<$etchandle>) {
      $line =~ s/\#.*//go;
      $line = join ' ', split ' ', $line;
      next unless $line;
      next if $line =~ /^\-[dh]/o;
      if ($line =~ /^[^\-]/o) {
       my ($directive, $arg) = $line =~ /^(.*?)\s+(.*)/; 
       $conf_directives->{$directive}->($arg);
       next;
      }
      push @$params, $line;
     }
    }
    unshift @$params, "-u root" unless (grep $_ eq '-u', @$params);
    $params = join " ", @$params;
    if (-e $pidfile) {
     open PIDHANDLE, "$pidfile";
     my $localpid = <PIDHANDLE>;
     close PIDHANDLE;
     chomp $localpid;
     if (-d "/proc/$localpid") {
      print STDERR "memcached is already running.\n"; 
      exit;
     } else {
      `rm -f $localpid`;
     }
    }
    my $pid = fork();
    if ($pid == 0) {
     reopen_logfile($fd_reopened);
     exec "$memcached $params";
     exit(0);
    } elsif (open PIDHANDLE,">$pidfile") {
     print PIDHANDLE $pid;
     close PIDHANDLE;
    } else {
     print STDERR "Can't write pidfile to $pidfile.\n";
    }
    Test the scripts

    Code:
    [root@srv01 init.d]# /etc/init.d/memcached restart
    Shutting down memcached:                                   [  OK  ]
    Starting memcached:                                        [  OK  ]
    Review if the conf file is well parsed

    Code:
    [root@srv01 init.d]# ps aux  | grep memcached
    nobody    5966  0.5  0.3 18248 16444 pts/0   S    13:55   0:00 /usr/local/bin/memcached -u root -m 16 -p 11211 -u nobody -l 127.0.0.1
    Add memcached as autostart daemon


    Code:
    [root@srv01 init.d]# /sbin/chkconfig memcached on
    [root@srv01 init.d]# /sbin/chkconfig --list | grep memcached
    memcached       0:off   1:off   2:on    3:on    4:on    5:on    6:off
    Advertise your mobile site for FREE with AdTwirl

Working...
X