Install PHP 7.4, NGINX dan MYSQL di Ubuntu 20.04

Install PHP, Nginx dan MySQL di Ubuntu 20.04 bisa dibilang cukup telat karena OS Ubuntu versi 20.04 ini udah cukup lama rilis tapi saya baru menggunakan Ubuntu versi ini baru semingguan.

Ya maklum saya terbilang cukup jarang mengupdate versi OS di VPS. ada beberapa kekhawatiran jika terjadi hal-hal yang tidak diinginkan.

Misalnya saja, ada bug pada versi terbaru yang ujung-ujungnya bikin kerja ekstra, atau permasalah disk space VPS yang penuh.

Terdengar aneh, tapi kasus ini pernah kejadian pada klien saya beberapa bulan lalu, waktu itu dia minta bantuan karena tiba-tiba VPSnya mati setelah melakukan update OS.

setelah saya cek ternyata disknya habis, bukan karena kena hack atau file yang diupload besar-besar tapi ada file error log (bug pada websitenya) yang tidak dihandle sehingga error_lognya menumpuk sampai 20an GB, alhasil disk penuh.

Dan ini harus difix pada bagian websitenya, namun sayang, saya temukan banyak kesalahan koding, sebetulnya sepele, hanya tidak ada pengecekan variable ya mungkin akan saya bahas lain kesempatan.

Sekarang yang saya bahas ada step-by-step menginstall PHP7.4, Nginx dan MySQL.

Persiapan

Sebelum memulai menginstall PHP7.4, Nginx dan MySQL pastikan Repository Ubuntu kita sudah dalam kondisi terbaru.

Ketikan Command berikut ini.

sudo apt update && apt upgrade

Disable Apache2

Berikutnya karena kita menggunakan Nginx, sebaiknya kita Disable Apache2, sebenarnya dibiarkan tidak masalah asal tidak di Run aja. tapi saya memilih untuk disable atau hapus sekalian, lumayanlah nambah ruang.

sudo systemctl status apache2
sudo systemctl is-enabled apache2
sudo systemctl disable apache2
sudo systemctl stop apache2
sudo systemctl mask apache2
sudo apt remove apache2

Install Nginx

Sekarang kita install Nginx dengan command berikut.

sudo apt install nginx

Check Versi Nginx

setelah itu coba cek apakah sudah terinstall beneran atau belum dengan command berikut.

nginx -v

Kalau outputnya seperti ini berarti udah terinstall.

nginx version: nginx/1.14.0 (Ubuntu)

Mengaktifkan Nginx

meskipun udah berhasil kita install, nginx tu tidak langsung aktif. jadi musti kita START dulu biar jalan.

Abis itu kita ENABLE nginx nya, biar tiap kali reboot VPS kita gak perlu aktifin lagi Nginxnya. ENABLE semacam perintah untuk mendaftarkan suatu applikasi untuk autostart ketika OS nyala.

sudo systemctl start nginx
sudo systemctl enable nginx

Install PHP 7.4

Nginx beres lanjut ke PHP, sebetulnya di ubuntu 20.04 sudah menyertakan repository php7.4, berbeda dengan Ubuntu versi dibawahnya yang mewajibkan kita untuk menambahkan repository baru.

Jadi langkah pertama install PHP7.4 diubuntu 20.04 adalah dengan menjalankan command berikut:

sudo apt -y install php7.4

Check Versi PHP

php -v

Install PHP Modules (PHP Extentions)

sudo apt install php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip unzip php7.4-json php7.4-pear php7.4-bcmatch -y

Mengaktikan PHP7.4

Sama seperti Nginx, kita juga harus mengaktifkan PHP7.4 terlebih dahulu biar bisa digunakan.

systemctl start php7.4-fpm
systemctl enable php7.4-fpm

Testing NGINX dan PHP7.4

Waktunya kita uji, nginx dan PHP7.4 yang sudah kita install. disini saya langsung menghubungkan VPS kita dengan domain yang kita miliki, dengan memanfaatkan fitur DNS dari Cloudflare.

Membuat Server Block

server block atau bisa kita sebut virtualhost di apache ini sangat penting dalam menghubungkan domain dengan VPS, karena berfungsi sebagai petunjuk arah.

Domain A mengarah ke Folder apa

Domain B ke Folder apa dan seterusnya.

jadi setiap kita menambah domain ataupun subdomain kita harus membuat Server Block baru agar tidak terjadi konflik dengan domain lain.

Jalan perintah berikut untuk membuat server blcok baru.

nano /etc/nginx/sites-enable/bambang.com

Isi dengan Kode

