Kang Sunu — My Personal Blog Notes
News Update
Loading...

Wednesday, October 27, 2021

Menghilangkan Prefix (Kata Awalan) dari sebuah String di PHP

Menghilangkan Prefix (Kata Awalan) dari sebuah String di PHP

Menghilangkan Prefix dari String dengan PHP

Pada umumnya, kata awalan atau yang biasa disebut dengan prefix dalam pemrograman digunakan untuk menandai sebuah teks (string) merupakan bagian dari sebuah ketentuan tertentu. Saya sendiri terkadang menggunakan prefix untuk menandai tipe data pada sebuah variabel. Contoh: intNomorTelepon, merupakan variable yang berisi data integer. Beberapa kejadian, saya terkadang juga memerlukan fungsi untuk manipulasi data string seperti menghilangkan prefix dari data yang ada.

Contoh, saya memiliki sebuah code seperti berikut:

<?php
$string = "628123456789";
$prefix = "62";

// Expected result:
// 8123456789

Pada code tersebut, hasil string yang saya inginkan adalah "8123456789". Untuk mendapatkan nilai yang diharapkan, ada beberapa cara untuk menghilangkan kata awalan (prefix) pada code tersebut menggunakan PHP.

  • Regex
    Berikut adalah cara untuk menghilangkan kata awalan menggunakan RegEx di php.
    <?php
    $string = "628123456789";
    $prefix = "62";
    
    // Expected result:
    // 8123456789
    
    // REGEX
    $string = preg_replace('/^' . preg_quote($prefix, '/') . '/', '', $string);
    echo $string; //result: 8123456789
  • Substr
    Pada fungsi ini, code mengambil string awalan yang panjangnya sama dengan panjang prefix, kemudian membandingkan string awalan yang terambil dengan prefix yang sudah didefinisikan. Berikut adalah code untuk menghilangkan prefix dengan fungsi substr di PHP.
    <?php
    $string = "628123456789";
    $prefix = "62";
    
    // Expected result:
    // 8123456789
    
    // SubStr
    if (substr($string, 0, strlen($prefix)) == $prefix) {
        $string = substr($string, strlen($prefix));
    }
    
    echo $string; //result: 8123456789
  • Trim
    Di dalam PHP, fungsi trim memiliki beberapa fungsi, salah satunya yaitu ltrim. Yang mana pada fungsi tersebut akan menghilangkan string yang memiliki awalan tertentu. Pada kasus ini maka code yang digunakan adalah sebagai berikut:
    <?php
    $string = "628123456789";
    $prefix = "62";
    
    // Expected result:
    // 8123456789
    
    // SubStr
    $string = ltrim($string, $prefix);
    
    echo $string; //result: 8123456789

Itulah beberapa cara untuk menghilangkan kata awalan (prefix) menggunakan PHP. Untuk lebih mudah, kamu bisa menggunakan fungsi berikut:

function removePrefix($string, $prefix) {
    if (substr($string, 0, strlen($prefix)) == $prefix) {
        $string = substr($string, strlen($prefix));
    }
    return $string;
}

Untuk penggunaannya seperti berikut:

<?php
$string = "628123456789";
$prefix = "62";

// Expected result:
// 8123456789

// function
function removePrefix($string, $prefix) {
    if (substr($string, 0, strlen($prefix)) == $prefix) {
        $string = substr($string, strlen($prefix));
    }
    return $string;
}

$string = removePrefix($string, $prefix);

echo $string; //result: 8123456789

Itu dia cara menghilangkan teks awalan atau prefix dengan menggunakan PHP, semoga tutorial menghapus prefix dengan PHP ini bermanfaat.

Saturday, December 12, 2020

Pindah Domain ke kangsunu.com

Pindah Domain ke kangsunu.com

Mungkin pembaca di blog ini belum tahu mengenai history dari dibuatnya blog ini. Blog ini dibangun pada tahun 2015, saat itu saya dalam masa kuliah. Materi-materi yang ada di perkuliahan dan beberapa tugas diantaranya saya masuk disini. Domain yang digunakan adalah kangsunu.web.id, yang mana merupakan domain yang terbilang cukup terjangkau bagi anak kuliahan semacam saya saat itu. Domain dengan ekstensi .web.id dari segi harga menurut saya terbilang cukup stabil. Dimana harga domain ini tidak berpengaruh banyak saat ada perubahan harga pada dolar.

