Saturday, October 27, 2018

Install Web Server nginx (baca engine x) dan uwsgi di Raspberry Pi

Pendahuluan

Kali ini saya akan menjabarkan bagaimana menginstall web server nginx (baca Engine X) pada Raspberry Pi. nginx merupakan web server yang ringan dan cepat dari webserver lainnya misal Apache. mengingat Raspberry Pi mempunyai resource terbatas, maka jika kita perlu membuat aplikasi web pada Raspberry Pi, nginx merupakan pilihan yang tepat sebagai webserver karena merupakan webserver yang paling ringan dan cepat. baik kita mulai step by step. 

Update Package

perlu di ingat bahwa Raspberry Pi perlu terkoneksi ke internet. untuk mengkoneksikan ke internet, kamu bisa memberikan akses internet melalui thetering WiFi, LAN atau USB thetering. sebelum mulai menginstall nginx pada Raspberry Pi. ada baiknya kita update package terlebih dahulu dengan perintah dibawah ini :

sudo apt-get update

Install Nginx

Perlu diketahui bahwa nginx merupakan "Asynchronous” server yang mana artinya nginx dapat menjalankan beberapa action dalam waktu yang sama. tanpa menunggu berakhirnya suatu proses untuk menjalankan proses selanjutnya. tidak seperti Apache yang jika ada multiple proses dalam waktu yang sama maka akan mejalankan sebuah proses baru. dengan itu maka nginx akan lebih cepat dan mengkonsumsi memori yang lebih sedikit. kita akan menginstall nginx melalui terminal. dalam kondisi Raspberry Pi terhubung ke internet. jalankan perintah dibawah ini :

sudo apt-get install nginx

Konfigurasi Nginx dan CGI

setelah proses penginstallan nginx selesai, sebelum service nginx dijalankan, kita perlu mengkonfigurasi nginx. pengaturan ini berguna untuk memberitahukan folder mana saja yang digunakan sebagai folder Web, atau kita perlu mengenalkan index.php sehingga dapat dijalankan otomatis. untuk itu kita perlu mengedit file konfigurasi yatu terletak di "/etc/nginx/sites-available/default", untuk mengeditnya kita bisa menggunakan program nano seperti dibawah ini :

sudo nano /etc/nginx/sites-available/default
perlu diketahui bahwa letak folder web berada di folder "/var/www/html" maka secara default akan menampilkan pengaturan sebagai berikut :

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri  =404;
        }

untuk menambahkan lokasi baru misalkan kita ingin membuat folder di "/var/www/html/newfolder" dan mengharapkan dapat dibuka dengan alamat http://ip-address/newfolder/" maka perlu menambahkan location baru seperti dibawah ini :

      location /newfolder {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri  =404;
        }

secara default nginx tidak tersedia fasilitas CGI, apabila kita memerlukan CGI agar kode Pyhton dapat dijalankan melalui web browser maka, nginx perlu dikonfigurasi dan memerlukan program tambahan, saya disini menggunakan uwsgi. untuk mengkonfigurasi CGI dapat ditambahkan baris berikut masih di file "/etc/nginx/sites-available/default" :


 location /cgi-bin {
                include uwsgi_params;
                uwsgi_modifier1 9;
                uwsgi_pass 127.0.0.1:9000;
        }

        location /doc/ {
                alias /usr/share/doc;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

ketika selesai kita bisa restart service nginx dengan perintah sudo service nginx restart  dan lanjutkan dengan menginstall uwsgi dengan perintah sudo apt-get install uwsgi setelah itu kita perlu membuat file dengan nama uwsgi_config.ini dapat dilakukan dengan perintah  nano uwsgi_config.ini dan isi file tersebut seperti dibawah ini :

[uwsgi]
plugins = cgi
threads = 20
socket = 127.0.0.1:9000
chdir = /usr/lib/cgi-bin/
cgi=/cgi-bin=/usr/lib/cgi-bin/
cgi-helper =.py=python

kemudian save dengan shortcut ctrl + x dan pilih Yes (kamu bisa menyimpannya dimana saja, kasus pada saya menyimpan file uwsgi_config.ini di directory /home/pi). kita akan menyiapkan sebuah script Python sederhana dengan nama hello.py dan akan disimpan pada folder /usr/lib/cgi-bin/ jika folder tersebut belum ada kamu dapat membuatnya. isi dari script Python adalah sebagai berikut :

#!/usr/bin/env python
print "Content-type: text/html\n\n"
print "Hello Wolrd"

kemudian beri permission 777 padanya dengan perintah sudo chmod 777 /usr/lib/cgi-bin/hello.py, kemudian kita akan mejalankan uwsgi dengan config yang sudah kita buat dengan perintah  sudo -u www-data uwsgi ./uwsgi_config.ini& (sebelumnya pindah dulu ke directory dimana file uwsgi_config.ini berada ) maka program uwsgi akan berjalan pastikan tidak ada error.

untuk mengujinya apakah program Python dapat dijalankan pada web browser, buka web browser pada komputer lain yang satu jaringan dengan Raspberry Pi. kemudian isikan pada bagian address bar yaitu : http://ip-raspberry-pi/cgi-bin/hello.py jika sebuahnya sudah benar maka akan tampil tampilan seperti berikut ini :