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
developmentbranch - Buat file
.envdengan menyalin file.env.example, lalu konfigurasikan seperti berikut:- Ubah
APP_ENVmenjadilocal - Ubah
APP_DEBUGmenjaditrue
- Ubah
composer i --ignore-platform-reqsvendor/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 -pcreate 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
developmentbranch - Buat file
.envdengan menyalin file.env.example, lalu konfigurasikan seperti berikut:- Ubah
APP_ENVmenjadilocal - Ubah
APP_DEBUGmenjaditrue
- Ubah
composer iphp artisan app:install
- Pastikan ekstensi PHP yang dibutuhkan Laravel
v8sudah terpasang pada local development environment, sesuai dokumentasi berikut
- Gunakan
php artisan serveuntuk membuka aplikasi via PHP Built-in Web Server- Gunakan
php artisan queue:work databaseuntuk testing fitur Queues- Gunakan
php artisan schedule:rununtuk testing fitur Task Scheduling- Gunakan
php artisan optimizesaat setelah proses development untuk mempercepat performa aplikasi
- Gunakan
composer devuntuk optimalisasi Laravel Intellisense pada IDE anda- Gunakan
composer lintuntuk 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 -pcreate 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
mainbranch -
Buat file
.envdengan menyalin file.env.example, lalu konfigurasikan seperti berikut:- Ubah
APP_ENVmenjadiproduction - Ubah
APP_DEBUGmenjadifalse
- Ubah
-
composer i --no-dev -
php artisan app:install -
Konfigurasikan Web Server dengan path Document Root mengarah ke lokasi direktori
publicpada proyek -
Install redis-server untuk aplikasi:
sudo apt install redis-serversudo nano /etc/redis/redis.conf, lalu ubahsupervised nomenjadisupervised systemdsudo 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/webdengan 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/webdengan lokasi direktori proyek -
sudo supervisorctl reread -
sudo supervisorctl update -
sudo supervisorctl restart all
-
- Pastikan ekstensi PHP yang dibutuhkan Laravel
v8sudah terpasang pada server, sesuai dokumentasi berikut
- Untuk mempercepat performa aplikasi, jalankan
php artisan optimizesaat setelah update source code pada aplikasi