Skip to main content

Deploy on Ubuntu 20.04

Ikuti langkah-langkah berikut untuk deploy EQUAL Backend pada Ubuntu Server 20.04.

Clean Server Directory

Masuk ke server menggunakan perintah ini:

Info
  • Ganti SERVER_CERT.pem dengan file certificate untuk login ke server yang dituju.
  • Ganti IP_SERVER dengan IP Address server yang dituju.
ssh -i SERVER_CERT.pem ubuntu@IP_SERVER

Hapus semua file yang ada di /var/www/html menggunakan perintah berikut:

sudo rm /var/www/html/*
sudo chown -R ubuntu:ubuntu /var/www/html

Upload Backend File

Upload EQUAL_version.zip dari local ke folder /var/www/html di server menggunakan perintah berikut:

Info
  • Jalankan perintah dibawah ini menggunakan Command Prompt atau Terminal di local PC Anda.
  • Ganti SERVER_CERT.pem dengan file certificate untuk login ke server yang dituju.
  • Ganti EQUAL_version.zip dengan file Backend EQUAL yang akan di install.
  • Ganti IP_SERVER dengan IP Address server yang dituju.
scp -i SERVER_CERT.pem EQUAL_version.zip ubuntu@IP_SERVER:/var/www/html/

Setup Backend

Unzip EQUAL_version.zip menggunakan perintah ini

sudo su
cd /var/www/html
unzip '*.zip'
chown -R ubuntu:ubuntu /var/www/html
exit

Hapus EQUAL_version.zip menggunakan perintah ini

sudo rm /var/www/html/*.zip

Edit file .env menggunakan perintah ini:

sudo nano /var/www/html/.env

Ubah PUSHER_APP_HOST sesuai IP atau alamat server

Output
. . .

LARAVEL_WEBSOCKETS_PORT=6001
PUSHER_APP_HOST=127.0.0.1

. . .
Notes

Jangan lupa untuk membuka traffic TCP untuk port 6001 pada firewall, karena akan digunakan oleh websocket.

Setup Apache

Enable module rewrite menggunakan perintah berikut:

sudo a2enmod rewrite

Buat virtual host menggunakan perintah berikut:

Info

Ubah DOMAIN_EQUAL_SERVER dengan nama domain yang diberikan ke client tersebut.

sudo nano /etc/apache2/sites-available/DOMAIN_EQUAL_SERVER.conf

Paste konfigurasi berikut

/etc/apache2/sites-available/DOMAIN_EQUAL_SERVER.conf
<VirtualHost *:80>
ServerAdmin info@equalsystem.io
DocumentRoot "/var/www/html/"
ServerName DOMAIN_EQUAL_SERVER

<Directory "/var/www/html/">
Options +Indexes +FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error_equal.log
CustomLog ${APACHE_LOG_DIR}/access_equal.log combined
</VirtualHost>

Notes: Tekan ctrl + x kemudian y kemudian enter untuk menyimpan.

Enable virtual host menggunakan perintah berikut:

sudo a2ensite DOMAIN_EQUAL_SERVER.conf

Restart apache menggunakan perintah berikut:

sudo apachectl restart

Setup Database

Masuk ke MySQL server menggunakan perintah berikut:

sudo mysql -u root

Buat database api dan api_sync_log dengan perintah berikut:

CREATE DATABASE IF NOT EXISTS api CHARACTER SET latin1 COLLATE latin1_general_ci;
CREATE DATABASE IF NOT EXISTS api_sync_log CHARACTER SET latin1 COLLATE latin1_general_ci;

Import file sql menggunakan perintah berikut:

use api;
source /var/www/html/_sql/1_api.sql;

use api;
source /var/www/html/_sql/2_api_trigger.sql;

Buka http://ip_server atau http://alamat_server, jika installasi berhasil maka akan di redirect ke halaman Google.

Update License

Lisensi yang didapatkan biasanya akan dalam bentuk format seperti ini:

  • DEMOEQUALSYSTEM-Yogyakarta-DaerahIstimewaYogyakarta_20190202_2021-09-16-15-05-23.dat
  • DEMOEQUALSYSTEM-Yogyakarta-DaerahIstimewaYogyakarta_20190202_2021-09-16-15-05-23.lic

Rename terlebih dahulu dengan nama berikut sesuai dengan extension nya (.lic / .dat)

  • EqualERP.lic
  • ERPHelper.dat

Upload license tersebut dari local ke server menggunakan perintah berikut:

Info
  • Jalankan perintah dibawah ini menggunakan Command Prompt atau Terminal di local PC Anda.
  • Ganti SERVER_CERT.pem dengan file certificate untuk login ke server yang dituju.
  • Ganti IP_SERVER dengan IP Address server yang dituju.
scp -i SERVER_CERT.pem EqualERP.lic ubuntu@IP_SERVER:/var/www/html/app/Lib/
scp -i SERVER_CERT.pem ERPHelper.dat ubuntu@IP_SERVER:/var/www/html/app/Lib/

Switch Timezone

Untuk mengubah timezone Backend pada server yang berada di luar zona WIB edit Asia\Jakarta menggunakan perintah berikut:

sudo nano /var/www/html/app/Providers/AppServiceProvider.php

Ubah menjadi salah satu timezone berikut:

  • Asia/Makassar (WITA)
  • Asia/Jayapura (WIT)

Misal diubah menjadi zona WITA, contohnya seperti berikut:

/var/www/html/app/Providers/AppServiceProvider.php
. . .

public function boot()
{
//Schema::defaultStringLength(191);
\Carbon\Carbon::setLocale('id');
date_default_timezone_set('Asia/Makassar');
DB::connection()->enableQueryLog();
}

. . .

Notes: Tekan ctrl + x kemudian y kemudian enter untuk menyimpan.

Fix Directory Permission

Jalankan perintah berikut:

sudo chmod -R 755 /var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo chgrp -R www-data /var/www/html/storage
sudo chmod -R ug+rwx /var/www/html/storage
sudo chgrp -R www-data /var/www/html/app/Lib
sudo chmod -R ug+rwx /var/www/html/app/Lib

Server Setting

Lakukan server setting menggunakan aplikasi frontend. Apabila server setting berhasil maka akan diarahkan ke halaman Sign In.

Import Update Trigger

Khusus untuk versi 2.2.1 ada update trigger yang dilakukan setelah server setting, import file v220_api_update_trigger.sql menggunakan perintah berikut:

sudo mysql -u root
use api;
source /var/www/html/_sql/v220_api_update_trigger.sql;

Import file sql tersebut ke database api.

Notes

File sql tersebut hanya bisa di import setelah melakukan server setting, apabila Anda belum melakukan server setting maka proses import akan gagal.

Scheduler

Setup Supervisor

Info

Scheduler akan berjalan dengan baik ketika di install setelah melakukan server setting. Apabila proses installasi nya dilakukan sebelum melakukan server setting, akan ada banyak error yang terjadi kedepannya.

Setelah selesai server setting, install Scheduler pada server menggunakan perintah berikut:

sudo nano /etc/supervisor/conf.d/laravel-websocket.conf

Paste konfigurasi berikut:

/etc/supervisor/conf.d/laravel-websocket.conf
[program:laravel-websocket]
command=php /var/www/html/artisan websocket:serve
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/websocket.log

Notes: Tekan ctrl + x kemudian y kemudian enter untuk menyimpan.

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

Paste konfigurasi berikut:

/etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
command=php /var/www/html/artisan queue:listen --timeout=0 --delay=0 --tries=3 --sleep=3 --queue=manual,raptor
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker.log

Notes: Tekan ctrl + x kemudian y kemudian enter untuk menyimpan.

Gunakan perintah berikut untuk menjalankan scheduler:

sudo supervisorctl update

Gunakan perintah berikut untuk melihat status scheduler:

sudo supervisorctl status

Apabila berhasil, outputnya kurang lebih seperti berikut:

Output
laravel-websocket                RUNNING   pid 3470, uptime 0:00:05
laravel-worker RUNNING pid 3472, uptime 0:00:05

Setup Cronjob

Jalankan perintah berikut:

sudo su
crontab -e

Apabila ada output seperti berikut:

Crontab First Output
no crontab for root - using an empty one

Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed

Choose 1-4 [1]:

Tekan 1 kemudian tekan enter

Tambahkan kode berikut pada bagian paling bawah:

# laravel scheduler
* * * * * sudo php /var/www/html/artisan schedule:run >> /dev/null 2>&1

Notes: Tekan ctrl + x kemudian y kemudian enter untuk menyimpan.

Apabila berhasil, outputnya kuran lebih seperti berikut:

Output
crontab: installing new crontab

Jalankan perintah berikut:

exit