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.