Cara Deploy Website Menggunakan VPS IDCloudHost

 


Kali ini saya akan membagikan tips bagaimana cara kita melakukan deployment pada VPS, terutama VPS yang dibeli dari IDCloudhost

Caranya sebenarnya cukup mudah, kita hanya perlu mensetup Nginx dan MySQL dan aplikasi lain yang dibutuhkan pada program kalian

Karena aplikasi saya merupakan aplikasi Laravel yang menggunakan PHP dan MySQL makan untuk cara kali ini saya akan mencoba menginstal PHP dan MySQL dalam VPS saya

Yuk tanpa basa basi kita langsung ikuti langkah langkah berikut

Namun jangan lupa persiapkan dulu beberapa hal

  • VPS dari IDCloudhost kalian bisa langsung cusss klik link berikut 
  • Project aplikasi kalian yang sudah dipush ke Github. Kalian bisa lihat contohnya disini
  • Putty

Langkah Langkah

Masuk ke dalam server VPS menggunakan putty. Segala detail server bisa lihat disini. Masukkan IP tersebut ke dalam Putty


Masukkan IP4 kalian seperti berikut


Lalu tampilan server akan muncul seperti berikut

Masuk sebagai root dengan perintah sudo su

Masukkan perintah berikut untuk mengaktifkan firewall
ufw allow OpenSSH
ufw enable
ufw status

Install LEMP

sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx HTTP'
sudo ufw status

Buka IP di browser maka kalian akan muncul tampilan seperti berikut

Install MySQL

sudo apt install mysql-server
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Setelah kalian memasukkan perintah di atas, kalian harus memasukkan perintah berikut mysql -u root -p

Install PHP

sudo apt install php-fpm php-mysql

Menguji PHP apakah PHP sudah baik berjalan
sudo nano /etc/nginx/sites-available/default
Lalu tambahkan index.php disamping index.html
index index.php index.html index.htm index.nginx-debian.html;

Lalu tambahkan
location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }

location ~ /\.ht {
                deny all;
        }

Catatan: Sesuaikan fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; dengan versi PHP kalian

Buat file php dengan perintah berikut
sudo nano /var/www/html/info.php

Dan isi dengan perintah berikut
<?php
phpinfo();

sudo nginx -t
sudo systemctl reload nginx
Buka URL
[http://ip_server_kalian(berupa angka)/info.php](http://103.214.113.49/info.php). Maka akan muncul segala detail seputar PHP
Contohnya seperti ini

Install Composer

sudo apt update
sudo apt install curl php-cli php-mbstring git unzip
cd ~
curl -sS [https://getcomposer.org/installer](https://getcomposer.org/installer) -o composer-setup.php

HASH=xxx
xxx merupakan kode unik yang diambil dari link berikut

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer

Install modul PHP

sudo apt update
sudo apt install php-mbstring php-xml php-bcmath

Buat database
mysql -u root -p
CREATE DATABASE nama_database_kalian
GRANT ALL ON nama_aplikasi.* TO 'nama_aplikasi'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
exit

Setup aplikasi dari Github

sudo su
Masuk ke folder `cd /var/www`
Pull project kalian dari github `git clone URL_GITHUB_KALIAN NAMA_DOMAIN_KALIAN` 
cd NAMA_DOMAIN_KALIAN`
composer install
nano .env 

Copas konfigurasi kalian dari local, ganti bagian database
Ganti bagian `APP_DEBUG=false` dan `APP_ENV=production` biar kalau error ga muncul (mengamankan coding)
php artisan storage:link

Setting dulu Nginx nya
sudo chown -R www-data.www-data /var/www/NAMA_DOMAIN_KALIAN/storage
sudo chown -R www-data.www-data /var/www/NAMA_DOMAIN_KALIAN/bootstrap/cache
sudo nano /etc/nginx/sites-available/NAMA_DOMAIN_KALIAN

server {
    listen 80;
    server_name NAMA_DOMAIN_KALIAN;
    root /var/www/NAMA_DOMAIN_KALIAN/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

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

    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;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Ganti bagian server_name jadi `NAMA_DOMAIN_KALIAN`
Ganti bagian root jadi `/var/www/NAMA_DOMAIN_KALIAN/public;
Save filenya

sudo ln -s /etc/nginx/sites-available/NAMA_DOMAIN_KALIAN /etc/nginx/sites-enabled/
sudo nginx -t

Sehingga akan muncul tulisan seperti ini
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

sudo systemctl reload nginx

Migration

php artisan migrate:fresh --seed
npm install
npm run build

Setting domain

Saya senditi menggunakan Hostinger untuk mengarahkan domain ke IP. Kalia bisa klik disini untuk menggunakannya

Masuk ke panel hosting kalian (contoh disini pakai IDCloudHost)
Masuk manage DNS
Tambah Add Record
Namenya isi `NAMA_DOMAIN_KALIAN.` Depannya pakai titik
Type nya ganti A
Isi selanjutnya (RDATA / IP Address) masukin nama IP server kalian (bisa dicek di dashboard nya)
Add Record / Save


Jika semua langkah langkah di atas sudah dilakukan dengan baik, maka kita bisa buka website tersebut dengan domain yang sudah disetup. Contohnya seperti berikut

Kalian bisa membaca lebih asik project yang saya deploy menggunakan cara ini disini

Kalo kalian masih terkendala, kalian bisa tanya di kolom komentar di bawah

Post a Comment (0)
Previous Post Next Post