server {
    
    listen 80;
    server_name bambang.com www.bambang.com;

    root /var/www/bambang.com;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~\.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # sesuaikan dengan versi php yang digunakan atau gunakan upstream
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
    }

    location ~ /\.ht {
        deny all;
    }

    location /wp-content/uploads {
      location ~ \.php$ {
        deny all;
      }
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    # Expire rules for static content

    # Media: images, icons, video, audio, HTC
    location ~* \.(jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
            expires 356d;
            access_log off;
            add_header Cache-Control "public, no-transform";
    }

    # CSS and Javascript
    location ~* \.(css|js)$ {
            expires 2d;
            access_log off;
            add_header Cache-Control "public, no-transform";
    }

}

tekan CTRL + X lalu ketik Y dan Enter

Cek script server block

Selalu cek apa script server block kita sudah benar atau belum, kalo sampe terjadi kesalahan website bisa mati karena nginx-nya error.

cek script server block dengan command berikut:

sudo nginx -t

jika muncul seperti ini berarti sudah benar

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Kemudian Restart NGINX

sudo systemctl restart nginx

*pastikan setiap menambah/mengedit server block, nginx harus di restart.

Buat directory Website (Document Root)

Buatlah sebuah folder dengan nama bambang.com dan sebuah file bernama index.php di directory /var/www/

caranya :

mkdir /var/www/bambang.com

lalu untuk membuat file index.php, jalankan command berikut:

nano /var/www/bambang.com/index.php

isi index.php dengan isi berikut:

<?php
phpinfo();

tekan CTRL + X lalu ketik Y dan Enter

Ubah permission folder ke www-data:www-data (chown)

kebanyakan dari temen-teman yang memasang website di vps selalu salah dalam memberikan permission, atau malah tidak mengubah permission.

Sehingga ada beberapa folder tidak bisa diakses atau aksi mengubah/menambah dan menghapus file tidak bisa dijalankan.

Ujung-ujungnya mengubah permissionnya (chmod) ke 777, ini tidak sangat tidak disarankan karena berbahaya.

Permission Folder itu harus 755 dan

Permission File itu harus 644 jangan yang lain.

Yang perlu diubah itu permission group -nya atau chown-nya. secara default nginx dan php menggunakan permission group www-data, jadi kita harus mengubah permission tersebut dengan comman berikut:

sudo chown -R www-data:www-data /var/www

bagi yang sudah terlanjur mengubah permission file dan foldernya ke 777 sebaiknya di ganti ya.

bisa pake command berikut :

sudo find . -type d -exec chmod 755 {} \; 
sudo find . -type f -exec chmod 644 {} \; 

Menghubungkan Domain ke VPS dengan Cloudflare

Sebelum memulai langkah ini pastikan kita sudah punya akun Cloudflare, pake yang free aja udah cukup kok. caranya bisa baca disini.

Jika sudah buka menu DNS, dan arahkan domainmu ke IP VPSmu dengan format

TYPENAMEIPv4 addressTTL
Abambang.com123.123.123.123Auto
CNAMEwwwbambang.comAuto
configuration dns: menambah record dns
menambah RECORD DNS pada Cloudflare

jika tidak tau IPnya, kita bisa cek dengan menjalankan perintah ifconfig pada terminal (perhatikan kotak merah)

melihat IP dengan perintah ifconfig pada terminal VPS

**Ubah bambang.com dengan namadomain mu.

Kemudian akses domainmu. jika sudah muncul informasi tentang PHP, berarti domain dan VPS sudah terhubung.

contoh : output phpinfo php7.4

Install MariaDB sebagai pengganti MySQL

Setelah sukses di nginx dan php7.4 selanjut kita install MariaDB sebagai database server untuk menyimpan data. Meski beda tapi secara command bisa dibilang sama, karena memang dijadikan pengganti mysql yang telah diakusisi oracle.

untuk menginstall mariadb kita cukup menjalankan perintah berikut:

sudo apt install mariadb-server mariadb-client

Mengaktifkan Mariadb

sudo systemctl start mysql
sudo systemctl enable mysql

Securing Mariadb

sudo mysql_secure_installation
  • Enter current password for root (enter for none): Just press the Enter
  • Set root password? [Y/n]: Y
  • New password: Enter password
  • Re-enter new password: Repeat password
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]:  Y
  • Reload privilege tables now? [Y/n]:  Y

Cara Atasi root@localhost access denied MYSQL di Ubuntu 20.04

login ke mysql dengan level root

mysql -u root 

Masukkan perintah berikut

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

FLUSH PRIVILEGES;

Baca Juga : Membuat User baru untuk database

Oke, segini dulu, buat step step install php7.4, nginx dan mysql di ubuntu 20.04, nanti kalo ada hal baru yang saya lakukan dan menarik akan saya tulis lagi. Semoga bermanfaat.

Leave a Comment