[Memcached 설치]
※ Reference
http:
http:
※ 설치
(root권한)
sudo yum install libevent libevent-devel
(user권한)
cd dist
wget http:
tar -zxvf memcached-
1
.x.x.tar.gz
cd memcached-
1
.x.x
./configure --prefix=/usr/local/memcached --with-libevent=/usr/lib/
make && make test
(root권한)
sudo make install
※ 설정
cd /etc
sudo vi memcached.conf
-m
16
-p
11311
-u nobody
-l
127.0
.
0.1
※ init script 생성
(user권한)
mkdir -p /home/USER/dist/memcached_script
cd /home/USER/dist/memcached_script
wget http:
tar xvfz memcached_script.tar.gz
chmod
755
/usr/local/bin/start-memcached
chmod
755
/etc/init.d/memcached
(root 권한)
cd /usr/local/bin
sudo ln -s /usr/local/memcached/bin/memcached memcached
cd /home/USER/dist/memcached_script
sudo mv start-memcached /usr/local/bin/start-memcached
sudo mv memcached /etc/init.d/memcached
※ 실행
sudo /usr/local/bin/start-memcached or
/usr/local/memcached/bin/memcached -d -r -m
64
-l 서버IP(
10.101
.
254.223
) -p
11211
- 실행 권한 root or user
- 단일 서버에 Multi instance 실행
/usr/local/memcached/bin/memcached -d -r -m
64
-l 서버IP(
10.101
.
254.223
) -p
11211
/usr/local/memcached/bin/memcached -d -r -m
64
-l 서버IP(
10.101
.
254.223
) -p
11311
/usr/local/memcached/bin/memcached -d -r -m
64
-l 서버IP(
10.101
.
254.223
) -p
11411
※ 실행 스크립트
#!/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/\#.*
$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"
;
}