Sebelum blog ini dibuat, saya menggunakan domain kangsunu.com, kalau tidak salah tahun 2013 pertengahan semester saya SMA atau awal-awal kuliah. Domain tersebut saya gunakan sampai tahun 2015, yang entah kenapa (saya lupa spesifiknya) domain tersebut tidak dapat diperpanjang. Singkatnya, domain lama saya yang berekstensi .com tersebut masuk ke dalam situs lelang domain. Domain tersebut dilelang dengan harga mencapai USD $1.500. Bayangkan untuk harga segitu dan keadaan masih dibilang "pelajar", hal ini sangat tidak masuk akal dan tentu sangat melebihi budget seorang pelajar. Akhirnya, pada saat itu saya putuskan menggunakan domain yang harganya masih terjangkau. Saya putuskan menggunakan domain .web.id yang harganya sekitar 50-ribuan per-tahun.

Namun mulai tahun lalu (2019 akhir), domain saya tiba-tiba sudah tersedia dengan harga normal saat saya mengeceknya di who.is. Tanpa pikir panjang, saya mengambil kembali domain lama saya yang berekstensi .com tersebut. Sengaja belum saya gunakan agar index pada halaman pencarian Google bersih terlebih dahulu. Domain tersebut sementara saya alihkan ke domain ini. Setelah satu tahun berlalu, saya putuskan untuk menggunakan domain .com tersebut untuk blog saya. Hal ini karena domain .com menurut saya lebih terlihat profesional, apalagi sekarang saya bekerja di bidang IT yang mana hal ini bisa menambah nilai plus tersendiri. Namun disisi lain, domain .com saya ini masih dibilang belum sebaik domain yang digunakan di blog ini. Jadi saya belum untuk memutuskan untuk mengalihkan trafik yang ada di blog ini ke domain baru saya. Bukan perkara mudah mudah untuk mengalihkan domain blog yang mana beberapa di antaranya sudah memiliki peringkat yang baik di hasil pencarian Google. Saya masih belum yakin karena masih menduga bila nanti trafik berkurang, meski blog ini tidak memiliki profit sekalipun.

Bagi saya aktivitas blogging seperti berbagi saja, bila nanti ada income-pun menurut saya itu adalah hasil tambahan dari berbagi sebuah kebaikan. Selain itu, saya sendiri merasa senang (baca: cukup) apabila terdapat tulisan saya yang digunakan dan menambahkan sumber original ke blog saya ini.

Demikian, cerita singkat saya mengenai perubahan domain yang akan saya lakukan. Sementara ini domain saya pisahkan sampai domain baru saya yang beralamatkan kangsunu.com sudah memiliki trafik yang baik. Blog ini masih aktif, dan mungkin saya akan tetap menulis di platform ini.

Saturday, November 14, 2020

Instalasi Windows Subsystem For Linux 2 (WSL2) di Windows 10

Instalasi Windows Subsystem For Linux 2 (WSL2) di Windows 10

Windows Subsystem For Linux 2 di Windows 10

Bagi saya pribadi, kehadiran Windows Subsystem For Linux atau yang dikenal dengan WSL sangat memudahkan saya dalam membuat development environment. Untuk development aplikasi berbasis PHP, saya sekarang lebih suka menginstal paket tersendiri dengan LEMP stack. Namun setelah mengenal teknologi yang bernama Docker, saya lebih sering menggunakan Docker. Namun sayangnya, pada versi pertamanya WSL belum mendukung dengan teknologi ini. Sehingga saya harus melakukan instalasi docker sendiri yang mana aplikasi tersebut mempunyai ukuran file yang lumayan cukup besar kalau untuk sistem operasi Windows. Semenjak kehadiran WSL2, WSL sudah bisa menjalankan docker, sehingga saya cukup menginstal satu distro dan menginstal docker di dalamnya.

 

Menginstal WSL2

Sebelum menginstal WSL2 pastikan windows 10 kalian telah memenuhi spesifikasi berikut:

  • Menggunakan minimal Windows 10 May 2020 Update versi 2004.
  • Mengaktifkan fitur Windows Subsystem for Linux dan Virtual Machine Platform.
    Kalian bisa lihat sesuai gambar yang saya tandai di bawah ini.
    Windows Feature untuk WSL
  • Telah menginstal kernel WSL2
    Untuk instalasi kernel WSL2 bisa mengunjungi dokumentasi resminya di https://aka.ms/wsl2kernel

Setelah spesifikasi yang saya sebutkan telah terpenuhi, mari kita cek apakah perangkat kita sebelumnya pernah meginstal WSL atau belum. Untuk mengecek daftar WSL yang terinstal, buka Windows PowerShell kemudian gunakan perintah berikut:

wsl -l -v

Selanjutkan kita akan melihat daftar WSL yang terinstal pada perangkat kita beserta versinya. Berikut adalah daftar WSL yang ada di perangkat saya.

Cek versi WSL
Pada gambar tersebut saya memiliki satu buah WSL versi 1, maka dari itu saya akan mengganti versi WSL tersebut ke WSL2 dengan perintah di bawah ini. Bila kalian mengikuti tulisan saya tentang Cara Install Linux Subsystem di Windows 10, kemungkinan akan memiliki versi yang sama.
wsl --set-version Ubuntu-20.04 2

Konversi WSL1 ke WSL2
Hasil konversi dari WSL1 ke WSL2

Bagi yang belum pernah menginstal distro ataupun WSL, kalian bisa mengkonfigurasi agar WSL2 menjadi default dengan perintah berikut, sehingga apabila nanti menginstal paket-paket WSL akan otomatis menggunakan WSL2.

wsl --set-default-version 2

Selanjutnya kalian bisa menginstal distro Linux yang sesuai dengan kebutuhan kalian melalui Microsoft Store.

Saturday, May 30, 2020

Cara Menggunakan Docker

Cara Menggunakan Docker

Cara Menggunakan Docker
Pada tulisan saya sebelumnya kita sudah membahas tentang Cara Menginstal Docker di Linux pada distribusi Manjaro, untuk penginstalan Docker pada OS lain akan kita bahas di lain waktu. Pada tulisan ini saya akan melanjutkan tulisan tersebut mengenai penggunaan Docker. Kita ulas sebentar tentang apa itu Docker.

Docker adalah teknologi containerisasi yang memungkinkan kita untuk membangun, menguji, dan menggunakan aplikasi dengan cepat yang dapat berjalan dimana saja dan terisolasi dalam sebuah wadah yang disebut sebagai container. Docker pada dasarnya merupakan perangkat virtual untuk menjalankan sebuah image. Konsep Docker ini mirip dengan virtual machine, hanya saja Docker memiliki beberapa keunggulan yang tidak dimiliki virtual machine. Pada saat ini, Docker dapat berjalan pada sistem operasi Linux, Mac OS dan Windows.

Arsitektur pada Docker menggunakan client dan server, yang mana docker client mengirimkan request ke docker daemon untuk untuk membangun, mendistribusikan dan menjalankan container docker. Keduanya (docker client dan docker daemon) dapat berjalan pada sistem yang sama. Antara docker client dan docker daemon berkomunikasi via socket menggunakan RESTful API.
Arsitektur Docker
Arsitetur Docker: https://docs.docker.com/get-started/overview/

Pembahasan yang terdapat tulisan kali ini berisi tentang:


Istilah-istilah pada Docker
Berikut adalah istilah-istilah yang ada pada Docker.

Images
Di dalam Docker, Image merupakan dasar template untuk membuat sebuah docker container. Sebuah image biasanya berisi OS maupun aplikasi yang telah diinstall dan telah jadi (ter-compile). Image ini digunakan untuk menjalankan container. Di Docker Hub, terdapat banyak image yang dapat kita pilih dan kita gunakan sebagai base image.

Container
Container merupakan sebuah image yang telah dikemas dan dapat dijalankan. Kita dapat membuat, memulai, menghentikan, memindahkan ataupun menghapus container menggunakan Docker API atau CLI. Kita juga dapat mengkoneksikan container ke satu jaringan atau bahkan lebih.
Secara default, sebuah container akan terisolasi dari container lainnya dan mesin host.

Docker Registry
Docker Registry adalah repositori distribusi dari kumpulan docker image yang terpusat, baik bersifat public ataupun private. Docker Registry yang bersifat public disebut dengan Docker Hub. Disini kita dapat berbagi image yang telah kita buat ataupun menggunakan image yang sudah ada yang dibuat oleh orang lain.

