Tuesday 17 May 2022

Project Deployment on Ubuntu Server 20.04 : Company Profile with Database

deploy-company-profile-thumbnail

Pada tutorial ini kita akan melakukan deploy project lagi, berbeda dengan tutorial sebelumnya yang hanya berupa Landing Page sederhana tanpa ada import database, untuk project deployment kali ini kita akan melakukan deploy sebuah company profile beserta dengan databasenya.

Project yang akan kita deploy adalah sebuah company profile dari website Java Web Media, kalian bisa klik disini untuk mendownload source code websitenya atau link github untuk melakukan cloning.
Untuk proses deploymentnya, kita akan menggunakan service FTP untuk memindahkan folder project websitenya ke dalam directory apache server. Lalu untuk proses import database, kita akan menggunakan PHPMyAdmin.
Untuk framework yang digunakan pada projectnya adalah CodeIgniter versi 4. Sebelum masuk ke proses deployment, kita harus memahami dulu server requirements dari framework CodeIgniter versi 4 ini agar website yang kita deploy bisa live and running pada server kita.

codeigniter-4-server-requirements
Jika semua persyaratan sudah terpenuhi, kita langsung mulai proses deploymentnya.

1. Make Directory Folder for the Website

Kita buka aplikasi FileZilla dan buat folder untuk website compronya pada directory /var/www/compro. Setelah itu copykan semua file dari folder project komputer client ke dalam folder compro server.
Setelah semua file sudah tercopy jangan lupa untuk mengubah permission pada folder compro server, kalian bisa klik kanan pada folder project kalian pada aplikasi FileZilla dan pilih File Permission atau kalian bisa mengetikan perintah dibawah ini pada terminal SSH :

sudo chmod -R 777 /var/www/compro
  • R akan membaca seluruh isi folder dan file yang ada didalam directory folder www.
  • 777 membuka permission untuk melakukan read, write, execute
filezilla-file-permission-settings
Perubahan pada folder permission ini sangat penting dilakukan, jika website kalian akan diakses oleh banyak user yang melakukan CRUD (Create, Update, Delete) pada data website, maka folder permission harus dibuat full menggunakan value 777. Pastikan folder permission ini diterapkan pada semua file dan sub folder project kalian.

2. Create and Config Virtual Host File Configuration for the Website

Kembali ke pengaturan Server, sekarang kita akan buat file Virtual Host untuk website compro kita dengan IP dan PORT yang digunakan sebagai berikut :

IP : 192.168.43.111 | PORT : 8080

Kita akses directory apache2 terlebih dahulu, ketikan perintah :

cd /etc/apache2/sites-available/

Lalu kita buat file konfigurasi virtual hostnya dengan mengcopy file default .conf :

sudo cp 000-default.conf ./compro.conf

Selanjutnya kita lakukan ubahan pada file konfigurasi virtual host untuk website kita :

sudo nano compro.conf

Kemudian lakukan ubahan pada parameter :
  1. <VirtualHost>, tambahkan IP Publik server dan port yang akan digunakan oleh website
  2. Tambahkan string ServerName dan isikan ip publik server
  3. Ubah DocumentRoot ke directory folder website, kemudian save konfigurasinya
Jangan lupa untuk mengaktifkan file konfigurasi yang tadi sudah kita buat :

sudo a2ensite compro.conf

Kemudian lakukan ubahan pada port service apache dengan menambahkan rule listen 192.168.43.111:8080, dan terakhir kita buka firewall untuk port 8080.

Selengkapnya bisa kalian lihat pada postingan kami sebelumnya.

3. Import Database

Selanjutnya kita akan mengimport database untuk projectnya, kita akses phpMyAdmin menggunakan browser.

Buat database baru, disini kita membuat database baru dengan nama compro-ci-4. Lalu Import file sql yang ada dalam folder project ke dalam database baru, choose file dan arahkan ke folder file sql dan klik import.

database-import-phpmyadmin

Pastikan dalam proses import database tidak ada error satupun, jika menggunakan skenario pengerjaan project, kalian bisa memastikan ke pihak developer apakah database yang di import ini sudah lengkap semua atau belum.

4. Database and Additional Settings

Terakhir kita akan melakukan setting pada file App.php, Database.php dan melakukan cek pada file php.ini untuk memastikan bahwa semua ekstensi yang diperlukan pada server requirements sudah terenable semua.

