Cara Install Nginx + HHVM di Ubuntu
Masih tutorial seputar Nginx, kali ini Nginx dipasangkan dengan HHVM untuk menjalankan script PHP. HHVM merupakan salah satu proyek open source dari Facebook dan digunakan untuk menjalankan website Facebook. HHVM adalah singkatan dari HipHop Virtual Machine. Ini adalah suatu virtual machine yang bisa digunakan untuk menjalankan kode program PHP bahasa pemrograman Hack.
Install Nginx di Ubuntu
Baca tutorial dasar install Nginx di Ubuntu.
Install HHVM di Ubuntu
Pasang repository HHVM dan install
1 2 3 4 | 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 |
Ditampilkan informasi setelah selesai instalasi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ******************************************************************** * HHVM is installed. * * Running PHP web scripts with HHVM is done by having your * webserver talk to HHVM over FastCGI. Install nginx or Apache, * and then: * $ sudo /usr/share/hhvm/install_fastcgi.sh * $ sudo /etc/init.d/hhvm restart * (if using nginx) $ sudo /etc/init.d/nginx restart * (if using apache) $ sudo /etc/init.d/apache restart * * Detailed FastCGI directions are online at: * https://github.com/facebook/hhvm/wiki/FastCGI * * If you're using HHVM to run web scripts, you probably want it * to start at boot: * $ sudo update-rc.d hhvm defaults * * Running command-line scripts with HHVM requires no special setup: * $ hhvm whatever.php * * You can use HHVM for /usr/bin/php even if you have php-cli * installed: * $ sudo /usr/bin/update-alternatives \ * --install /usr/bin/php php /usr/bin/hhvm 60 ******************************************************************** |
Menguji apakah PHP cli sudah terhubung ke HHVM
1 | php -v |
Hasilnya
1 2 3 | HipHop VM 3.18.3 (rel) Compiler: tags/HHVM-3.18.3-0-g1ddd4af7b1342c20635afbdc67701fbcbdf97bfa Repo schema: 61b13efcfd4e2fabea72495f96208746a568a688 |
Jika belum atau sebelumnya sudah terdapat PHP jalankan perintah di bawah ini.
1 | sudo /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60 |
Menjalankan service HHVM pada saat boot
1 | sudo update-rc.d hhvm defaults |
Konfigurasi Nginx dengan HHVM
Menghubungkan HHVM dengan Nginx
1 | sudo /usr/share/hhvm/install_fastcgi.sh |
Edit file /etc/nginx/sites-enabled/default
1 2 3 4 5 6 7 | location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Buat file info.php untuk menguji apakah HHVM sudah berjalan atau tidak
1 | sudo nano /usr/share/nginx/html/info.php |
Isinya
1 | <?php phpinfo(); ?> |
Akses http://localhost/info.php atau http://IP_Server/info.php
Mengubah dari TCP ke Socket
Secara default komunikasi antara HHVM dengan Nginx menggunakan TCP pada nomor port 9000. Disarankan mengganti TCP dengan socket yang penggunaan sumber daya CPU dan memory lebih rendah.
Pada blok location ~ \.(hh|php), ubah konfigurasi fastcgi_pass.
Sebelum diubah
1 2 3 4 5 6 7 | location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Sesudah diubah
1 2 3 4 5 6 7 | 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; } |
Edit file /etc/hhvm/server.ini
1 | sudo nano /etc/hhvm/server.ini |
Aslinya
1 2 3 4 5 6 7 8 9 10 11 12 | ; php options pid = /var/run/hhvm/pid ; hhvm specific hhvm.server.port = 9000 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 |
Hapus baris hhvm.server.port = 9000 atau beri tanda titik koma (;), lalu tambahkan baris kode di bawah ini.
1 | hhvm.server.file_socket=/var/run/hhvm/hhvm.sock |
Edit file /etc/nginx/hhvm.conf
1 | sudo nano /etc/nginx/hhvm.conf |
Aslinya
1 2 3 4 5 6 7 | location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Ganti baris konfigurasi fastcgi_pass menjadi seperti di bawah ini.
1 | fastcgi_pass unix:/var/run/hhvm/hhvm.sock; |
Restart service HHVM dan Nginx
1 2 | sudo service hhvm restart sudo service nginx restart |
Akses kembali http://localhost/info.php atau http://IP_Server/info.php, apakah halaman PHP Info tampil atau tidak.
Pembatasan Memori pada HHVM
Agar tidak kehabisan memori dan menyebabkan website lambat diakses, kita dapat melakukan pembatasan penggunaan memori pada php.ini.
Edit file /etc/hhvm/php.ini
1 | sudo nano /etc/hhvm/php.ini |
Jika membatasi penggunaan memori untuk HHVM-PHP hanya sampai 1GB, di bawah baris kode ; php options tambahkan kode di bawah ini.
1 | memori_limit = 1024M |
Restart service HHVM
1 | sudo service hhvm restart |
Troubleshooting
Jika terjadi error atau halaman tidak bisa diakses, baca file log Nginx dan HHVM.
1 2 | /var/log/nginx/error.log /var/log/hhvm/error.log |
selamat mencoba 🙂
referensi: digitalocean.com
gagal om
gagal gimana om?
ada pesan error?
hhvm nya eror om, salahnya dimana ya?
pesan error?
wah baru tau hhvm ternyata lebih bagus ya… ntar deh coba.. nanti kalau error balik lagi pak kesini 😀