Cara install Memcached di CentOS 6

Tutorial kali ini request dari mbak Shafira yaitu bagaimana cara install Memcached di CentOS 6 untuk VPSnya. Ya… saya turuti, pagi – pagi nunggu saatnya berangkat kerja sambil seruput kopi. Hehe. 😛 Memang tidak lama kok prosesnya, yakin sekali mencoba setelahnya minimal tahu harus ngapain.

Sedikit deskripsi dulu mengenai apa itu Memcached? Ini adalah paket aplikasi dimana cache data dari program yang mendukungnya akan disimpan dalam memori (RAM). Jadi selama kapasitas RAM anda mencukupi maka bisa dimaksimalkan penggunaannya. Kelebihannya adalah – misal PHP dan MySQL – akan mengambil cache halaman websitenya dari memori yang jauh lebih cepat dibandingkan dari harddisk. Tidak perlu ada delay gara – gara menunggu proses baca tulis harddisk yang masih mekanik menggunakan jarum. Bahkan ini bisa diskalakan secara horisontal karena d diakhir kata memcached itu untuk distributed, jadi bisa dibagi ke beberapa server sekaligus. Cocok buat HA (High-Availability) dan mengurangi beban server.

Ya, sudah cukup basa – basinya mari ke fokus pembahasan, yang saya gunakan adalah CentOS release 6.7 (Final) 32-bit. Nah… Memcached ini tidak ada di repositori standar, jadi kita harus menambahkan EPEL Repository dulu:
Untuk CentOS 6 32-bit

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk Centos 6 64-bit

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Kemudian install saja Memcached dan dependensinya:

yum install memcached

Ya, sudah selesai memang proses instalasinya. Tapi kita belum mensetting dan mengaktifkannya.

Sekarang kita akan mengedit konfigurasi memcached:

nano /etc/sysconfig/memcached

Kalau tidak ketemu ganti nama filenya dengan memcached.conf.

Nah… ini adalah isi konfigurasi awal untuk pembelajaran dulu, setelah itu bisa anda utak – atik:

# Aktif di port 11211
PORT="11211"
# Dijalankan sebagai daemon memcached
USER="memcached"
# Maksimal koneksi bersamaan berjumlah 1024
MAXCONN="1024"
# Ukuran memori terpakai maksimal adalah 256MB, satuannya adalah Mega Byte kalau ingin diganti.
CACHESIZE="256"
#Setting alamat IP server Memcached, biasanya di localhost (127.0.0.1). Ini kalau tidak disetting maka bisa diakses umum dari port yang telah ditentukan.
OPTIONS="-l 127.0.0.1"

Saya berikan komentar supaya tidak lupa fungsinya apa. 😉

Sudah semua? Mari kita jalankan service Memcached:

service memcached start

Silahkan dicek lewat top apakah sudah ada proses bernama memcached, ini yang paling sederhana caranya.

Secara default memcached tidak dijalankan saat booting, jadi kalau anda merestart server ya harus diaktifkan manual lagi. Repot kan? Ya, kita tambahkan saja kalau harus ikut dipanggil saat masuk ke sistem operasi:

chkconfig --levels 235 memcached on

Masih belum selesai lho, sekarang kita perlu menambahkan dukungan aplikasi agar bisa memanfaatkan Memcached. Misal PHP maka perlu menginstall PECL baru:

yum install php-pecl-memcached

Selanjutnya edit php.ini, cari Session dan samakan:

[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

Nanti seluruh sesi PHP akan disimpan lewat memcached.

Akhirnya restart software web server anda, misal Apache:

service httpd restart

atau Nginx:

service nginx restart

Kalau ada aplikasi web yang mendukung langsung Memcached akan terdeteksi otomatis. Di WordPress anda harus menginstall plugin cache seperti W3 Total Cache.

Kalau ada pertanyaan atau koreksi silahkan diajukan di komentar. Dan saya telat berangkat kerja. Haha. 😀

Semoga bermanfaat. 😉

Tambahan

Untuk Apache mungkin akan ada pesan error:

Starting httpd: httpd: apr_sockaddr_info_get() failed for servernesia
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Silahkan edit httpd.conf, kemudian cari dan modifikasi menjadi:

ServerName localhost

Hilangkan simbol komentar (#) diawal ServerName.

25 Comments

  1. trims tutorialnya mas chandra,
    untuk libmemcached nggak perlu di instal ya mas? apa ada aplikasi grafis untuk monitor memcached ini? trims.

    1. Sama – sama mbak, saya juga butuh topik pembahasan kok. 🙂 Jadi pertanyaan atau permintaan yang masuk saya hargai, biar melatih otak juga. Hehe. 😀 Kalau disimpan sendiri nanti lupa soalnya. Blog ini awalnya dari dokumentasi pribadi di notepad, dan saya asal saja menyimpannya jadi selain tidak rapi ya tidak bisa dicari. 🙁

      Untuk libmemcached itu dependensinya mbak, otomatis diinstall nanti dan tampaknya anda sudah sadar dari komentar yang nyusul. Hehe. 🙂

      Untuk melihat statistik penggunaan memcached bisa coba jalankan perintah berikut mbak:

      echo stats | nc 127.0.0.1 11211

      Asumsinya memcached aktif di localhost dan masih menggunakan port defaultnya.

      Nanti akan muncul balasan informasi seperti berikut:

      STAT pid 6456
      STAT uptime 87675
      STAT time 1446681453
      STAT version 1.4.4
      STAT pointer_size 32
      STAT rusage_user 3.111526
      STAT rusage_system 2.979547
      STAT curr_connections 10
      STAT total_connections 15
      STAT connection_structures 11
      STAT cmd_get 0
      STAT cmd_set 0
      STAT cmd_flush 0
      STAT get_hits 0
      STAT get_misses 0
      STAT delete_misses 0
      STAT delete_hits 0
      STAT incr_misses 0
      STAT incr_hits 0
      STAT decr_misses 0
      STAT decr_hits 0
      STAT cas_misses 0
      STAT cas_hits 0
      STAT cas_badval 0
      STAT auth_cmds 0
      STAT auth_errors 0
      STAT bytes_read 52
      STAT bytes_written 2369
      STAT limit_maxbytes 67108864
      STAT accepting_conns 1
      STAT listen_disabled_num 0
      STAT threads 4
      STAT conn_yields 0
      STAT bytes 0
      STAT curr_items 0
      STAT total_items 0
      STAT evictions 0
      END

      Agak primitif memang tapi sudah mampu menjelaskan status memcached di servernya. Ada satu lagi sebenarnya, mungkin saya buatkan satu artikel khusus mengenai statistik memcached dan cara membacanya.

      Kalau muncul pesan error -bash: nc: command not found maka langsung saja install paket aplikasi yang tidak ada: yum install nc.

      1. lebih simpel dengan perintah yum install php-pecl-memcached 😀 baru tahu dari tutorial mas chandra karena sebelumnya saya compile dan agak lama prosesnya :

        yum groupinstall "Development tools" -y
        yum install zlib zlib-devel -y
        yum install php php-devel php-pear -y
        yum install cyrus-sasl-devel -y
        
        cd /usr/local/src
        wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
        tar -zxvf libmemcached-1.0.18.tar.gz
        cd libmemcached-1.0.18
        ./configure
        make
        make install
        
        pecl install memcached
        echo "extension=memcached.so" >> /etc/php.d/memcached.ini

        untuk port 11211 nggak perlu masuk iptables ya? karena sebelumnya juga saya jalankan perintah ini :

        iptables -A INPUT -m state --state NEW -p tcp --dport 11211 -j ACCEPT
        service iptables save
        service iptables restart
        service memcached restart

        semuanya dapat dari hasil gogling tapi dari semuanya lebih simpel tutorial mas chandra 🙂

      2. Ahaha saya orangnya malas mbak, kalau ada yang mudah ngapain susah – susah. 😛 Kalau compile dari source berarti ingin versi terbarunya, karena yang ada di repository terutama CentOS itu mengutamakan kestabilan bukan fitur, jadi versinya bisa lebih lama dari yang ada sekarang ini.

        Oh iya, ada aturan iptablesnya. Sebenarnya tergantung aturan iptables juga, kalau tidak salah di CentOS hanya beberapa port penting yang dibuka secara default. Sisanya akan ditolak otomatis. Itu yang anda tambahkan maksudnya terima semua koneksi TCP ke port 11211 yang digunakan server memcached. Dan ini baru ada gunanya kalau anda ingin menghubungkan memcached dari luar servernya.

    1. Boleh mbak, tapi saya juga masih belajaran. Dulu pernah tapi seperti biasa sudah berdebu. Haha. Saya saja gagal pas buat init scriptnya Nginx.

      Akhirnya saya catat dulu masalah yang dialami pas menambahkan PageSpeed Module ke Nginx, dimulai dari init script nginx. Haha. Soalnya harus dibuat manual jika installnya dari source bukan dari repository. Kalau berkenan ikut menambahkan mbak, saya yakin milik saya bukan yang terbaik dan pasti bisa digunakan. 😀

      Update 9 November 2015:

      Silahkan dicek mbak tutorial PageSpeed Modulenya: https://servernesia.com/566/mempercepat-nginx-pagespeed-module/

    1. Haha… pas baca – baca soal Memcached sempat melirik Redis juga mbak. Kok katanya bisa lebih baik performanya ya. Penasaran juga aslinya. 🙂

      Spesifikasi stacknya standar Nginx ya mbak? Nanti malam coba saya lihat dan semoga bisa diujicoba dengan lancar.

      1. iya mas karna info dari mas chandra memcached masih belum sepenuhnya support php 7 untuk centos jadi cari2 alternatif lainnya, yup LEMP stack 🙂

      2. Astaga…. saya nyobanya di PHP 5.6 mbak: https://servernesia.com/888/cara-install-redis-centos-6/

        Baru sadar, semoga ekstensi PHPnya sudah support PHP 7.0.

        Edit:

        Ternyata kalau ambil defaultnya dari repo masih belum. Tapi di GitHub sudah dinyatakan kompatibel untuk yang terbaru: https://github.com/phpredis/phpredis/tree/php7

        Edit2:

        Nanti saya lihat lagi, tampaknya saya salah paham. Kalau dari repo itu php binding dan yang saya referensikan diatas itu library phpnya. Sudah lelah tampaknya. Haha 🙂

        Edit3:

        Ternyata benar itu php bindingnya, sementara harus dicompile dari source tampaknya. Belum ketemu repository yang sudah ada versi terbarunya.

  2. Bro nanya dong..
    Stack ku CentOS 6.7 (VestaCP)

    pas install yum install php-pecl-memcached
    ada msg error :

    
    Error: Package: php-pecl-memcached-1.0.0-1.el6.i686 (epel)
               Requires: php(zend-abi) = 20090626
               Installed: php-common-5.4.45-3.el6.remi.i686 (@remi)
                   php(zend-abi) = 20100525-x86-32
               Available: php-common-5.3.3-40.el6_6.i686 (base)
                   php(zend-abi) = 20090626
               Available: php-common-5.3.3-46.el6_6.i686 (updates)
                   php(zend-abi) = 20090626
    Error: Package: php-pecl-memcached-1.0.0-1.el6.i686 (epel)
               Requires: php(api) = 20090626
               Installed: php-common-5.4.45-3.el6.remi.i686 (@remi)
                   php(api) = 20100412-x86-32
               Available: php-common-5.3.3-40.el6_6.i686 (base)
                   php(api) = 20090626
               Available: php-common-5.3.3-46.el6_6.i686 (updates)
                   php(api) = 20090626
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
    

    solusi gimana ya? sepertinya ini masalah di repo nya yah ?

    Thanks 🙂

      1. Ga coba install yang versi repository PHPnya sama dengan PHP yang diinstallkan VestaCP mas? Tapi kalau berjalan normal ya abaikan saja

        yum --enablerepo=remi,remi-php54 install php-pecl-memcached

        Sudah aktif dan berjalan semua kan mas? Tes dengan perintah ini:

        echo stats | nc 127.0.0.1 11211

        Atau bisa pakai aplikasi web untuk monitornya seperti ini: https://servernesia.com/736/melihat-statistik-memcached/

    1. Oh itu karena paket aplikasi PHP yang dibutuhkan php-pecl-memcached tidak ada mas dalam repository EPEL mas. Masalah dependensi ini. Tampaknya karena versi PHP yang diinstall VestaCP berbeda dan ditambah ruwet karena banyak versi PHP yang didapatkan yum dari berbagai repository yang aktif dalam CentOSnya.

      Solusinya ya instalasi persis versi PHP yang dibutuhkan, dan kalau dari pesan errornya yang diminta itu 5.3.

    1. Betul mas, kurang lebih sama cuma karena beda distro ya beda perintah untuk menginstallnya:

      apt-get install memcached php5-memcached
  3. Mas chandra, apakah bisa dalam satu server jalankan multi memcached dengan beda port? Kalau bisa mohon dibuatkan tutorialnya. Trims sebelumnya 🙂

    1. Bisa mbak.

      Pada konfigurasi diatas tambahkan saja portnya, misal:

      #Setting alamat IP server Memcached, biasanya di localhost (127.0.0.1). Ini kalau tidak disetting maka bisa diakses umum dari port yang telah ditentukan.
      OPTIONS="-l 127.0.0.1:11211,127.0.0.1:11212"

      Kemudian jalankan perintah ini:

      memcached -p 11211 -d
      memcached -p 11212 -d
      1. Loh iya, ketinggalan berarti. 😀

        [Session]
        ; Handler used to store/retrieve data.
        ; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
        session.save_handler = memcached
        session.save_path = "127.0.0.1:11211, 127.0.0.1:11212"
      2. saya coba jalankan perintah di atas muncul notif ini mas:

        can't run as root without the -u switch
      3. tetap g bisa 🙁

        memcached -p -u 11211 -d

        ini perintah maksudnya apa mas? saya coba tanpa dua perintah di atas, memcached jalan normal dengan dua port.

      4. Bisa digunakan mbak? Ya sekian kasusnya. 😀

        Maksudnya pakai port dan user apa. Teorinya begitu.

Tinggalkan Balasan ke shafira Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *