Cài đặt và cấu hình memcached với vBulletin trên CentoS
Hôm nay mình sẽ viết một bài về việc cài đặt trên CentoS và tích hợp nó vào vBulletin Forum. Trong loạt bài này mình sẽ chia làm 3 phần. Phần I sẽ hướng dẫn về việc cài đặt memcached lên CentoS, phần II sẽ hướng dẫn cách kiểm tra xem memcached đã hoạt động chưa và phần III mình sẽ đi vào việc tích hợp vào vBulletin Forum.
Phần I – Cài đặt memcached lên CentoS
Trước khi cài đặt mình sẽ nói qua cho mọi người hiểu thêm về memcached là gì và tác dụng của nó.
1. Memcached là gi?
Memcached là một hệ thống cache hoạt động bằng cách lưu tạm thông tin những dữ liệu bạn hay sử dụng vào bộ nhớ RAM. Do tốc độ đọc ghi từ bộ nhớ bao giờ cũng cao hơn so với lưu trữ file nên việc sử dụng memcached giúp cho hệ thống của bạn tăng tốc lên một cách đáng kể.
Mô hình hoạt động
2. Hướng dẫn cài đặt memcached trên CentOS server
Ở trong bài này mình sẽ hướng dẫn cài memcached trên CenOS 6 - 64 bit
Thiết lập
Trước khi bắt đầu hướng dẫn, các bạn phải chắc chắn rằng đã cài PHP 5. Bạn cần cài đặt kho EPEL cho Memcached vì Memcached mặc định không có sẵn trong kho lưa trữ.
Cài đặt Remi repository
rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Cập nhật phần mềm lên phiên bản mới nhất
Yum update
Cài đặt Memcached
yum install memcached
Cần lưu ý là có 2 memcache package tồn tại là memcache và memcached cũng như có 2 phiên bản PHP Extention Module tương ứng là php-pecl-memcache và php-pecl-memcached. Ở đây chúng ta sẽ sử dụng phiên bản thứ 2 vì nó ổn định và hỗ trợ nhiều chức năng hơn.
Sau khi cài đặt Memcached, mở các tập tin cấu hình của Memcached
vi /etc/sysconfig/memcached
Bạn sẽ thấy điều này:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS=""
Thông số quan trọng nhất bạn cần lưu ý đó là CACHESIZE (kích thước cho bộ nhớ cache), đơn vị tính là MB. Ví dụ như bên dưới mình sử dụng 512MB để cache (mặc định 64MB).
Memcached không được bảo vệ bằng mật khẩu hoặc tên người dùng, do vậy bất cứ ai cũng có thể truy cập vào thông qua cổng 11211. Từ đó đưa ra giải pháp để đảm bảo an ninh là chỉ cho phép VPS của bạn truy cập, để thiết lập điều này ta thông qua phần tùy chọn ‘OPTIONS=’:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS="- l 127.0.0.1"
Khởi động Memcached
chkconfig memcached on
service memcached start
Kiểm tra xem Memcached có hoạt động hay không
memcached-tool 127.0.0.1:11211 stats
#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 0
bytes_read 14
bytes_written 768
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 0
cmd_set 0
conn_yields 0
connection_structures 11
curr_connections 10
curr_items 0
decr_hits 0
decr_misses 0
delete_hits 0
delete_misses 0
evictions 0
get_hits 0
get_misses 0
incr_hits 0
incr_misses 0
limit_maxbytes 536870912
listen_disabled_num 0
pid 1232
pointer_size 64
rusage_system 0.000999
rusage_user 0.000000
threads 4
time 1402941264
total_connections 12
total_items 0
uptime 114
version 1.4.4
Chú ý thông số uptime phía cuối, như vậy là memcached đã sẵn sàng hoạt động rồi.
Mở cổng Memcached (11211) trên Iptables Firewall
Sử dụng lệnh sau:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
Khởi động lại Iptables Firewall
service iptables restart
Cài đặt Memcached PHP Module trên CentOS 6
Trước hết cần phải cài đặt một vài công cụ để hỗ trợ cho việc cài đặt các bước sau:
yum groupinstall "Development Tools"
Để Memcached có thể hoạt động được với PHP, chúng ta cần cài đặt thêm PHP module.
yum install zlib-devel libmemcached php-devel php-pecl-memcached
Nếu trong quá trình cài có lỗi ở gói tin libmemcached thì ta có thể cài như sau:
# wget https://launchpad.net/libmemcached/1.0/1.0.17/+download/libmemcached-1.0.17.tar.gz
#tar xvf libmemcached-1.0.17.tar.gz
# cd libmemcached-1.0.17
# ./configure
# make & make install
Nếu lỗi quá trình cài gói tin php-pecl-memcached thì ta có thể cài lệnh sau:
yum --enablerepo=remi,remi-php55 install php-pecl-memcachedBây giờ chúng ta sẽ cài đặt phần mở rộng PHP sử dụng Memcached PECL
pecl install -f memcached
Các module memcached.so sẽ được cài đặt trong thư mục Module php, sau đó kích hoạt nó bằng cách thêm một dòng vào file php.ini như sau:
Mở file php.ini
vi /etc/php.ini
Sau đó thêm dòng sau vào và lưa lại.
extension = memcached.so
Thay đổi php.ini để cài đặt memcached như phiên Handler
Trước hết mở file php.ini
vi /etc/php.ini
Tìm một đoạn giống như dưới đây:
[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = filesThay đoạn đấy bằng đoạn như sau:
[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"
Bây giờ khởi động lại Apache để tải lại file php.ini
service httpd restart
Nếu bị lỗi này sau khi khởi động:
Starting httpd: httpd: apr_sockaddr_info_get() failed for memcached
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Ta có thể giải quyết điều này bằng cách chỉnh sửa cấu hình apache:
vi /etc/httpd/conf/httpd.conf
Và bỏ dấu ghi chú ở dòng này:
ServerName localhost
Kiểm tra hoạt động của memcached
Mọi người có thể kiểm tra xem memcached đã hoạt động chưa bằng cách xem thông tin file info.php. Nếu đã xuất hiện như hình dưới đây thì memcached chạy như một dịch vụ.
Vậy mình đã viết xong phần I. Mọi người chú ý theo dõi phần II nhé.
Phần I – Cài đặt memcached lên CentoS
Trước khi cài đặt mình sẽ nói qua cho mọi người hiểu thêm về memcached là gì và tác dụng của nó.
1. Memcached là gi?
Memcached là một hệ thống cache hoạt động bằng cách lưu tạm thông tin những dữ liệu bạn hay sử dụng vào bộ nhớ RAM. Do tốc độ đọc ghi từ bộ nhớ bao giờ cũng cao hơn so với lưu trữ file nên việc sử dụng memcached giúp cho hệ thống của bạn tăng tốc lên một cách đáng kể.
Mô hình hoạt động

Ở trong bài này mình sẽ hướng dẫn cài memcached trên CenOS 6 - 64 bit
Thiết lập
Trước khi bắt đầu hướng dẫn, các bạn phải chắc chắn rằng đã cài PHP 5. Bạn cần cài đặt kho EPEL cho Memcached vì Memcached mặc định không có sẵn trong kho lưa trữ.
Cài đặt Remi repository
rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Cập nhật phần mềm lên phiên bản mới nhất
Yum update
Cài đặt Memcached
yum install memcached
Cần lưu ý là có 2 memcache package tồn tại là memcache và memcached cũng như có 2 phiên bản PHP Extention Module tương ứng là php-pecl-memcache và php-pecl-memcached. Ở đây chúng ta sẽ sử dụng phiên bản thứ 2 vì nó ổn định và hỗ trợ nhiều chức năng hơn.
Sau khi cài đặt Memcached, mở các tập tin cấu hình của Memcached
vi /etc/sysconfig/memcached
Bạn sẽ thấy điều này:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS=""
Thông số quan trọng nhất bạn cần lưu ý đó là CACHESIZE (kích thước cho bộ nhớ cache), đơn vị tính là MB. Ví dụ như bên dưới mình sử dụng 512MB để cache (mặc định 64MB).
Memcached không được bảo vệ bằng mật khẩu hoặc tên người dùng, do vậy bất cứ ai cũng có thể truy cập vào thông qua cổng 11211. Từ đó đưa ra giải pháp để đảm bảo an ninh là chỉ cho phép VPS của bạn truy cập, để thiết lập điều này ta thông qua phần tùy chọn ‘OPTIONS=’:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS="- l 127.0.0.1"
Khởi động Memcached
chkconfig memcached on
service memcached start
Kiểm tra xem Memcached có hoạt động hay không
memcached-tool 127.0.0.1:11211 stats
#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 0
bytes_read 14
bytes_written 768
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 0
cmd_set 0
conn_yields 0
connection_structures 11
curr_connections 10
curr_items 0
decr_hits 0
decr_misses 0
delete_hits 0
delete_misses 0
evictions 0
get_hits 0
get_misses 0
incr_hits 0
incr_misses 0
limit_maxbytes 536870912
listen_disabled_num 0
pid 1232
pointer_size 64
rusage_system 0.000999
rusage_user 0.000000
threads 4
time 1402941264
total_connections 12
total_items 0
uptime 114
version 1.4.4
Chú ý thông số uptime phía cuối, như vậy là memcached đã sẵn sàng hoạt động rồi.
Mở cổng Memcached (11211) trên Iptables Firewall
Sử dụng lệnh sau:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
Khởi động lại Iptables Firewall
service iptables restart
Cài đặt Memcached PHP Module trên CentOS 6
Trước hết cần phải cài đặt một vài công cụ để hỗ trợ cho việc cài đặt các bước sau:
yum groupinstall "Development Tools"
Để Memcached có thể hoạt động được với PHP, chúng ta cần cài đặt thêm PHP module.
yum install zlib-devel libmemcached php-devel php-pecl-memcached
Nếu trong quá trình cài có lỗi ở gói tin libmemcached thì ta có thể cài như sau:
# wget https://launchpad.net/libmemcached/1.0/1.0.17/+download/libmemcached-1.0.17.tar.gz
#tar xvf libmemcached-1.0.17.tar.gz
# cd libmemcached-1.0.17
# ./configure
# make & make install
Nếu lỗi quá trình cài gói tin php-pecl-memcached thì ta có thể cài lệnh sau:
yum --enablerepo=remi,remi-php55 install php-pecl-memcachedBây giờ chúng ta sẽ cài đặt phần mở rộng PHP sử dụng Memcached PECL
pecl install -f memcached
Các module memcached.so sẽ được cài đặt trong thư mục Module php, sau đó kích hoạt nó bằng cách thêm một dòng vào file php.ini như sau:
Mở file php.ini
vi /etc/php.ini
Sau đó thêm dòng sau vào và lưa lại.
extension = memcached.so
Thay đổi php.ini để cài đặt memcached như phiên Handler
Trước hết mở file php.ini
vi /etc/php.ini
Tìm một đoạn giống như dưới đây:
[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = filesThay đoạn đấy bằng đoạn như sau:
[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"
Bây giờ khởi động lại Apache để tải lại file php.ini
service httpd restart
Nếu bị lỗi này sau khi khởi động:
Starting httpd: httpd: apr_sockaddr_info_get() failed for memcached
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Ta có thể giải quyết điều này bằng cách chỉnh sửa cấu hình apache:
vi /etc/httpd/conf/httpd.conf
Và bỏ dấu ghi chú ở dòng này:
ServerName localhost
Kiểm tra hoạt động của memcached
Mọi người có thể kiểm tra xem memcached đã hoạt động chưa bằng cách xem thông tin file info.php. Nếu đã xuất hiện như hình dưới đây thì memcached chạy như một dịch vụ.

Vậy mình đã viết xong phần I. Mọi người chú ý theo dõi phần II nhé.
Chỉnh sửa lần cuối bởi người điều hành: