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 diinginkanfastcgi_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.