Cara Install HHVM dan Nginx Pada Linux VPS
Apa itu HHVM?
HHVM adalah singkatan dari HipHop Virtual Machine. Sebutan ini tidak ada kaitannya secara teknis dengan genre musik Hip Hop.
Hip Hop Virtual Machine itu sendiri adalah sebuah virtual machine yang dikembangkan oleh Facebook. Virtual machine ini bersifat open source dan dapat berguna untuk membantu dalam menjalankan program-program dari PHP.
Jika membahas soal HHVM tidak dapat melepaskan pembahasannya dari PHP. PHP atau Personal Home Page adalah sebuah bahasa pemrogaman yang digunakan dalam mengembangkan web.
Jika menginstall PHP di komputer atau di dalam Linux, biasanya akan ada beberapa mesin bawaan dari PHP yang bisa digunakan untuk menjalankan program-program tersebut. HHVM ini adalah alternatif lain untuk dapat menjalankan program-program dari PHP tersebut.
Berikut adalah beberapa penambahan fiturnya dibandingkan dengan PHP, yaitu :
- Type Annotation di mana dapat menulis tipe data untuk variabel dan return value dari method. Contohnya, jika biasanya di PHP menulis var $a;, maka di Hack, bisa menulis string $a.
- Generics di mana bisa memberikan parameter bagi tipe datanya. Mirip dengan fitur generics di Java dan C#.
- Tipe datanya null.
- Collection berupa Set, Vector, Pair.
- Lambda yang memungkinkan function untuk dijadikan parameter ke dalam function yang lainnya.
Ada beberapa alasan sebenarnya yang mendasari fenomena banyaknya programmer yang lebih memilih HHVM ketimbang mesin bawaan dari PHP itu sendiri. HHVM diklaim oleh Facebook lebih cepat dan hemat source bila dibandingkan dengan mesin murni dari PHP . Selain itu, HHVP dapat stabil di angka 2 detik. Mesin murni PHP itu masih fluktuatif dan lama pengerjaan PHPnya yaitu bisa 14 hingga 17 detik.
Dari data yang disampaikan sebelumnya, dapat juga dikatakan bahwa resource yang dibutuhkan oleh mesin PHP murni memang lebih besar dibanding dengan bawaan dari HHVM itu sendiri. Dari Utilitas CPU juga bisa melihat bahwa mesin dari PHP dapat menggunakan hampir 100% sedangkan HHVM hanya menggunakan kurang lebih 2% saja.
Dengan uraian-uraian yang disampaikan di atas, tidak mengherankan lagi jika Facebook mengklaim dapat menghemat resource sampai dengan angka 50% bila mengganti mesin murni PHP menjadi HHVM.
Apa itu Nginx?
Nginx atau lengkapnya disebut sebagai Engine X adalah sebuah komponen pemrograman web yang tidak kalah penting peranannya. Nginx adalah sebuah web server yang bersifat open source.
Nginx berfungsi sama seperti web server yaitu sebagai penerima request atau permintaan berupa halaman web dari client. Selain itu, Nginx juga mengirimkan kembali hasil dari permintaan tersebut ke halaman web dalam bentuk dokumen HTML.
Perangkat lunak ini dikembangkan oleh Igor Sysoev pada tahun 2002 dan mulai beredar di publik pada 2004. Sejak peluncurannya, Nginx langsung menarik perhatian para web programmer. Bahkan, ada banyak dari mereka yang sebelumnya menggunakan Apache sebagai web server jadi beralih ke Nginx ini.
Berikut, fitur-fitur Nginx, yaitu :
- Reverse proxy server bagi HTTP, HTTPS, SMTP, POP3, dan IMAP protocol.
- Load balancer serta HTTP cache.
- Frontend proxy bagi Apache dan web server lainnya, menggabungkan fleksibilitas dari Apache dengan static content performance dari Nginx.
Nginx ini support FastCGI dan SCGI handlers untuk dapat melayani konten yang dinamis semacam PHP dan Phyton. Selain itu, Nginx juga memiliki bundling semacam LAMP (Linux Apache MySQL PHP), yaitu LEMP (Linux ENgin x MySQL PHP).
-
Nginx banyak dipilih karena memiliki performa yang tinggi dan tergolong stabil.
Banyak pilihan fitur dan hemat resource atau sumber daya. Benchmark menunjukkan bahwa Nginx lebih unggul bila dibandingkan dengan web server lain seperti Apache dan Lighttpd.
Hal ini juga berarti beban server bisa menjadi lebih ringan, yang kemudian akan berimbas ke aspek waktu loading yang jadi lebih cepat dan server yang menjadi lebih stabil.
-
Penumpukan data di memory juga akan jadi berkurang.
Nginx akan menghasilkan data statis yang disimpan di hard disk, sebelum disampaikan ke client. Hal ini juga akan memberi dampak baik yaitu semakin cepat dan stabil server. Selain itu Nginx juga menyediakan berbagai fitur yang dapat digunakan sehari-hari untuk menangani traffic yang sangat padat seperti static file serving, virtual host, compression, access control, URL rewriting, dan lainnya.
Cara Install HHVM dan Nginx
- Langkah pertama yang harus dilakukan adalah dengan update Nginx. Sebenarnya Nginx sudah tersedia di repository ubuntu, namun kadang versinya kurang update dan kurang stabil. Untuk update versi Nginx terbaru dan stabil, dapat memasukkan perintah berikut ini :
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
- Instalasi Nginx dapat memasukkan perintah berikut ini :
sudo apt-get install nginx
- Untuk memastikan bahwa Nginx sudah terinstall dan sudah bisa berjalan dengan benar, ada dua cara yang bisa dilakukan, yaitu :
- Pertama bisa menjalankan perintah seperti berikut ini :
sudo service nginx start
-
- Kedua bisa memastikan lewat web browser yang diarahkan ke IP VPS. Jika Nginx sudah terinstall dan berjalan, maka akan melihat halaman seperti pada gambar berikut ini :
- Setelah memastikan bahwa Nginx terinstall dan bisa berjalan, maka langsung saja melanjutkan ke proses instalasi HHVM. Namun selain menginstall HHVM, ada baiknya juga menginstall php5-fpm. Hal ini sebenarnya sebagai backup alternatif jika sewaktu-waktu HHVM yang di install nanti mengalami crash. Untuk menginstall php5-fpm dapat memasukkan perintah berikut ini :
sudo apt-get install php5-fpm php5-mysql php5-curl
- Setelah php5-fpm selesai terinstall, maka bisa mulai menginstall HHVM-nya. Untuk menginstall HHVM dapat memasukkan perintah berikut ini :
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm
- Setelah itu akan melihat tampilan seperti pada gambar berikut ini :
Setelah muncul seperti gambar di atas maka proses instalasi HHVM sudah berjalan dengan benar, instalasi HHVM sudah sukses.
- Setelah Nginx dan HHVM terinstall, selanjutnya harus melakukan konfigurasi Nginx dengan HHVM. Untuk memulai proses konfigurasi perlu memasukkan perintah seperti berikut :
sudo /usr/share/hhvm/install_fastcgi.sh
Setelah itu akan muncul proses konfigurasinya, seperti pada tulisan berikut ini :
[ 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
- Pada konfigurasi Nginx dan HHVM, biasanya akan digunakan TCP dengan nomor port 9000. Lebih baik lagi jika TCP itu bisa diganti menjadi socket. Hal ini bisa mengurangi sumber daya CPU dan juga memory yang digunakan sehingga performa akan menjadi lebih baik.
Untuk mengganti TCP menjadi socket, yang perlu dilakukan adalah memasukkan perintah berikut ini :
nano /etc/hhvm/server.ini
- Setelah itu perlu mengubahnya menjadi seperti berikut ini :
; 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
- Restart HHVM dengan memasukkan perintah berikut :
service hhvm restart
- Lakukan penyuntingan atau edit agar Ngnix mengetahui tentang perubahan yang terjadi di atas. Caranya dengan memasukkan perintah berikut ini :
nano /etc/nginx/hhvm.conf
Lalu harus melakukan penyuntingan atau edit menjadi seperti ini :
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;
- Settting agar Nginx menjalankan file PHP dengan cara berikut ini :
nano /etc/nginx/sites-enabled/default
Tambahkan index.php dalam baris index, seperti berikut ini :
index index.html index.htm index.php;
- Lakukan restart pada Nginx dengan cara :
service nginx restart