Cara install HHVM

Biar kekinian saya ingin mencoba – coba HHVM (HipHop Virtual Machine) yang merupakan mesin pemroses PHP dengan kemampuan JIT (Just In Time) mengkompilasikan kode – kode PHP menjadi kode intermediate dalam platformnya. Mirip dengan Java dan Microsoft .NET Framework jadinya. Kabarnya sih performanya sangatlah baik dibandingkan dengan PHP5 tapi bersaing dengan PHP7.

Disini saya menggunakan Debian 8 Jessie dan sebuah VPS dengan RAM 1GB. Kenapa? Karena HHVM ini membutuhkan spesifikasi yang cukup bagus untuk menjamin performanya. Dan distro Linux yang didukung resmi cuma Ubuntu dan Debian. 🙁 Nanti akan saya gunakan Nginx sebagai web servernya.

Instalasi Nginx dan HHVM

Langkah pertama adalah mengupdate dulu semuanya:

apt-get update
apt-get upgrade

Setelah itu mari kita install Nginx, saya gunakan yang dari repositorynya supaya mudah:

apt-get install nginx

Kekurangannya yang diinstall adalah versi lama, saat saya mencoba adalah 1.6.2. Setelah itu bisa anda akses alamat IP servernya di browser, dan seharusnya halaman default Nginx akan muncul. Selesai berarti.
Welcome to nginx on Debian!

Baru kita masuk ke instalasi HHVM:

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvm

Selesai. 😀

Silahkan cek mesin PHP yang terinstall:

php --version

Balasannya akan muncul mirip seperti ini:

HipHop VM 3.12.1 (rel)
Compiler: tags/HHVM-3.12.1-0-gf516f1bb9046218f89885a220354c19dda6d8f4d
Repo schema: f2e5f39b2ad4a08bcbd90b5d8bcb580f40fba6c8

Konfigurasi Nginx dengan HHVM

Mengapa saya menggunakan Nginx? Alasannya sederhana kok, karena sudah didukung secara resmi oleh HHVM dan saya lebih suka Nginx daripada Apache. Jadi silahkan eksekusi perintah berikut untuk integrasi HHVM ke Nginx:

/usr/share/hhvm/install_fastcgi.sh

Akan muncul deretan informasi prosesnya:

[ ok ] Starting hhvm (via systemctl): hhvm.service.
Checking if Apache is installed
WARNING: Couldn't find Apache2 configuration paths, not configuring
Checking if Nginx is installed
Detected Nginx installation
Checking for custom Nginx configuration
Enabling hhvm Nginx module
Finished enabling module
Restarting Nginx
Finished restarting Nginx

Selanjutnya mari kita ubah agar HHVM menggunakan socket bukannya port supaya lebih baik lagi performanya:

nano /etc/hhvm/server.ini

Ubah menjadi seperti ini isinya:

; php options

pid = /var/run/hhvm/pid

; hhvm specific
; hhvm.server.port = 9000
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc

Setelah itu restart HHVM:

service hhvm restart

Juga mari kita edit agar Nginx tahu akan perubahan konfigurasi diatas:

nano /etc/nginx/hhvm.conf

Modifikasi sehingga akan menjadi seperti berikut:

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Jangan lupa kita setting agar Nginx akan mengeksekusi file PHP

nano /etc/nginx/sites-enabled/default

Tambahkan index.php dalam baris index:

# Add index.php to the list if you are using PHP
index index.html index.htm index.php;

Dan restart Nginx setelahnya:

service nginx restart

Disini sudah selesai semua urusan kita untuk instalasi Nginx dengan HHVM, untuk database server seperti MySQL atau MariaDB lakukan seperti biasa karena tidak ada hal istimewa yang harus dijalankan.

Tes proses PHP

Kita akan menguji apakah HHVM sudah aktif dan bisa melayankan konten script PHP, dengan memanfaatkan php info tentunya:

nano /usr/share/nginx/html/info.php

atau

nano /var/www/html/info.php

Dan isikan dengan kode ini:

<?php
phpinfo();
?>

Buka alamat IP server anda ditambahkan /info.php dan akan muncul halaman seperti ini kalau berhasil:
HHVM phpinfo

Yes! Sukses sudah kita menginstall dan menggunakan HHVM. Tinggal berharap agar script PHP atau CMS yang ingin digunakan sudah kompatibel saja.

Semoga bermanfaat. 🙂

*Saya lupa siapa yang request tutorial HHVM ini, mungkin mas Putra atau mbak Shafira. Tapi hutang saya setidaknya sudah lunas. Haha. 😀