Dockerfile
Dockerfile merupakan sebuah file yang mana pada file tersebut berisikan berbagai macam instruksi yang akan dieksekusi untuk membangun sebuah image.


Perintah-perintah pada Docker
Docker memiliki berbagai macam perintah dalam penggunaannya, berikut penjelasan fungsi dan perintah yang digunakan pada Docker.

Download Docker Image
Untuk mendownload sebuah image dari Docker Hub, gunakan perintah berikut:
docker pull [image name]
Contoh:
docker pull hello-world
Hasilnya akan seperti ini:
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete                                                                                             Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
Perlu diketahui bahwasannya kecepatan download dari image yang kita ambil tergantung koneksi internet yang kita pakai.

Melihat Daftar Image
Perintah ini berfungsi untuk melihat image yang pernah kita download ataupun kita buat.
# v1
docker images

# v2
docker image ls

# Contoh Output
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mysql                   8.0.20              a7a67c95e831        4 weeks ago         541MB
jenkins/jenkins         lts-alpine          58047ae198b8        4 weeks ago         228MB
mariadb                 latest              b6184b68d1fd        4 weeks ago         357MB
phpmyadmin/phpmyadmin   latest              f257b784d16f        5 weeks ago         468MB
php                     7.3-fpm-alpine      9a43543afbeb        5 weeks ago         74.6MB

Menghapus Image
docker rmi [image ID]

Membuat Container Baru
Perlu diingat, untuk membuat sebuah container dibutuhkan sebuah image. Jadi sebelum membuat container pastikan image sudah tersedia. Untuk membuat container baru gunakan perintah berikut:
docker run [image name] [command to run]
Pada command to run kita bisa menambahkan `-d` agar container berjalan di background.

Melihat Container yang Berjalan
Perintah ini digunakan untuk melihat daftar dari container yang sedang digunakan.
docker ps

Melihat Semua Container yang Ada
Pada perintah ini digunakan untuk melihat semua container yang ada, baik yang sedang digunakan ataupun tidak.
# v1
docker ps --all

# v2
docker ps -a

# Contoh Output
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                     PORTS                                              NAMES
eaf30c3e8c05        hello-world                  "/hello"                 5 minutes ago       Exited (0) 5 minutes ago                                                      frosty_newton
fe30a0e38d8f        hello-world                  "/hello"                 6 minutes ago       Exited (0) 6 minutes ago                                                      pedantic_bhaskara
d0cfe3e795e7        hello-world                  "/hello"                 7 minutes ago       Exited (0) 7 minutes ago                                                      unruffled_neumann
9fcfcdd4c6f1        phpmyadmin/phpmyadmin        "/docker-entrypoint.…"   3 weeks ago         Exited (0) 2 weeks ago                                                        phpmyadmin
bb240e070dc4        mariadb                      "docker-entrypoint.s…"   3 weeks ago         Exited (0) 2 weeks ago                                                        mariadb
b88e431c0211        jenkins/jenkins:lts-alpine   "/sbin/tini -- /usr/…"   3 weeks ago         Exited (255) 3 weeks ago   0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins

Menjalankan Container
Perintah ini digunakan untuk memulai atau menjalankan container yang sudah ada.
docker start [container ID]

Menghentikan / Stop Container
docker stop [container ID]

Menghapus Container
Perintah berikut digunakan untuk menghapus container yang sudah kita buat.
docker rm [container ID]


Demikian sedikit dasar cara penggunaan Docker. Untuk mempelajari lebih lanjut mengenai Docker, kalian bisa melihat dokumentasi resmi dari Docker. Terima kasih.

Keywords:

Referensi:
- https://docs.docker.com/get-started/overview/
- https://andykamt.com/belajar-docker-mengenal-docker-dan-install-docker/

Thursday, May 28, 2020

Cara Install Docker di Linux Manjaro

Cara Install Docker di Linux Manjaro

Cara Install Docker di Linux
Baru-baru ini saya sedang belajar tentang Docker, sehingga saya memutuskan mencoba untuk menulis apa yang telah dipelajari. Apa itu Docker? Dari beberapa artikel yang tersebar di internet, mungkin dapat disimpulkan sebagai berikut. Docker adalah sebuah aplikasi open source yang mana memungkinkan sebuah aplikasi dapat berjalan pada wadah yang terisolasi dan mandiri. Jadi aplikasi dapat tetap berjalan dimana saja tanpa memandang sistem operasi.
Untuk bagian pertama dari tulisan saya mengenai Docker, saya akan menulis cara install docker di Linux Manjaro. Langkah-langkah yang akan kita lakukan dalam instalasi Docker di Manjaro adalah sebagai berikut:
  1. Update Manjaro
  2. Install Docker
  3. Konfigurasi Docker User
Langkah 1: Update Manjaro
Pada langkah pertama, sebaiknya kita memiliki sistem yang paling baru (up-to-date). Untuk meng-update sistem operasi Linux Manjaro, silahkan buka terminal dan eksekusi perintah berikut:
sudo pacman -Syu

Langkah 2: Install Docker
Untuk menginstal Docker di Manjaro bisa dibilang cukup mudah, lakukan perintah berikut:
sudo pacman -S docker
Kemudian, kita atur agar docker berjalan otomatis saat startup dengan perintah berikut:
sudo systemctl start docker
sudo systemctl enable docker
Baik, sampai disini seharusnya Docker sudah terinstall dengan baik. Untuk mengecek apakah docker sudah terinstal, bisa menggunakan perintah berikut:
sudo docker version

Langkah 3: Konfigurasi Docker User
Secara default, hanya pengguna yang memiliki akses root dan sudo yang dapat menjalankan dan mengelola Docker. Jika ingin menjalankan Docker tanpa perintah `sudo` pada setiap perintah, jalankan perintah berikut:
sudo usermod -aG docker $USER
Kemudian restart, dengan demikian kita dapat menjalankan Docker tanpa perlu menggunakan akses `root` atau menggunakan `sudo` lagi.

Demikian cara install Docker di Linux Manjaro / Arch Linux. Semoga tulisan ini bermanfaat.

Monday, March 9, 2020

Auto Deploy CodeIgniter dengan Gitlab-CI dan Heroku

Auto Deploy CodeIgniter dengan Gitlab-CI dan Heroku

Auto Deploy Codeigniter ke Heroku dengan Gitlab CI/CD

Kehadiran GIT sangat membantu kita dalam pengembangan aplikasi, apalagi kita yang bekerja dalam sebuah tim. Pengembangan software saat ini sudah mulai banyak beralih menggunakan Continuous Integration (CI), Continuous Delivery (CD) dan Continuous Deployment (CD) atau lebih sering disebut dengan istilah CI/CD.

Pada kesempatan kali ini, saya akan berbagi cara tentang mendeploy aplikasi PHP dengan framework CodeIgniter ke Heroku. Saya anggap kalian yang datang membaca tulisan saya ini telah memahami apa itu Git, Gitlab dan Heroku.

Persiapan:

Langkah:
Dalam tulisan ini, cara deploy aplikasi CodeIgniter akan saya urutkan menjadi beberapa step seperti ini:


# Pengaturan Heroku
Pada langkah ini, kita akan mengambil nama projek dan API KEY dari akun Heroku yang telah kita buat. Jadi saya harap teman-teman sudah memiliki akun Heroku, bila belum memiliki akun Heroku silahkan daftar melalui heroku.com.
  1. Langkah pertama, silahkan persiapkan projek kalian dengan membuat projek baru ataupun menggunakan projek yang sudah ada.
    Sebagai contoh, saya membuat projek baru dengan nama codeigniter-autodeploy.
    Membuat Projek Baru di Heroku
    Nantinya, projek yang baru saja kita buat akan beralamat namaprojek.herokuapp.com. Pada projek yang baru saja saya buat maka projek akan beralamat http://codeigniter-autodeploy.herokuapp.com/.
  2. Kemudian, ambil API-KEY dari akun Heroku kita dengan cara masuk ke Account Settings yang terdapat pada panel user akun Heroku kalian.
  3. Selanjutnya pada bagian bawah akan terlihat API Key dari akun Heroku kalian, salin dan simpan API Key kalian.
Dari langkah pengaturan Heroku ini, kita akan menyimpan nama projek dan API Key dari akun Heroku kita. Pada bagian ini, maka nama projek dan API Key saya adalah:
HEROKU_APP: codeigniter-autodeploy
HEROKU_API_KEY: gd54434-xxxx-xxxx-xxxx-0r4ls923s9


