Hướng dẫn cài đặt HHVM cho NGINX và Apache trên Ubuntu

15 Tháng Bảy, 2015


HHVM trong thời gian qua đã có nhiều bạn sử dụng và thấy tốt, bản thân mình trước đây sử dụng từ các phiên bản 2.2 đã thấy nó tốt rồi mặc dù vẫn còn nhiều lỗi, đặc biệt là không hỗ trợ MySQLi. Nhưng với phiên bản hiện tại là 3.8.0, bạn có thể dành chút thời gian ra cài đặt nó để thử trải nghiệm sức mạnh của HHVM khi nó đã có đầy đủ các extension cần thiết.Sở dĩ là chúng ta phải chờ nó bổ sung như thế là không giống với PHP, HHVM đã được tích hợp sẵn các extension vào phần core của nó nên bạn cũng không thể cài thêm extension cho nó được.

HHVM là gì?

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

Ư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ài đặt HHVM

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.

Cấu hình NGINX

Đố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.

Tự khởi động lại HHVM khi nó bị shutdown

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

Chúc các bạn thành công!