HHVM (viết tắt của HipHop Virtual Machine) nghĩa là chương trình máy ảo dùng để thực thi mã PHP, HHVM được tạo ra bởi Facebook và sử dụng ngôn ngữ Hack (là một phương ngữ của PHP). Do HHVM được thiết kế dựa trên nguyên tắc Just-in-Time (JIT) nên nó sẽ thực thi mã PHP bằng cách chuyển đổi các mã PHP sang dạng bytecode, sau đó chuyển sang mã máy x86-64, rồi tối ưu và chuyển sang dạng mã máy.
Ưu điểm của HHVM là sẽ hoạt động nhanh hơn trình xử PHP hay PHP-FPM rất nhiều. Ngoài ra nó được tích hợp sẵn rất nhiều extension quan trọng như APC, Memcached, Memcache,…để bạn có thể sử dụng ngay mà không cần cài thêm gì cả (đối với Memcached thì cần cài thêm memcached Server).
Cách cài đặt HHVM cũng rất đơn giản, nhưng nó sẽ yêu cầu bạn đã cài Apache hoặc NGINX. Trong bài này mình sẽ hướng dẫn trên hệ điều hành Ubuntu cho dễ sử dụng nhé, và hệ điều hành phải là loai 64bits. Nếu bạn muốn làm theo hoàn toàn bài viết này thì hãy dùng Ubuntu 14.04 64bits.
Nếu bạn là người không chuyên, thì có thể sử dụng HHVM thông qua script EasyEngine.
Nên làm trước:
Trước tiên bạn chạy các lệnh sau để nạp repository cho Ubuntu để cài HHVM.
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" sudo apt-get update sudo apt-get install hhvm
Cài đặt xong, bạn chạy lệnh dưới đây để sử dụng HHVM như một gateway fastcgi cho Apache hoặc NGINX.
sudo /usr/share/hhvm/install_fastcgi.sh
Lúc này nó sẽ tự kiểm tra xem webserver của bạn là Apache hay NGINX rồi nó sẽ tự động cấu hình cho phù hợp. Với Apache thì chạy xong lệnh đó là không cần làm gì cả, đối với NGINX thì cần cấu hình lại một xíu.
Đối với NGINX, sau khi đã chạy xong script install_fastcgi.sh thì nó sẽ có một tập tin tên hhvm.conf tại /etc/nginx.
Bây giờ bạn hãy mở tập tin cấu hình NGINX của domain lên, tìm phần location ~ .php${
rồi comment vào nó như bên dưới hoặc xoá đi.
..}
#location ~ .php$ { # fastcgi_split_path_info ^(.+.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #}
Và kiểm tra xem tập tin cấu hình NGINX của domain đã có đoạn này chưa, có rồi thì thôi:
include hhvm.conf;
Ok, và bây giờ bạn đã sử dụng HHVM trên máy chủ của mình thay cho PHP.
HHVM có một cái chuối là lâu lâu nó bị crash không rõ lý do. Do vậy bạn nên làm thêm bước này để tạo một script giúp tự động restart lại HHVM khi nó bị crash.
Trước tiên bạn nên stop cái HHVM đi.
sudo service hhvm stop
Sau đó tạo file /etc/init/hhvm.conf
và copy đoạn dưới đây vào:
# hhvm - HipHop VM # # The HipHopVM server provides a high performance PHP stack and web server. # modified by pjv from original found here: http://stackoverflow.com/questions/19013516/upstart-script-for-hhvm-hiphop description "HHVM server" author "pjv https://gist.github.com/pjv/2e9ab32d8d9884bf79a4" start on filesystem or runlevel [2345] stop on runlevel [!2345] respawn respawn limit 10 5 umask 022 # Location of config and executable env SERVER=/usr/bin/hhvm env SERVER_CONFIG_FILE="/etc/hhvm/server.ini" env PHP_CONFIG_FILE="/etc/hhvm/php.ini" env RUN_AS=www-data pre-start script if [ ! -d /var/run/hhvm ]; then mkdir -p -m0755 /var/run/hhvm chown $RUN_AS:$RUN_AS /var/run/hhvm fi end script exec $SERVER --mode daemon --config $PHP_CONFIG_FILE --config $SERVER_CONFIG_FILE --user $RUN_AS
Sau đó di chuyển cái deamon mặc định của HHVM trong thư mục /etc/init.d ra bên ngoài thư mục root để không dùng nó nữa.
sudo mv /etc/init.d/hhvm ~
Bây giờ thì hãy khởi động lại HHVM.
sudo service hhvm start
Tài nguyên HHVM
/etc/hhvm/php.ini
Chúc các bạn thành công!