10 pemikiran pada “Cara install HHVM

  1. Makasih mas Chandra sudah dibuatkan artikelnya 😀 , saya coba dulu di droplet DO kalau mantep mungkin suatu saat bisa dipake untuk blog utama.

    Oiya HHVM hanya support mesin 64 bit ya ? Untuk performa maksimal tidak perlu setting tambahan lagi di HHVM kan mas ?

    • Kalau cuma buat WordPress dan ga macam – macam theme dan pluginnya sih lancar jaya mas. Tapi berat di spesifikasi VPS yang disarankan, minimal 1GB RAM soalnya. Saya coba di 512MB sih ga masalah.

      Betul mas cuma support 64-bit dan tim pengembang HHVM tidak ada rencana mendukung 32-bit. Ini sebenarnya wajar mas, selain spesifikasi HHVM butuhnya lumayan jadi jelas akan lewat 4GB RAM kalau websitenya sudah sukses juga selisih resource usage 32-bit dan 64-bit bisa dikatakan bisa diabaikan begitu lewat angka 1GB memorinya. Apalagi sekarang CPU sudah 64-bit semua.

  2. Waduh plugin saya sudah 23 an hahaha, mau dihapus tapi cukup penting juga 😀 . VPS yang saya pakai juga 1 GB RAM mas yang dari Dediserve pas promo itu.

    Sepertinya mereka memang memperuntukan HHVM untuk web high performance & high traffic ya mas. Untuk saat ini mungkin masih belum bisa saya pakai agak beresiko juga di resource RAM yang sekarang di kisaran 40% terpakai.

    Oiya untuk HHVM ini bisa dikombinasikan dengan caching semacam php opcache mas ? Atau ada pengaturan khusus di HHVM ?

    • Wogh… banyak sekali mas. Tapi kalau terpakai ya ga masalah sih. Kemarin saya baru hapus Jetpack dari blog dengan trafik 10ribuan per hari. Ngefek pas buka wp-adminnya, enteng banget sekarang.

      Sudah pakai Memcached mas? Nanti naik lagi penggunaan memorinya tapi akan lebih cepat akses websitenya. Ini hubungannya dengan blog diatas, walau lambat pas akses belakangnya (karena tidak bisa dicache) tapi tetap kencang di tampilan depannya.

      Saya cek untuk semacam OPcache sudah ada mas dan malah ini sistem defaultnya dari HHVM: http://hhvm.com/blog/4061/go-faster

      Tampaknya bisa dikombinasikan dengan Redis atau Memcached.

      *Request review atau benchmark Dediserve Jakarta mas. 😀

  3. Hahaha iya mas cukup penting juga masalahnya 😀 . Jetpack fiturnya all in one malah yang tidak terpakai kaya ikut memberatkan resource. Dulu saya pakai jetpack juga eh RAM nya mendadak naik signifikan mas.

    Memcache belum mas, baru php opcache saja untuk cachingnya. Saya pakai stack dari mas chandra https://servernesia.com/806/yuk-install-lemp-paling-mutakhir/ . Selesai diinstal ternyata php opcache sudah otomatis aktif ya mas.

    Oke makasih mas Chandra, tek pelajari dulu 😀 bagus juga kalau memang bisa dikombinasikan. Tapi tak terbayang resourcenya nanti pasti kepake banyak banget apalagi kalau RAM 1 GB hahaha

    Siap mas :-D, di forum kah ? Saya pakainya yang SG mas yang kemarin dibeli pas promo soalnya bandwithnya 1 TB kalau JKT malah 500 GB. Kalau Dediserver Jakarta ada juga yang trial Dewaweb masih saya pakai 😀 hahaha

    • Saya menggunakan Jetpack untuk auto-publish ke media sosial mas. Daripada share satu – satu. Dan Jetpack Comments kan bisa login pakai akun medsos juga. Untuk target pengunjungnya sering pakai ini.

      Betul mas. Terutama di PHP 5.5 keatas itu sudah secara default ada, kenapa tidak kita aktifkan dan manfaatkan saja? 🙂

      Oh ga besar – besar amat kok mas. Untuk blog WordPress dengan 10ribu pengunjung per hari itu Memcached masih belum sampai 100MB. Kalau ditotal dengan OPcache paling 150MBan semuanya. Misal trafik anda lebih rendah maka bisa diantara 50MBan semuanya.

      500GB itu besar lho mas, kiblatnya sama dengan blog diatas. Itu bandwidth per bulannya butuh 100GBan. Apalagi kalau dilewatkan CloudFlare dan semacamnya bisa lebih hemat lagi bandwidthnya.

      Mungkin lebih baik dibuat topik baru di forum mas. 🙂 Terimakasih. 😀

  4. ada alternatif installasi lain mas chandra, menggunakan easystack.io, otomatis akan diinstalkan Nginx + HHVM, dan kita tinggal menggunakan command line bawaan saja, sehingga lebih mudah. Atau juga alternatif lain, dari serverpilot.io, yang satu ini menginstall Nginx + Apache + PHP-FPM, bisa digunakan bila kita tidak mau repot mengatur backend dari vps kita, dan memilih untuk dinstallkan stack webserver oleh pihak ketiga.

    • Halo mas Fadhilah, terimakasih buat referensinya. Tapi saya kok ga ketemu ya easystack.io? Ketemunya buat OpenStack untuk istilah yang mirip/sama.

      Oh ya, baru ingat saya urusan OpenLiteSpeed+HHVM. Sudah bisa kah? Akhirnya saya baca – baca soal 400 Bad Request, tampaknya normal memang perlu warm up buat ngisi cachenya. Default sistemnya seperti OPcache. Rasanya tinggal gabungkan dengan Memcached/Redis sudah jos. 😀

      ServerPilot tahu tapi belum pernah coba, nanti saya lihat – lihat mas. 🙂 Tapi kalau ga butuh dukungan htaccess rasanya lebih efektif langsung Nginx+PHP-FPM.

      • wogh, typo mas, maaf, easyengine.io yang bener. Saya kesampingkan dulu masalah openlitespeed + hhvm mas. lagi buntu cari solusi nya soalnya.

      • Oh, kalau easyengine tahu mas tapi sebatas ujicoba saja. Belum pernah dipakai beneran buat hosting. Mas sudah pernah pakai? Bagus tidak?

        Kalau HHVM sebaiknya nunggu dukungan resmi dari LiteSpeed mas, pakai LSAPInya bakal lebih bagus soalnya daripada pakai FastCGI:

        HHVM-LSAPI integration is on our road map. It is not something we are currently working on, but we plan to start work on it in the upcoming months. You’re not the only user who has expressed interest, so we know it’s something people want. We’re looking forward to getting into it.

        Sumber: https://www.litespeedtech.com/support/forum/threads/litespeed-and-hhvm.8500/#post-78482

Tinggalkan komentar