LEMP-Stack

LEMP Stack (Ubuntu, Nginx, MariaDB / MySQL, PHP)

LEMP Stack Ubuntu Nginx MariaDB Mysql PHP

Kali ini saya ingin memberikan turorial untuk dapat menginstall LEMP Stack (Linux, Engine-X a.k.a Nginx, MariaDB, PHP). LEMP merupakan variasi dari stack LAMP (Linux, Apache, MySQL, php) yang digunakan untuk mengembangkan dan menggunakan aplikasi web. Secara tradisional, LAMP terdiri dari Linux, Apache, MySQL, dan PHP. Namun pada LEMP Stack fungsi Apache digantikan oleh Nginx (Baca: Engine-X), untuk membuat aplikasi web lebih powerfull dan mampu menerima banyak request dalam satu waktu. Kemudian untuk MariaDB sendiri disini menggantikan MySQL karena juga lebih powerfull dalam mengelola data, serta lebih banyak digunakan saat ini untuk situs – situs berskala menengah hingga besar.

Untuk tutorial LEMP Stack Ubuntu Nginx MariaDB Mysql PHP ini saya akan menggunakan Ubuntu 14.04 LTS, ini merupakan versi ubuntu yang memilki dukungan jangka panjang hingga 2019 nanti, jadi saran saya adalah menggunakan ubuntu versi ini, agar tidak perlu repot mengupgrade versi ubuntu hingga tahun 2019 nanti. Kemudian untuk Nginx saya akan menggunakan versi 1.9.x atau yang lebih baru, sedangkan untuk php akan menggunakan php7.0 yang secara performance jauh lebih powerfull dibanding versi php 5.x.x sebelumnya.

Oke langsung saja, login ke vps melalui ssh dan gunakan root sebagai user login.

Pertama update dan upgrade ubuntu ke versi yang lebih baru

apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove

Kemudian menambahkan ALPN Support pada Ubuntu 14.04 untuk dapat support HTTP/2 support serta mendapatkan nginx versi terbaru

Tambah repository OpenSSL pada /etc/apt/sources.list

nano /etc/apt/sources.list

Tambahkan baris ini

deb http://ppa.launchpad.net/0k53d-karl-f830m/openssl/ubuntu trusty main
deb-src http://ppa.launchpad.net/0k53d-karl-f830m/openssl/ubuntu trusty main

Kemudian update dan upgrade kembali untuk mendapatkan versi OpenSSL terbaru

apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove

Setelah itu baru kita dapat menginstall Nginx

Install the Nginx team’s package signing key

curl http://nginx.org/keys/nginx_signing.key | apt-key add -

Tambah repository Nginx ke apt sources

nano /etc/apt/sources.list

Tambahkan baris ini

deb http://ppa.launchpad.net/0k53d-karl-f830m/nginx/ubuntu trusty main
deb-src http://ppa.launchpad.net/0k53d-karl-f830m/nginx/ubuntu trusty main

Update apt sources

apt-get update

Install Nginx

apt-get install nginx

Update, Upgrade, Distupgrade, dan Autoremove

apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove

Periksa versi Nginx

nginx -v 

Bila versi menunjukan 1.9.5 atau keatas,
maka sudah berhasil menginstall nginx pada versi yang paling baru

Kemudian untuk memeriksa apakah sudah siap HTTP/2 atau belum bisa dengan

nginx -V

Cari  --with-http_v2_module bila ketemu berarti sudah berhasil support HTTP/2 dengan ALPN sebelumnya

Selanjutnya adalah menginstall PHP7.0

Install python-software-properties

apt-get install python-software-properties
apt-get install software-properties-common

Tambah language pack base

sudo apt-get install -y language-pack-en-base

Tambah Ondřej’s PPA ke Apt Sources

LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

Lakukan update apt sources

apt-get update

Install php7.0-fpm dan php7.0-mysql

apt-get install php7.0-fpm php7.0-mysql

Install php library yang dibutuhkan. Contoh:

apt-get install php7.0-dev php7.0-curl  php7.0-enchant php7.0-gd php7.0-gmp php7.0-imap php7.0-interbase php7.0-intl php7.0-ldap php7.0-mcrypt php7.0-readline php7.0-odbc php7.0-pgsql php7.0-pspell php7.0-recode php7.0-snmp php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0 php7.0-json php-all-dev php7.0-sybase php7.0-sqlite3 php7.0-mysql php7.0-opcache php7.0-bz2 php7.0-bcmath php7.0-mbstring php7.0-soap php7.0-xml php7.0-zip

Lakukan update, upgrade, distupgrade, dan autoremove

apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove

Periksa versi php

php -v

Bila terdapat error, bisa di diskusikan disini.

Selanjutnya adalah menginstall MariaDB

Pertama lakukan purge pada mysql, bila sebelumnya ada

sudo apt-get purge mysql*
sudo apt-get autoremove

Kemudian baru install MariaDB

sudo apt-get install mariadb-server mariadb-client

Bila diminta masukan password, masukan saja password yang diinginkan untuk MariaDB sama halnya seperti MySQL

Jangan lupa untuk mensetup security untuk MariaDB

sudo mysql_secure_installation

Jawab semua dengan Y (yes), bila diminta password, masukan password yang telah dibuat sebelumnya

Test apakah MariaDB sudah berjalan dengan baik atau belum

sudo service mysql status

Bila tidak terdapat error, maka sudah dapat melanjutkan langkah selanjutnya

Selanjutnya adalah menkonfigurasi Nginx dan PHP7.0-fpm agar dapat sinkronasi

Buka Nginx Conf file dan setup worker_processes

sudo nano /etc/nginx/nginx.conf
edit worker_processes sesuai dengan processor vps, misalkan 1 cpu
worker_processes 1;

Restart nginx

sudo service nginx restart

Secara default, lokasi path vhost pada nginx 1.9.5 keatas terdapat pada /etc/nginx/conf.d/ , sehingga semua file dengan extension *.conf akan dibaca sebagai vhost (virtual host) pada server nginx

Sekarang kita akan mengedit file config default yaitu /etc/nginx/conf.d/default.conf

sudo nano/etc/nginx/conf.d/default.conf

Setup nginx agar dapat membaca file php

[...]
server {
      listen 80 default_server;
      listen [::]:80 default_server ipv6only=on;
      root /usr/share/nginx/html;
      index index.php index.html index.htm;
      # Make site accessible from http(s)://example.com/ adn http(s)://www.example.com
      server_name example.com www.example.com;
[...]

Keterangan

listen 80 default_server –> untuk membuat server atau ip dapat diakses melalui ipv4 listen [::]:80

default_server ipv6only=on; –> untuk membuat server atau ip dapat diakses melalui ipv6 root

/usr/share/nginx/html; –> folder default untuk public_html nginx index index.php index.html

index.htm; –> jenis file yang dapat dibaca secara default oleh nginx

server_name example.com www.example.com; –> server hanya bisa diakses dengan domain tersebut

Selanjutnya adalah membuat nginx bisa berkomunikasi dengan php, sehingga file php yang terbaca oleh server akan diproses sebagai file php, bukan di download seperti file yang selainnya

Sekarang scroll kebawah (masih pada file yang sama /etc/nginx/conf.d/default.conf) dan temukan #location ~ \.php$ , sebenarnya kita bisa mengedit configurasi file tersebut, namun bila ngin lebih mudah bisa menambahkan config berikut pada baris paling bawah sebelum kurung kurawal paling akhir (” } “)

Kemudian edit seperti berikut:

[....]
 #location ~ /\.ht {
 # deny all;
 #} <-------- copy dibawah garis ini
 #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 location ~ \.php$ {
 root /usr/share/nginx/html/;
 fastcgi_pass 127.0.0.1:9000;
 # fastcgi_pass unix:/var/run/php7.0-fpm.sock; <-- ini default PHP-FPM listen socket
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 256 16k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 include fastcgi_params;
 }
} <----- ini kurung kurawal paling akhir


Keterangan
root /usr/share/nginx/html/; –> bisa disesuaikan dengan folder public_html yang diinginkan

fastcgi_pass 127.0.0.1:9000; –> kita menggunakan PHP-FPM dalam koneksi (listen) TCP bukan default

Setting selainnya bisa di edit dan disesuaikan dengan kebutuhan (googling sendiri :p)

Jangan lupa save (simpan) setelah mengedit /etc/nginx/conf.d/default.conf

Selanjutnya edit /etc/php/7.0/fpm/pool.d/www.conf agar PHP-FPM dapat terkoneksi pada TCP yang sudah dibuat pada nginx sebelumnya fastcgi_pass 127.0.0.1:9000;

nano /etc/php/7.0/fpm/pool.d/www.conf

Cari listen = /run/php/php7.0-fpm.sock kemudian berikan ” ; ” dan tambahkan pada baris bawahnya listen = 127.0.0.1:9000

[...]; Note: This value is mandatory.
;listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
[...]

Setelah selesai mengedit jangan lupa lakukan save

Jangan lupa juga untuk merestart nginx dan php-fpm

sudo service nginx reload
sudo service nginx restart
sudo service php7.0-fpm restart

Sekarang kita bisa test apakah nginx sudah bisa membaca file php atau belum

sudo nano /usr/share/nginx/html/testphp.php

Tambahkan code dibawah ini

<?php
 phpinfo();
?>

Sekarang coba akses melalu domain atau ip –> Misalkan http://example.com/testphp.php atau http://123.12.12.122/testphp.php

Bila berhasil akan menampilkan halaman yang berisikan keterangan dan informasi php yang digunakan

Baik mungkin seperti itu tutorial yang bisa saya berikan, misalkan ada yang dibingungkan atau terdapat error pada saat menjalankannya, bisa berkomentar dan diskusikan disini atau bisa kontak saya secara pribadi disini.

Published by

Ridho Muhammad

I am ? Pescetarian, I am ? Techno-enthusiast, I am ? Cinephilia, and I am ? Audiophile too.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.