Database.php
Kita akan melakukan ubahan pada file Database.php, kita sesuaikan username, password dan nama database yang sudah kita import sebelumnya.

public $default = [
'DSN'      => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '#########',
'database' => 'compro-ci-4',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug'  => (ENVIRONMENT !== 'production'),
'charset'  => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre'  => '',
'encrypt'  => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port'     => 3306,
        ];

App.php
Selanjutnya kita lakukan ubahan pada base URL, buka file App.php dan sesuaikan base URL dengan ip server dan port pada setingan virtual host sebelumnya.

public $baseURL = 'http://192.168.43.111:8080';

php.ini
Lalu kita juga lakukan ubahan pada file php.ini menggunakan nano yang ada di direktori /etc/php/7.4/apache2, lalu hilangkan tanda titik-koma (;) untuk mengenable ekstensi yang dibutuhkan.

extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
;extension=gmp
extension=intl
;extension=imap
;extension=ldap
extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop

Atau kalian bisa menggunakan perintah command line untuk mengenable modul php, pertama kita akses direktori modul phpnya :

cd /etc/php/7.4/mods-available

Ketikan ls untuk melihat list file yang ada didalam folder mods-available

bz2.ini                fileinfo.ini       mbstring.ini             posix.ini                   sysvshm.ini
calendar.ini        ftp.ini               mysqli.ini                readline.ini               tokenizer.ini
ctype.ini             gd.ini               mysqlnd.ini             shmop.ini                 xml.ini
curl.ini               gettext.ini         opcache.ini             simplexml.ini           xmlreader.ini
dom.ini              iconv.ini           pdo.ini                     sockets.ini                xmlwriter.ini
exif.ini               intl.ini              pdo_mysql.ini         sysvmsg.ini               xsl.ini
ffi.ini                  json.ini            phar.ini                    sysvsem.ini               zip.ini

Kemudian gunakan format perintah dibawah ini untuk mengenable modul yang dibutuhkan :

phpenmod NAMA_MODUL

Dibawah ini adalah ekstensi yang harus di enable agar project website compro bisa berjalan pada server kalian :
  • intl
  • json
  • mbstring
  • mysqlnd
  • xml
  • libcurl
Jika menggunakan skenario pengerjaan project, kalian bisa konfirmasikan kembali ke pihak developer, apakah modul yang dibutuhkan sudah sesuai atau belum, semua ekstensi yang dibutuhkan sudah sama atau belum dengan kebutuhan programnya.

TEST :

Kita coba akses website yang sudah kita deploy tadi. Buka browser favorit kalian masing-masing dan ketikan url ipserver:port.

compro-home

Terlihat pada gambar diatas, website bisa diakses dan kita berhasil melakukan deploy project berupa company profile ke dalam server kita.

Eits tunggu dulu, kita akan coba melakukan login ke halaman adminnya.

admin-company-profile

Terlihat pada gambar diatas, kita berhasil login ke halaman adminnya. Selanjutnya kita bisa coba untuk melakukan input data.

input-data-test

Terlihat pada gambar diatas, kita berhasil melakukan input data dengan menambahkan berita baru. Selanjutnya kalian bisa melakukan beberapa percobaan atau testing pada project yang sudah dideploy, untuk memastikan bahwa semua fungsinya berjalan dengan semestinya. Karena meskipun project tersebut berjalan dengan baik pada komputer lokal atau prodution, belum tentu ketika dipindahkan ke komputer server akan berjalan dengan baik juga.
Kita sebagai seorang sysadmin harus memastikan bahwa, komputer server bisa digunakan untuk menjalankan project dengan baik. Karena kita tidak mungkin memberikan komputer lokal atau production ke client kan, yang ingin kita berikan ke client adalah project websitenya yang berjalan dengan baik dan bebas dari bug atau error.
Sekian untuk tutorial project deployment ini, yang dimana kita berhasil melakukan deploy project company profile ke Ubuntu Server 20.04, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.

Previous Post
Next Post

Penulis blog dan atlet balap karung Indonesia, lahir di Jakarta 6 Juni. Sedang membentuk pasangan wanita yang manis, berpenampilan dinamis, tidak berkumis, tapi mirip artis.

0 comments: