Nginx (dibaca engine x) adalah HTTP server free, opensource dan dikhususkan untuk server performa tinggi. Nginx dikenal akan stabilitas, kekayaan fitur, kesederhanaan konfigurasi dan rendahnya konsumsi daya yang dibutuhkan. Tutorial ini akan memandu anda menginstall Nginx, PHP5, dan MySQL (LEMP) di Ubuntu 14.04 LTS.
Setidaknya anda sudah mempunyai satu komputer yang telah terpasang Ubuntu 14.04 LTS, baik mesin VM maupun fisik, serta akses ke repository Ubuntu 14.04 LTS, baik jaringan internet maupun repo lokal. Untuk tutorial kali ini, hostname yang dicontohkan adalah nginx.emka.web.id dengan IP address 192.168.0.100. Silakan sesuaikan dengan kebutuhan anda. Semua perintah akan dijalankan sebagai root atau selevel dengan itu (silakan lakukan perintah sudo su dan masukkan password anda).
1. Instalasi MySQL
Ubuntu 14.04 LTS masih menyediakan MySQL produksi Oracle alih-alih menggunakan MariaDB dari MariaDB Foundation seperti kebanyakan distro lain. Silakan pasang MySQL dengan perintah:
[sourcecode language=”bash”]
apt-get install mysql-server mysql-client
[/sourcecode]
pada saat instalasi anda akan ditanya password bagi MySQL server, silakan tuliskan password anda dua kali dan konfirmasi dengan tombol OK.
2. Instalasi NGINX
Nginx sendiri tersedia secara resmi sebagai paket Ubuntu 14.04 LTS dan dapat kita pasang, meskipun Apache2 kadang sudah terpasang secara default (khususnya bagi Ubuntu Server). Silakan hilangkan dulu Apache dengan perintah:
[sourcecode language=”bash”]
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
[/sourcecode]
kemudian install Nginx:
[sourcecode language=”bash”]
apt-get install nginx
[/sourcecode]
Jalankan service Nginx dengan perintah:
[sourcecode language=”bash”]
service nginx start
[/sourcecode]
Kemudian pada browser anda, silakan buka alamat server dengan alamat http://192.168.0.100 (atau sesuai alamat server anda). Seharusnya terlihat halaman Welcome to Nginx!
halaman tersebut terletak di /usr/share/nginx/html. Silakan ubah jika anda memerlukannya.
3. Install PHP5 dan PHP-FPM
Secara default PHP5 memang tidak bisa berjalan di lingkungan Nginx, namun kita masih bisa mengakalinya dengan menggunakan PHP-FPM (PHP FastCGI Process Manager) sebagai alternatif implementasi CGI di PHP yang masih terbatas itu. Silakan install dengan perintah:
[sourcecode]
apt-get install php5-fpm
[/sourcecode]
PHP-FPM sendiri adalah sebuah proses daemon dengan script init php5-fpm, dimana prosesnya akan menjalankan server FastCGI pada socket /var/run/php5-fpm.sock.
4. Konfigurasi Nginx
Konfigurasi Nginx sebenarnya sangat sederhana, namun sangat berbeda dari Apache. Silakan baca disini: http://wiki.nginx.org/NginxFullExample jika anda membutuhkan contoh lengkapnya.
Anda bisa membuka konfigurasinya dengan vi atau editor lainnya:
[sourcecode]
vi /etc/nginx/nginx.conf
[/sourcecode]
ubah value worker_processes ke 4; dan keepalive_timeout menjadi 2; contoh:
[...] worker_processes 4; [...] keepalive_timeout 2; [...]
selain konfigurasi utama dari Nginx diatas, kita juga harus memodifikasi konfigurasi Vhost Nginx kita.
[sourcecode]
vi /etc/nginx/sites-available/default
[/sourcecode]
ubah konfigurasinya kira-kira menjadi seperti ini:
[...] server { #comment 2 baris berikut jika secara default Nginx ingin menggunakan port 80 untuk ipv4 maupun ipv6 listen 80; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Make site accessible from http://localhost/ nginx.emka.web.id; #sesuaikan location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...]
Jika anda memiliki directory aktif berbeda misalnya /var/www/, /srv/www ataupun /home/namauser/public_html, silakan sesuaikan variabel root /usr/share/nginx/html.
Jika sudah yakin, silakan reload service Nginx dengan perintah:
[sourcecode]
service nginx reload
[/sourcecode]
Langkah selanjutnya adalah mengkonfigurasi PHP, di file php.ini. Letaknya ada di: /etc/php5/fpm/php.ini.
[sourcecode]
vi /etc/php5/fpm/php.ini
[/sourcecode]
set penetapan path CGI keposisi disable (value 0).
[...] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...]
Kemudian reload PHP-FPM:
[sourcecode]
service php5-fpm reload
[/sourcecode]
Untuk memastikan PHP berjalan semestinya, silakan buat halaman phpinfo() di direktori aktif.
[sourcecode]
vi /usr/share/nginx/html/info.php
[/sourcecode]
tulis:
[sourcecode language=”php”]
<?php
phpinfo();
?>
[/sourcecode]
dan akses via web browser, contoh: http://192.168.0.100/info.php (atau sesuai alamat web anda).
5. Install PHP MySQL Suppport
Secara default PHP tidak memasukkan dukungan MySQL jika dipasang sendiri. Kita harus menginstall ekstension-ekstension PHP yang kebanyakan dibutuhkan oleh web-web modern. Silakan ikuti perintah berikut:
[sourcecode]
apt-cache search php5
#contoh
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-apc
[/sourcecode]
kemudian reload php5-fpm:
[sourcecode]
service php5-fpm reload
[/sourcecode]
Setelah semua langkah ini selesai, silakan upload web-apps anda ke direktori aktif anda.