Memcached là gì??

How to install config memcache VestaCP. Memcached là một dịch vụ, người ta hay gọi là Memory Cache, Memcached lưu data theo dạng Key, Value lên Ram. Bạn có thể đưa mọi dữ liệu lên Ram thông qua Memcached. Ví dụ : Kết quả query của Database, hoặc là html pages.

Cài đặt và cấu hình

Cài đặt các thư viện cần thiết

yum install vim* wget gcc gcc-c++ make libevent libevent-* -y

Download và cài memcached

cd /usr/src
wget -O memcached-1.5.19.tar.gz https://memcached.org/latest
tar -zxvf memcached-1.5.19.tar.gz
cd memcached-1.5.19
./configure
make
make install

Download và cài đặt thư viện để PHP giao tiếp với Memcached

cd /usr/src
wget https://pecl.php.net/get/memcache-2.2.7.tgz
tar -zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
phpize
./configure --with-php-config=/usr/local/vesta/php/bin/php-config
make
make install

Cấu hình trong file php.ini và copy dòng extension bên dưới vào

Nếu bạn không biết file php.ini ở đâu bạn có thể dùng lệnh sau để tìm

[root@lab ~]# php -i | grep php.ini
Configuration File (php.ini) Path => /opt/remi/php56/root/etc
Loaded Configuration File => /opt/remi/php56/root/etc/php.ini

Kết quả trả về dòng Loaded, file nằm ở /opt/remi/php56/root/etc/php.ini nha bạn

mở file bằng lệnh vi /opt/remi/php56/root/etc/php.ini và thêm đoạn này vào trong file

extension="/usr/lib/php/extensions/no-debug-non-zts-20100525/memcache.so"

Tạo file cấu hình cho Memcached

Dùng lệnh vi để mở file này lên sau đó copy đoạn sau vào

vi /etc/memcached.conf
# Memory
-m 512
# default port
-p 11211
# user to run daemon nobody/apache/www-data
-u nobody
# only listen locally
-l 127.0.0.1

Tạo file startup

Mở file này bằng lệnh vi, vim hoặc nano cũng được tùy thói quen sử dụng của bạn.

vi /etc/init.d/memcached

Sau đó copy tất cả các đoạn bên dưới và kể cả dấu #

#!/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

Sau đó chạy lệnh này để phân quyền file

chmod +x /etc/init.d/memcached

Tiếp trên tạo file này và copy tất cả các mã bên dưới vào

vi /usr/local/bin/start-memcached
#!/usr/bin/perl -w
# start-memcached
# 2003/2004 - Jay Bonci <[email protected]>
# 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";
}

Sau đó phân quyền cho file bằng lệnh

chmod +x /usr/local/bin/start-memcached

Bước cuối cùng là start Memcached lên và auto start khi khởi động

# /etc/init.d/memcached restart
/sbin/chkconfig memcached on

 

Chúc bạn thực hiện thành công!