Rabu, 05 Juli 2017

Pengaturan Awal Nginx, HHVM, dan MongoDB

Postingan kali ini bertujuan supaya gue sendiri nggak lupa sama hal yang pernah dipelajari. Karena kadang baru beberapa waktu kita ngoding tapi kita sendiri udah lupa sama maksud dari kodingan tersebut. Makanya postingan ini dibuat guna dokumentasi kalau-kalau nanti pembaca sekalian secara umumnya, juga gue secara khususnya, lupa dan butuh informasi ini.

Berawal dari iseng-iseng nyari ide buat skripsi, lalu gue kepikiran buat kolaborasi beberapa teknologi yang masih hangat diperbincangkan. Gue akan bikin website dengan bantuan Nginx (dibaca: Engine X) sebagai web server, HHVM (HipHop Virtual Machine) sebagai mesin virtual yang mengeksekusi script PHP, dan MongoDB sebagai database yang menganut klasifikasi NoSQL (Not Only SQL).

Kenapa gue pakai semua itu? Bukan cuman karena iseng belaka, tapi memang teknologi itu paling pas untuk memaksimalkan jenis website yang akan gue buat. Kali ini gue akan buat website sosial media, mirip-mirip facebook mungkin, versi ecek-ecek. Pertama gue pakai Nginx karena memang performanya yang apik. Kedua gue pakai HHVM karena just-in-time compilation yang performanya superior juga. Terakhir MongoDB karena gue akan buat media sosial yang memang lebih baik database yang digunakan berupa NoSQL.

Semua hal ini akan gue lakukan di atas sistem operasi Ubuntu 16.04.

1. Nginx
Install Nginx,
sudo apt-get install nginx
Lalu jalankan,
sudo service nginx start
Buka localhost dan akan mendapat tampilan seperti di bawah.


2. HHVM
Install 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 
Untuk mengecek HHVM sudah terinstall
hhvm --version
Maka akan muncul tampilan seperti di bawah.


Atur HHVM agar terintegrasi dengan Nginx,
sudo /usr/share/hhvm/install_fastcgi.sh
Edit konfigurasi Nginx yang berada pada /etc/nginx/sites-available/default dan tambahkan:
include hhvm.conf;
Di dalam server. Contoh:
server {
...
include hhvm.conf;
...
}
Jalankan HHVM,
sudo service hhvm start
Untuk mengecek HHVM sudah terintegrasi dengan Nginx, buat sebuah file info.php pada /var/www/html
sudo nano /var/www/html/info.php
Tuliskan kode:
<?php phpinfo(); ?>
Lalu buka di browser, localhost/info.php maka akan mendapat tampilan seperti di bawah.



3. MongoDB
Install MongoDB,
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list  
sudo apt-get update 
sudo apt-get install -y mongodb-org
Jalankan MongoDB,
sudo service mongod start
Install driver HHVM untuk MongoDB,
cd /tmp 
git clone https://github.com/mongodb/mongo-hhvm-driver --branch master 
cd mongo-hhvm-driver/
git submodule update --init --recursive   
sudo apt install hhvm-dev 
hphpize  
cmake .  
sudo apt install libtool 
make configlib  
make -j [jumlah core processor] #contoh: make -j 4  
sudo make install
Edit konfigurasi HHVM yang berada pada /etc/hhvm/php.ini dan tambahkan:
hhvm.dynamic_extensions[mongodb]=/usr/lib/x86_64-linux-gnu/hhvm/extensions/30704/mongodb.so
Sesuaikan alamat mongodb.so dengan mengecek file tersebut berada dimana.

Restart HHVM
sudo service hhvm restart
Kesimpulan
Cukup mudah kan kolaborasiin 3 teknologi ini? Jadi intinya HHVM diatur di Nginx untuk jadi pengeksekusi file .php atau .hh, terus MongoDB harus install dulu drivernya supaya bisa diintegrasiin sama HHVM. Sekian.




2 komentar: