Asset Management System for PT Perusahaan Listrik Negara (Persero).
🔨 Built with Laravel Jetstream and Inertia.js for Single Page Application builder (PWA enabled).
⚡ Supercharged with Laravel Octane for massive server performance boost.
⚠️ Important Notes
- Swoole need to be installed in the server in order to use Laravel Octane.
- Please respect the Laravel Octane rules and limitations in order to avoid memory leaks.
- Laravel
v8
- Laravel Eloquent
- Laravel Events
- Laravel Queues
- Laravel Task Scheduling
- Laravel Mix
- Laravel Broadcasting
- Laravel Jetstream
- Laravel Excel
- Laravel Fluent
- Laravel Octane optional
- Laravel Cloudflare optional
- Laravel Sail optional
- PHP PSR2 Coding Style Standard
- PHPStan (with Larastan extension)
- Inertia.js
- Inertia.js Tables
- Vue.js
- Webpack
- Supercronic
- Supervisor
- MySQL 5.x
- Swoole optional
- Github Action CI/CD optional
- Docker optional
- Sentry optional
- npm optional
Ikuti salah satu dari langkah berikut untuk melakukan deploy aplikasi pada tahap development.
Langkah instalasi containerized application dengan ⛵ Laravel Sail untuk memudahkan proses deployment aplikasi
- PHP
v8.0
- Composer
v2
- Docker
- Docker for Windows
v4.0.1
- Docker for Linux
v4.0.1
- Docker for Mac
v20.10
- Docker for Windows
- Clone repository ini ke local environment, lalu checkout ke
development
branch - Buat file
.env
dengan menyalin file.env.example
, lalu konfigurasikan seperti berikut:- Ubah
APP_ENV
menjadilocal
- Ubah
APP_DEBUG
menjaditrue
- Ubah
composer i --ignore-platform-reqs
vendor/bin/sail up
- Untuk kebutuhan running aplikasi, Docker Image sudah tersedia pada laman berikut.
- Jika menggunakan OS Windows, jalankan Laravel Sail dalam Windows WSL v2
- Alamat URL dan port aplikasi yang digunakan Laravel Sail sesuai konfigurasi pada
.env
- Pelajari perintah Laravel Sail pada dokumentasi berikut
Langkah tradisional untuk melakukan deploy aplikasi pada local atau self-hosted environment
- PHP
v8.0
- Composer
v2
- MySQL Server
v5.7
- NodeJS
v16
- npm
v8
- Laravel Homestead / Laravel Valet optional
- Buat MySQL database untuk aplikasi:
mysql -u root -p
create database simase;
create user 'simase'@'localhost' identified by 'simase';
grant all privileges on simase.* to 'simase'@'localhost';
flush privileges;
exit;
- Clone repository ini ke local environment, lalu checkout ke
development
branch - Buat file
.env
dengan menyalin file.env.example
, lalu konfigurasikan seperti berikut:- Ubah
APP_ENV
menjadilocal
- Ubah
APP_DEBUG
menjaditrue
- Ubah
composer i
php artisan app:install
- Pastikan ekstensi PHP yang dibutuhkan Laravel
v8
sudah terpasang pada local development environment, sesuai dokumentasi berikut
- Gunakan
php artisan serve
untuk membuka aplikasi via PHP Built-in Web Server- Gunakan
php artisan queue:work database
untuk testing fitur Queues- Gunakan
php artisan schedule:run
untuk testing fitur Task Scheduling- Gunakan
php artisan optimize
saat setelah proses development untuk mempercepat performa aplikasi
- Gunakan
composer dev
untuk optimalisasi Laravel Intellisense pada IDE anda- Gunakan
composer lint
untuk menjalankan PHP Linter (Static Code Analaysis)- Gunakan local development environment seperti Laravel Homestead / Laravel Valet
Ikuti langkah berikut ini untuk melakukan deploy aplikasi pada tahap staging atau production.
Langkah tradisional untuk melakukan deploy aplikasi pada local atau self-hosted environment
- PHP
v8.0
- Composer
v2
- MySQL Server
v5.7
- NodeJS
v16
- npm
v8
- Nginx / Apache2 / LiteSpeed
- Supercronic
- Supervisor
-
Buat MySQL database untuk aplikasi:
mysql -u root -p
create database simase;
create user 'simase'@'localhost' identified by 'simase';
grant all privileges on simase.* to 'simase'@'localhost';
flush privileges;
exit;
-
Clone repository ini ke server, lalu checkout ke
main
branch -
Buat file
.env
dengan menyalin file.env.example
, lalu konfigurasikan seperti berikut:- Ubah
APP_ENV
menjadiproduction
- Ubah
APP_DEBUG
menjadifalse
- Ubah
-
composer i --no-dev
-
php artisan app:install
-
Konfigurasikan Web Server dengan path Document Root mengarah ke lokasi direktori
public
pada proyek -
Install redis-server untuk aplikasi:
sudo apt install redis-server
sudo nano /etc/redis/redis.conf
, lalu ubahsupervised no
menjadisupervised systemd
sudo service redis-server restart
-
Install supercronic untuk aplikasi:
-
sudo apt install snap
-
sudo snap install go
-
go get -d github.com/aptible/supercronic
-
cd ~/go/pkg/mod/github.com/aptible/supercronic@v<version>
Ubah
<version>
ke versi terakhir supercronic sesuai laman berikut</div>
-
go mod vendor
-
go install
-
source /etc/profile
-
Verifikasi instalasi supercronic dengan perintah
supercronic
-
Siapkan cronjob untuk aplikasi:
rm -rf ~/supercronic && \ sudo mkdir ~/supercronic && \ sudo touch ~/supercronic/simase.cron && \ sudo echo "path=/var/www/simase/web" >> ~/supercronic/simase.cron && \ sudo echo "* * * * * php $path/artisan schedule:run >> /dev/null 2>&1" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/laravel.log && touch $path/storage/logs/laravel.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/simase-cron.log && touch $path/storage/logs/simase-cron.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/simase-worker.log && touch $path/storage/logs/simase-worker.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/simase-octane.log && touch $path/storage/logs/simase-octane.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/simase-horizon.log && touch $path/storage/logs/simase-horizon.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/nginx-access.log && touch $path/storage/logs/nginx-access.log" >> ~/supercronic/simase.cron && \ sudo echo "0 1 * * * rm -rf $path/storage/logs/nginx-error.log && touch $path/storage/logs/nginx-error.log" >> ~/supercronic/simase.cron
Sesuaikan path
/var/www/simase/web
dengan lokasi direktori proyek
-
-
Install supervisor untuk aplikasi:
-
sudo apt install supervisor
-
sudo chown -R www-data:www-data /var/www/
-
nano /etc/supervisor/conf.d/simase-supervisor.conf
-
Masukkan konfigurasi berikut:
[supervisord] nodaemon=false logfile=/dev/null logfile_maxbytes=0 pidfile=/run/supervisord.pid [program:simase-cron] process_name=%(program_name)s_%(process_num)02d command=/root/go/bin/supercronic /root/supercronic/simase.cron autostart=true autorestart=true user=root numprocs=1 redirect_stderr=true stdout_logfile=/var/www/simase/web/storage/logs/simase-cron.log stdout_logfile_maxbytes=0 stopwaitsecs=3600 [program:simase-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/simase/web/artisan queue:work database --sleep=3 --tries=3 autostart=true autorestart=true user=root numprocs=8 redirect_stderr=true stdout_logfile=/var/www/simase/web/storage/logs/simase-worker.log stdout_logfile_maxbytes=0 stopwaitsecs=3600 [program:simase-octane] process_name=%(program_name)s_%(process_num)02d command=php /var/www/simase/web/artisan octane:start --max-requests=500 autostart=true autorestart=true user=root numprocs=1 redirect_stderr=true stdout_logfile=/var/www/simase/web/storage/logs/simase-octane.log stdout_logfile_maxbytes=0 stopwaitsecs=3600 [program:simase-horizon] process_name=%(program_name)s_%(process_num)02d command=php /var/www/simase/artisan horizon autostart=true autorestart=true user=root numprocs=1 redirect_stderr=true stdout_logfile=/var/www/simase/storage/logs/simase-horizon.log stdout_logfile_maxbytes=0 stopwaitsecs=3600
</div>
Sesuaikan
/var/www/simase/web
dengan lokasi direktori proyek -
sudo supervisorctl reread
-
sudo supervisorctl update
-
sudo supervisorctl restart all
-
- Pastikan ekstensi PHP yang dibutuhkan Laravel
v8
sudah terpasang pada server, sesuai dokumentasi berikut
- Untuk mempercepat performa aplikasi, jalankan
php artisan optimize
saat setelah update source code pada aplikasi