Sử dụng APC hoặc APCu từ lâu đã là một phương pháp opcode cache được sử dụng rộng rãi để tối ưu hoạt động của VPS. Tuy nhiên APC không được cập nhật, nâng cấp thường xuyên (phiên bản stable mới nhất 3.1.9 ra ngày 2011-05-14) và thỉnh thoảng vẫn xuất hiện một số lỗi vặt.
Với sự xuất hiện của Zend OPcache mặc định đi kèm từ phiên bản PHP 5.5 trở về sau, chắc chắn APC hoặc các opcode cache khác sẽ không có cửa để phát triển nữa.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Zend OPcache với phiên bản PHP 5.5 và 5.6. Các phiên bản PHP 5.4 hoặc 5.3 sẽ có cách cài đặt khác, mình không đề cập trong bài viết này vì phiên bản PHP quá cũ rồi.
Để xem phiên bản PHP hiện tại bạn hãy sử dụng lệnh php -v
hoặc php-fpm -v
Các bạn có thể sử dụng tham số --enable-opcache
khi compile PHP, tuy nhiên cách này hơi khó thực hiện với đa số người dùng, do đó hãy dùng cách cài đặt thêm extension cho PHP. Lưu ý cần cài đặt PHP trước khi bắt đầu.
HocVPS Script mặc định tích hợp Zend Opcache rồi, các bạn đang dùng không cần cài thêm nữa nhé.
1. Thêm repo epel, remi
## CentOS 7 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm ## CentOS 6 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Bước này có thể bỏ qua nếu bạn đã làm theo hướng dẫn cài đặt LEMP trên CentOS.
2. Cài đặt PHP’s Zend Opcache
## PHP 7.0 ## yum --enablerepo=remi,remi-php70 install php-opcache service php-fpm restart ## PHP 5.6 ## yum --enablerepo=remi,remi-php56 install php-opcache service php-fpm restart ## PHP 5.5 ## yum --enablerepo=remi,remi-php55 install php-opcache service php-fpm restart
Với PHP 5.4, 5.3 xem comment bên dưới.
Sau khi cài đặt xong, bạn hãy xem thông tin phpinfo()
, nếu có Zend OPcache xuất hiện như bên dưới là đã thành công.
3. Cấu hình PHP’s Zend Opcache
Mặc định, OPcache sử dụng 128MB bộ nhớ và cache tối đa 4.000 files. Nếu bạn muốn thay đổi tham số này thì chỉ cần chỉnh sửa trong file cấu hình /etc/php.d/10-opcache.ini
hoặc /etc/php.d/opcache.ini
nano /etc/php.d/10-opcache.ini
Các thông tin cần chỉnh
; The OPcache shared memory storage size. opcache.memory_consumption=128 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 100000 are allowed. opcache.max_accelerated_files=4000
4. Web Viewer
Để theo dõi được tình trạng sử dụng Zend Opcache, các bạn có thể sử dụng Web Viewer opcache-gui by amnuts (hoặc cài đặt plugin OPcache Dashboard nếu dùng WordPress).
Ưu điểm có giao diện responsive, nhiều tính năng và có thể reset/flush opcache.
Cài đặt
wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php
Hình ảnh
5. Gỡ bỏ Zend Opcache
– Để tạm thời tắt tính năng cache, bạn hãy edit file cấu hình /etc/php.d/10-opcache.ini
hoặc /etc/php.d/opcache.ini
nano /etc/php.d/10-opcache.ini
Chỉnh tham số opcache.enable=1
thành opcache.enable=0
, sau đó restart lại php-fpm
service php-fpm restart
Sau khi chỉnh sửa code xong, hãy kích hoạt lại opcache.enable=1
.
– Để gỡ hẳn Zend Opcache khỏi server (không nên nhé), bạn hãy chạy lệnh:
yum -y remove php-opcache service php-fpm restart
Luân ơi,
No package php-opcache avaiable nghĩa là mình cài đặt sai ở đâu nhỉ?
Đang tập tành vps
Bạn kiểm tra lại repository đang dùng nhé, repo đang ko có php-opcache.
Mình cài xong hocvps script, và nó xuất được ra file hocvps-script.txt.
Mình dựa vào các liên kết trong file này và mở trong trình duyệt thì nó bị lỗi
http://tranggiadung.vn:2313/vpsinfo/
Ngay bước này mình đã ko xử lý được, mình bị thiếu ở đâu bạn?
Domain của bạn đã trỏ đến IP VPS chưa thế? Với lại VPS Việt Nam cài script hay bị lỗi lắm bạn.
Domain của mình trỏ đến IP của VPS rồi.
VPS này mình thử nghiệm của Nhân Hòa.
Lúc đầu họ cài directadmin mình đã cho chạy được website rồi.
Nhưng khi đọc hocvps mình vào cài thử
Nếu lỗi thì xử lý thế nào vậy Luân?
Khả năng cài đặt bị lỗi rồi, giờ bạn reinstall VPS cài đặt lại từ đầu thôi, dùng DirectAdmin nhé.
sau khi cài hocvps, mình không vào lại được directadmin.
Cho mình hỏi thêm, Mình mới mua một vps khác, chưa cài cắm gì.
Bây giờ mình nên cài DirectAdmin hay controlpanel nào?
Khi cài HocVPS Script bạn cần đảm bảo VPS không cài bất kỳ một control panel nào khác, không thì VPS sẽ bị lỗi không hoạt động được nữa. Mình có ghi rõ trong trang hướng dẫn rồi: https://hocvps.com/script/
Bạn mới làm quen với VPS nên dùng DirectAdmin, dễ dùng. Tuy nhiên mình luôn khuyến khích dùng HocVPS Script vì nó cực kì hiệu quả, không tốn tài nguyên như các control panel khác nên website sẽ hoạt động tốt hơn.
truy cập web viewer kiểu gì vậy anh Luân, em k tìm thấy file truy cập
Bạn down xuống rồi up lên public_html thôi
Cài xong cái Web Viewer muốn xem thì truy cập vào đâu vậy Luân ?Thanks !
Đây là 1 file php nên bạn có thể up lên folder public_html rồi truy cập thẳng vào file qua trình duyệt.
Anh cho e hỏi là cài opcache rồi, e đem code vứt lên sửa thì nó vẫn lưu cache lại nên khó xem thay đổi code, e muốn tạm thời off/on opcache thì làm ntn a nhỉ 🙂
Bạn mở file opcache.ini, chuyển enable = 0 là được.
tình hình là hôm nay đọc bài này, check thì ấy phpinfo có zend opcache , chắc hocscrip có cài, nhưng có điều nó lại ở dạng disable, vậy làm thế nào để enable nó vậy bác Luân?
Sao bạn biết nó đang disable vậy, mặc định mình kích hoạt chạy luôn mà?
em đọc bài trên và chạy thì nó báo cài rồi, nên check phpinfo() thì thấy cái zend :
Opcode Caching Disabled
bác có thể cài giúp em cái đó được không? 🙁
Bạn kiểm tra lại trong file cấu hình .INI của opcache ở thư mục /etc/php.d/ xem đã enable chưa?
Anh ơi cho em hỏi làm thế nào để xem file phpinfo() ? em gõ nguyên lệnh vào không thấy hiển thị gì cả. Trước đó có làm theo hướng dẫn của anh rồi
Bạn tạo file .php với nội dung đó chứ ai lại chạy lệnh này 🙂
Em dùng hocvps script có sẵn cái này rồi.dùng luôn php 5.6
Mà giờ em định hạ php xuống 5.4
Vậy nó có gây lỗi không a??
Hạ xuống thì cài lại từ đầu nhé. HocVPS Script hỗ trợ sẵn luôn cái đó rồi.
Em chỉ cần chọn số 15 là “Nâng cấp sever” rồi chọn lại phiên bản php là được đúng k anh??
Không có khoản chọn phiên bản PHP đâu mà chọn lại 😀
Nhọ thật ấy =))))
Chắc em setup lại để chọn PHP 5.4 thôi 😀
Không hiểu sao mình làm đúng những gì bạn chỉ. VPS 2 CPU RAM 4GB mà chạy online 1k5 thì CPU đã lên đến 70% rồi .
Nó còn phụ thuộc vào code bạn sử dụng nữa, WordPress sử dụng theme nào, có được tối ưu hay không…
Mình chỉ mua theme về làm theo hocvps và chạy web thôi, ko chỉnh bất cứ gì .
Nếu là theme mua trên themeforest thì nó khá là nặng, nhiều chức năng, không được tối ưu đâu bạn. Tốt nhất là tự code riêng một theme để sử dụng ấy.
Em đã tăng
opcache.memory_consumption=256
opcache.max_accelerated_files=8000
nhưng khi chạy web viewer thì thông số lại về như cũ. Không biết tại sao.
Ngoài ra memory usage là 48% và hit rate là 99%. Thông số khoảng bao nhiêu thì mình cần reset cache vậy ạ?
Chắc bạn chưa restart PHP-FPM rồi 😀
Chuẩn luôn, em vừa restart lại là đc.Thông số bao nhiêu để reset cache là đẹp vậy anh?
Một site WordPress thì cần gần 70MB OPcache, để tầm 100MB là ngon
làm thế nào để tích hợp vào code PHP vậy ?
Nó tự động chạy với file .PHP rồi, không cần phải config thêm đâu em.
anh luan ơi dùng cloudflare có giúp giảm tình trạng thiếu ram và cpu ko anh , em đăng định kết hợp nó.
Có nhé, nó cache nên sẽ giảm 1 phần request đến server.
Em biết cách khắc phục rùi anh. Chỉ cần chuyển dist thành memcache là dc. Vậy là cái này nó cũng cần chọn memcache nữa anh
Cái này giờ mình mới biết 😀
Bác luân ơi em cài vps bàng hocvps script rùi. Hình như có cài tự động Zend OPcache rùi vậy có cần chỉnh sửa gì nữa ko bác
Nếu cần thì bạn điều chỉnh file cấu hình thôi, không thì cứ để đó mà dùng 😀
anh luân ơi em cài W3 Total Cache gặp lỗi W3 Total Cache Error: Files and directories could not be automatically created to complete the installation. use FTP form to allow W3 Total Cache make it automatically . em nghĩ nó cần nhập fpt nhưng em nhập vào lai không chính sác giờ làm sao đây anh
Bạn thử chạy menu hocvps, chọn chức năng phân quyền Webserver xem có hết không?
khắc phục được rùi, mà giờ lại thành ra lỗi này W3 Total Cache error:It appears Minify URL rewriting is not working. Please verify that all configuration files are included in the configuration file (and that you have reloaded / restarted nginx).
Unfortunately minification will not function without custom rewrite rules. Please ask your server administrator for assistance. Also refer to the install page for the rules for your server.
Technical info -> sau khi em cài Memcached. anh Luân giúp em với !
Cái Minify của W3 Total Cache mình không hiểu sao chưa dùng thành công trên bất kỳ VPS nào cả 🙁
Mình cài đặt thì báo thành công, nhưng khi khởi động php-fpm thì bị lỗi như hình: http://i.imgur.com/nTwQIp5.jpg
Bạn xem giùm mình cách khắc phục với, cám ơn !
Bạn cài đặt VPS theo hướng dẫn nào vậy? Phiên bản PHP hiện tại là bao nhiêu?
Trước đó 1 tháng, Mình cài mới VPS, sau đó cài Hocvps script với php 5.6, hôm này thấy chậm, rồi mình cài thêm PHP Zend OPcache theo hướng dẫn bài viết này, cài đặt thì thành công, nhưng khởi động lại thì lỗi và không chạy được
Nếu lỗi chắc chỉ đoạn cấu hình thôi. Bạn gửi mình thông tin login VPS để vào check lỗi thêm nhé.
Cài đặt Zend Opcahe xong ngon hẳn 😀
ram đang sử dụng từ 90% giảm xuống còn 64%
cpu không thấy vượt quá 15%
Thanks Luân,
Ok..thanks a nhé!
Sau khi cài ZEND OP,,, đăng nhập vào PhpMyadmin thì bị lỗi này! không đăng nhập vào được luôn a Luân?
Warning in ./libraries/session.inc.php#101
session_start(): open(/var/lib/php/session/sess_gkfg0ulfis0oss1bb3q0nj208skmqjbd, O_RDWR) failed: Permission denied (13)
Backtrace
./libraries/session.inc.php#101: session_start()
./libraries/common.inc.php#349: require(./libraries/session.inc.php)
./index.php#12: require_once(./libraries/common.inc.php)
Bạn chỉ cần xóa cookie, sử dụng trình duyệt khác truy cập lại là ok. Nguyên nhân ở đây do sai session id
Sao không được nhỉ? em dùng trình duyệt khác, tab ẩn danh cũng không được luôn,, giờ thì nó bị lỗi này!
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
Lỗi này thì check ở đây nhé 😀
https://hocvps.com/cau-hoi/sua-loi-phpmyadmin-error-during-session-start-please-check-your-phpp/
Ok…ngon lành cành đào rồi 🙂 sẵn tiện hỏi luôn: Em làm hệ thống web khoảng vài chục web lận và chỉ dùng mã nguồn Xenforo thôi thì có nên cài cái Zend PHP này không? em tính chỉ cài 1 cái này thôi, đang chạy bằng Hocvps.
Cứ dính đến PHP thì nên cài luôn cái Zend OPcache này nhé, không quan trọng dùng code gì.
Bác ơi em cài cái Viewer: Opcache-Status by Rasmus Lerdorf bằng lệnh: wget https://raw.github.com/rlerdorf/opcache-status/master/opcache.php
Nhưng cài đặt xong thì xem cái viewer này bằng cách nào để theo dõi Opcache ạ?
Bác wget nó vào thư mục nào thì chạy trên trình duyệt thư mục đó
mình cài xong hết rồi. nhưng xem thì không rõ lệnh xem và cách xem cậu chỉ giúp được không
[root@vultr ~]# wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php
–2016-04-08 03:48:21– https://raw.github.com/amnuts/opcache-gui/master/index.php
Resolving raw.github.com… 199.27.76.133
Connecting to raw.github.com|199.27.76.133|:443… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: https://raw.githubusercontent.com/amnuts/opcache-gui/master/index.php [following]
–2016-04-08 03:48:21– https://raw.githubusercontent.com/amnuts/opcache-gui/master/index.php
Resolving raw.githubusercontent.com… 199.27.76.133
Connecting to raw.githubusercontent.com|199.27.76.133|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 39238 (38K) [text/plain]
Saving to: “op.php”
100%[======================================>] 39,238 –.-K/s in 0.001s
2016-04-08 03:48:21 (29.6 MB/s) – “op.php” saved [39238/39238]
Truy cập thẳng từ trình duyệt đó bạn
Nếu mình chọn option “Use mod_rewrite to serve cache files. (Recommended)” thì mới bị.
Còn dùng “Use PHP to serve cache files” thì không sao.
Nhưng bên dưới có tips “Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching.”
Mà hình như mod_rewrite chỉ Apache mới có hay sao á!
Ok, mình đã check lại cẩn thận.
mod_rewrite là của Apache, nên khi chọn option đó sẽ thông báo lỗi vì bạn đang sử dụng Nginx.
Tuy nhiên bạn vẫn có thể sử dụng option đó nếu cấu hình Nginx thêm một chút, tham khảo câu trả lời đầu tiên ở link này nhé:
http://serverfault.com/questions/366152/what-is-nginx-equalant-for-my-htaccess-mod-rewrite
Mình gặp lỗi này “Mod rewrite may not be installed” khi cài đặt WP Super Cache Luân à!
Xử lý nó làm sao vậy Luân?
Mình cài hocvps
Chụp ảnh cấu hình gửi vào mail mình check nhé.
Luân ơi cho mình hỏi hocVPS script cài phpmyadmin vào path nào vậy bạn, mình định bỏ mấy cái viewer này vào chung port đó lun 😀
Tks bạn nhiều
Path là
/home/domain.com/private_html/
nhé bạn. Mình cũng toàn up code vào đây để sử dụng port luôn 😀tks bạn nhiều :3
Luân ơi, mình xài vps DO, Script HocVPS, đã cài zend opcache, mình muốn hỏi chi tiết cách tắt và bật zend opcache! Giúp mình nhé! Thanks!
Để tắt thì bạn mở file cấu hình Zend OPcache lên rồi điều chỉnh thông số sau từ 1 thành 0
Chao anh Luan,
Hiện e muốn tách database va web ra làm 2 VPS thì phải cấu hình thế nào ạ.
Em connect thành công rồi mà nó không lấy được dữ liệu, anh chỉ em với.
Cảm ơn anh nhiều
Cái này mình chưa có thời gian nghiên cứu tìm hiểu rồi.
Ok tks a
Cái này dùng cho magento thì làm như thế nào, mong các bạn chỉ giúp?
Magento vẫn cài đặt như thông thường, vì cache này hoạt động ở level server rồi bạn
Khi em làm bước 1 thì báo lỗi dù e đã sửa epel-release-7-2.noarch.rpm thành 7-5 (mới nhất). Em vẫn thấy lỗi nên kiểm tra lại php của e là 5.4 mặc dù khi cài hocvps e đã chọn 5.6 . A luân fix thế nào giúp em với.
Do lỗi cái epel nên script cài đặt sai, anh đã fix lại rồi nhé.
Vậy từ giờ e cài theo hocvps script đc rồi đúng ko a? E chờ fix xong lỗi thì cài lại vps.
Ừ giờ cài được rồi, anh test trên CentOS 7, PHP 5.4 ok nhé.
Cài trên: 5.3, 5.4
cd /usr/local/src
wget http://pecl.php.net/get/ZendOpcache
tar xvfz ZendOpcache
cd zendopcache-7.0.3
phpize
# Tim duong dan den php-config
whereis php-config
# Sau khi thay thi dien chinh xac vao dong sau
./configure –with-php-config=/usr/bin/php-config
make
make install
# Sau khi make xong no bao thu muc chua lib da bien dich. Dua vao do de cau hinh ben duoi :Installing shared extensions: /usr/lib/php/modules/
echo “zend_extension=/usr/lib/php/modules/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1” > /etc/php.d/opcache.ini
# Khoi dong lai php
service php-fpm restart
sao em lam khong duoc vay anh oi den buoc thu 4 cd la ko lam duoc nua
cai nay lam cho nginx hay apache vay anh luan tran ?
Mình cài trên 5.4
Lúc mình chạy lệnh phpize thì bị lỗi -bash: phpize: command not found là sao bạn ơi?
bạn chạy lệnh “yum install php-devel gcc” trước nhé
Luân làm hướng dẫn cài đặt trên php 5.3, 5.4 luôn đi!
Nếu bạn dùng hocvps thì file nó có tên là 10.opcache.ini nhé , Cần dùng lệnh
nano /etc/php.d/10.opcache.ini
Hi Anh,
Cài rồi mà nó vẫn báo chưa cài anh ạ
nano /etc/php.d/opcache.ini lệnh này trỏ đến file trắng tinh anh ạ
The OPcache shared memory storage size.
opcache.memory_consumption=128
; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.
opcache.max_accelerated_files=4000
Ko có thông số trên để chỉnh ạ.
Cách xem PHPINFO() như nào vậy anh ?
Thanks !
Luận ơi mình cái OPcache xong là bị xung đột với plugin backwpup luôn không vào được wp-admin. Xóa đi thì vào wp-admin bt cài mới plug-in thì khi active lên là bị 502 tiếp tục không hiểu vì sao nhỉ?? Xung đột PHP à?
Vấn đề này mình không rõ rồi, nhưng chắc ko phải do cache gây ra đâu.
Mình có post bài bên chiasecoupon.com và xác nhận 100% lỗi 502 là do OPcache gây ra nhé . Plugin nào có tập lệnh gôm file lại hoặc nén file là 502 error ngay
mình php -v thì của mình là PHP 5.3.3
trong này chỉ có hướng dẫn cho PHP 5.5 và 5.6
giúp mình lệnh nào để nâng cấp được phiên bản PHP của mình lên với
Bạn cài đặt server theo hướng dẫn nào vậy? Hãy tham khảo lại hướng dẫn đó để biết cách nâng cấp.
Cài đặt Zend Opcache rồi giờ mình muốn tắt nó thì làm sao vậy bác?
Chạy lệnh yum remove php-opcache nhé
Anh nói rõ hơn chỗ webviewer được không ạ? Làm sao để có thể truy cập vào giao diện ấy ?
Bạn hãy down file PHP đó về rồi up lên và truy cập vào là chạy được
Luân cho hỏi, mình dùng nginx, php 5.5.15, cài xong opcode đã check Up and running rồi nhưng vào W3 total thì báo không có và không enable cho Page cache được.
Thank Luân
Zend Opcache chạy ngầm, bạn không cần phải cài đặt cho W3 Total Cache. Bạn có thể dùng 1 trong số các Web Viewer để xem đang sử dụng bao nhiêu bộ nhớ làm cache.
Ok. Thanks Luân. VPS M dùng Interserver cái offer 1cent vừa rồi. Centos 6.5
Mình đã cài Hocvps Scripts. Định thực hiện cài : Zend Opcache gặp lỗi này khi run lệnh : yum –enablerepo=remi,remi-php55 install php-opcache
” thread.error: can’t start new thread ”
Tóm lại là chưa thành công khi kiểm tra 😀
Lỗi đó làm sao nhỉ L ?
Cái này có thể lỗi do fastestmirror, bạn thử điều chỉnh lại xem: http://unix.stackexchange.com/questions/4578/yum-update-error-cant-start-new-thread
Mình đã thử điều chỉnh lại gặp lỗi :
MemoryError
Đây là vấn đề VPS của bạn, sorry mình chỉ support được đến vậy.
làm sao để truy cập tới ocp.php vậy em thử http://myip/ocp.php nhưng k được
Hi @Luân Trần, bạn có thể làm 1 bài review về after và before khi sử dụng Opcache không?
cái này dùng trên wordpress như thế nào vậy bạn
Cài đặt xong là ok, nó sẽ hoạt động ngầm và tự cache các file PHP
Thank bạn, bài viết rất hay.