How to Install MemCached.1.4.10 with Sasl
================================================================================
cd /usr/src/
- wget http:
- tar xvfz libevent-1.4.9-stable.tar.gz
- cd libevent-1.4.9-stable
- ./configure; make; make install
================================================================================
cd /usr/src/
wget http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz
tar -xzf memcached-1.4.10.tar.gz
yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain
cd memcached-1.4.10
./configure --enable-sasl
make
make install
memcached -Bbinary -d -m 1024 10.0.127.154 -p 11211 -u nobody
Run memcached as service Create memcached config file:
vi /etc/memcached.conf
================================================================================
#Memory a user can use
-m 16
# default port
-p 11211
# user to run daemon nobody/apache/www-data
-u nobody
# only listen locally
-l 127.0.0.1
================================================================================
touch /etc/init.d/memcached
chmod +x /etc/init.d/memcached
================================================================================
#!/bin/bash
#
# memcached This shell script takes care of starting and stopping
# standalone memcached.
#. /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 $PIDFILEecho
return $RETVAL}stop() {
echo -n $"Shutting down $DESC: "killproc $NAME
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $PIDFILEreturn $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
esacexit $RETVAL
================================================================================
touch /usr/local/bin/start-memcached
chmod +x /usr/local/bin/start-memcached
================================================================================
#!/usr/bin/perl -w
# start-memcacheduse 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.pidmy $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 tipmy $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] directivesmy $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";
}
==================
[root@test init.d]# /etc/init.d/memcached restartShutting down memcached: [ OK ]Starting memcached: [ OK ]
=================
# /sbin/chkconfig memcached on# /sbin/chkconfig --list | grep memcachedmemcached 0: off 1: off 2: on 3: on 4: on 5: on 6: off
==========================================================================