# Pengaturan Gitlab Repositori
Baiklah, pada tahap ini kita menyiapkan sebuah repositori yang ada pada Gitlab kita. Bila belum memiliki repositori, silahkan buat terlebih dahulu dan isikan project dari CodeIgniter atau kalian bisa menggunakan repositori yang sudah ada yang berisi aplikasi CodeIgniter.

Kemudian, simpan credential dari Heroku yang telah kita dapatkan tadi yaitu HEROKU_APP dan HEROKU_API_KEY ke dalam Gitlab CI/CD Variable. Caranya, buka pengaturan CI/CD pada repositori yang kalian gunakan kemudian atur seperti gambar berikut:
Cara Menambahkan Variable di Gitlab CI/CD


# Deploy Aplikasi CodeIgniter
Langkah terakhir kita akan mengatur otomatisasi deployment (auto deploy) aplikasi CodeIgniter kita pada Heroku. Jadi setiap ada kodingan yang ter-push ke repositori, maka Heroku akan menggunakan kodingan yang terbaru sesuai dengan apa yang terdapat pada repositori. Untuk membuat auto deploy ini, kita cukup membuat file .gitlab-ci.yml pada root repositori.
Berikut adalah script .gitlab-ci.yml yang kita gunakan untuk membuat auto deploy pada projek CodeIgniter kita:
# Auto Deploy CodeIgniter with Gitlab by Kang Sunu
# https://www.kangsunu.web.id/2020/03/auto-deploy-codeigniter-dengan-gitlab.html
heroku:
  stage: deploy
  only:
    - master
  script:
    - apt-get update -qy
    - apt-get install -y ruby
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP --api-key=$HEROKU_API_KEY

Perlu kita ketahui, Heroku membutuhkan Web Server untuk menjalankan script PHP yang terdapat pada repositori kita. Maka dari itu, kita perlu menambahkan script untuk menginstal Web Server di Heroku terlebih dahulu dengan cara menambahkan file Procfile pada root repositori. Pada umumnya Web Server yang digunakan yaitu Apache2 dan Nginx, berikut adalah script Procfile yang digunakan untuk menambahkan Apache2 ataupun Nginx pada Heroku.
Procfile untuk Apache2:
web: vendor/bin/heroku-php-apache2

Sedangkan untuk Nginx, kita membutuhkan dua file konfigurasi, yaitu Procfile dan heroku.nginx.conf (opsional) untuk mengaktifkan rewrite url.
Procfile untuk Nginx:
web: vendor/bin/heroku-php-nginx -C heroku.nginx.conf

heroku.nginx.conf
index index.html index.php;

location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri $uri/ @rewriteapp;
}

location @rewriteapp {
    # rewrite all to app.php
    rewrite ^(.*)$ /index.php/$1 last;
}

location ~ ^/(app|app_dev|config)\.php(/|$) {
    try_files @heroku-fcgi @heroku-fcgi;
    internal;
}


location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }
error_page 404 /index.php;


Semua proses konfigurasi pada tahap ini sudah selesai semua, sentuhan terakhir yaitu menambahkan file konfigurasi yang telah kita buat tadi ke dalam repositori projek kita dengan cara push.
Source code konfigurasi pada tulisan saya ini bisa dilihat di Github saya disini https://github.com/sunuazizrahayu/codeigniter-heroku-autodeploy.

Demikian tulisan saya mengenai pembuatan auto deploy Codeigniter di Heroku menggunakan Gitlab CI/CD, semoga tulisan saya ini bermanfaat dan menjadi amal baik saya. Terima kasih dan sampai jumpa di tulisan saya selanjutnya.

Tuesday, February 4, 2020

Cara Instal LEMP Stack (Nginx, MySQL, PHP) di Ubuntu

Cara Instal LEMP Stack (Nginx, MySQL, PHP) di Ubuntu

Bagi teman-teman yang merupakan web developer, pasti sudah tidak asing dengan istilah LEMP. LEMP adalah singkatan dari Linux, NGINX, MySQL dan PHP. Jadi LEMP stack adalah seperangkat aplikasi yang digunakan secara bersamaan untuk menjalankan web server pada sistem operasi Linux. LEMP sendiri bagi saya sangat bermanfaat dalam development aplikasi PHP. Pada operasi sistem Windows, biasa kita kenal pada aplikasi yang bernama XAMPP yang mana pada aplikasi tersebut sudah mencantumkan Apache sebagai web server, MariaDB / MySQL sebagai database, dan PHP sebagai bahasa pemrograman.
Pada tutorial kali ini saya berbagi tutorial tentang cara instal LEMP Stack di Linux yang mana saya menggunakan Ubuntu 18.04 dan PHP 7.3, sedangkan untuk versi lain bisa menyesuaikan.
Langkah-langkah yang akan kita lakukan dalam instalasi LEMP (Nginx, MySQL, PHP) di Ubuntu yaitu:
  1. Instal Nginx
  2. Instal PHP 7.3
  3. Instal MySQL
  4. Instal phpMyAdmin
  5. Konfigurasi Nginx
  6. Konfigurasi MySQL
Langsung saja kita lakukan cara instalasi LEMP di Ubuntu 18.04 dengan PHP versi 7.3.
Instalasi Nginx
sudo apt install nginx

Instalasi PHP 7.3
sudo add-apt-repository ppa:ondrej/php
Install beberapa php-extension dengan command berikut:
sudo apt install php7.3-fpm php7.3-cli php7.3-mysql php7.3-gd php7.3-imagick php7.3-recode php7.3-tidy php7.3-xmlrpc

Instalasi MySQL
sudo apt install mysql-server mysql-client

Instalasi phpMyAdmin
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip
unzip phpmyadmin.zip
sudo mv phpMyAdmin-*-all-languages /usr/share/phpmyadmin
sudo chmod -R 0755 /usr/share/phpmyadmin
sudo mkdir /usr/share/phpmyadmin/tmp/
sudo chown -R www-data:www-data /usr/share/phpmyadmin/tmp/
sudo ln -s /usr/share/phpmyadmin /var/www/html

Konfigurasi Nginx
Backup terlebih dahulu konfigurasi bawaan Nginx kita dengan cara berikut:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
Kemudian kita buka file konfigurasi dari Nginx kita:
sudo nano /etc/nginx/sites-available/default
Tambahkan index.php pada baris berikut:
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
Sehingga menjadi:
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

Kemudian, uncomment konfigurasi PHP-nya sehingga menjadi seperti ini:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
#       # With php-cgi (or other tcp sockets):
#       fastcgi_pass 127.0.0.1:9000;
}
Karena pada tulisan ini kita menggunakan PHP 7.3, maka ganti
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
menjadi
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;

Kemudian tambahkan kode konfigurasi berikut:
location /phpmyadmin {
     index index.php index.html index.htm;
     root /usr/share;
}

Sehingga konfigurasi akhirnya akan seperti ini:
server {
 listen 80 default_server;
 listen [::]:80 default_server;

 # include snippets/snakeoil.conf;

 root /var/www/html;

 # Add index.php to the list if you are using PHP
 index index.html index.htm index.nginx-debian.html index.php;

 server_name _;

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

 location /phpmyadmin {
  index index.php index.html index.htm;
  root /usr/share;
 }

 # pass PHP scripts to FastCGI server
 #
 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
 
  # With php-fpm (or other unix sockets):
  fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
  # With php-cgi (or other tcp sockets):
  ##fastcgi_pass 127.0.0.1:9000;
 }
}

Konfigurasi MySQL
Konfigurasi MySQL ini akan kita gunakan untuk mengakses phpMyAdmin yang telah kita instal tadi.
sudo mysql
CREATE USER 'usernamekamu'@'localhost' IDENTIFIED BY 'passwordkamu';
GRANT ALL PRIVILEGES ON * . * TO 'usernamekamu'@'localhost';
FLUSH PRIVILEGES;

Baik, setelah semua telah terkonfigurasi, masukkan perintah berikut:
sudo service nginx restart; sudo service php7.3-fpm start; sudo service mysql start;

Demikian adalah cara instal LEMP Stack di Ubuntu. Semoga tulisan ini bermanfaat bagi teman-teman developer yang sedang mencari artikel untuk menginstal LEMP.

*Diperbaharui pada 13 Maret 2020
Notification
This is just an example, you can fill it later with your own note.
Done