======================================================================== PANDUAN DEPLOYMENT APLIKASI MONITORING (SILAWARE) SUBDOMAIN: power.silvestersila.my.id ======================================================================== Dokumen ini menjelaskan langkah demi langkah untuk menyebarkan (deploy) aplikasi Flask Monitoring System ke hosting cPanel, termasuk pengaturan database, aplikasi Python (WSGI), dan daemon MQTT latar belakang. ------------------------------------------------------------------------ LANGKAH 1: PERSIAPAN BERKAS APLIKASI ------------------------------------------------------------------------ 1. Bersihkan berkas-berkas pengujian lokal dari komputer Anda (seperti virtual environment lokal `.env`, `__pycache__`, dll). 2. Pastikan file 'requirements.txt' sudah menyertakan library utama: - Flask - PyMySQL - paho-mqtt 3. Pastikan file 'passenger_wsgi.py' sudah ada di root folder dengan isi: --------------------------------------------------------------------- import sys import os sys.path.insert(0, os.path.dirname(__file__)) from app import app as application --------------------------------------------------------------------- 4. Kompres seluruh folder proyek menjadi berkas ZIP (misal: 'silaware.zip'). ------------------------------------------------------------------------ LANGKAH 2: PENGATURAN SUBDOMAIN & FILE MANAGER DI CPANEL ------------------------------------------------------------------------ 1. Masuk ke cPanel Anda. 2. Cari menu "Subdomains" atau "Domains". 3. Buat subdomain baru: - Subdomain: power - Domain: silvestersila.my.id - Document Root: public_html/power (atau folder custom pilihan Anda, misal: /power_app) 4. Klik "Create". 5. Buka "File Manager", masuk ke direktori Document Root yang baru dibuat. 6. Unggah berkas 'silaware.zip' yang telah dikompres sebelumnya ke direktori tersebut, lalu ekstrak (Extract). ------------------------------------------------------------------------ LANGKAH 3: PEMBUATAN DATABASE MYSQL DI CPANEL ------------------------------------------------------------------------ 1. Di cPanel, cari dan buka menu "MySQL Database Wizard". 2. Langkah 1: Buat database baru (misal: 'username_rumahsakit'). 3. Langkah 2: Buat user database baru (misal: 'username_dbuser') dan buat password yang aman. 4. Langkah 3: Hubungkan user ke database tersebut, centang opsi "ALL PRIVILEGES" (Semua Hak Akses), lalu selesaikan wizard. 5. Impor skema tabel database Anda (tabel: accounts, devices, power_monitoring, cycle_time, utils, temphumid, dll) melalui menu "phpMyAdmin" di cPanel. 6. Perbarui konfigurasi koneksi database di file proyek Anda (terutama di 'config/db.py' atau gunakan Environment Variables di Setup Python App). ------------------------------------------------------------------------ LANGKAH 4: MEMBUAT APLIKASI PYTHON DI CPANEL ------------------------------------------------------------------------ 1. Di cPanel, cari dan buka menu "Setup Python App". 2. Klik tombol "Create Application". 3. Isi parameter aplikasi berikut: - Python Version: Pilih versi Python yang stabil (Direkomendasikan: 3.9 / 3.10 / 3.11). - Application root: Isi dengan lokasi folder extract aplikasi (misal: 'public_html/power' atau 'power_app'). - Application URL: Pilih 'power.silvestersila.my.id'. - Application startup file: Isi dengan 'passenger_wsgi.py'. - Application Entry point: Isi dengan 'application'. - Passenger log file: Isi lokasi log untuk debugging (misal: 'logs/passenger.log'). 4. Klik tombol "Create" di kanan atas. 5. Setelah terbuat, salin perintah virtual environment yang muncul di bagian atas halaman (Command for entering to the virtual environment), contoh: "source /home/username/virtualenv/power_app/3.10/bin/activate && cd /home/username/power_app" ------------------------------------------------------------------------ LANGKAH 5: INSTALASI PIP DEPENDENCIES ------------------------------------------------------------------------ 1. Masuk ke terminal SSH cPanel Anda (atau menu "Terminal" di cPanel). 2. Tempel dan jalankan perintah virtual environment yang disalin pada Langkah 4 di atas untuk masuk ke lingkungan Python. 3. Jalankan perintah instalasi library: --------------------------------------------------------------------- pip install -r requirements.txt --------------------------------------------------------------------- 4. Setelah instalasi selesai, kembali ke menu "Setup Python App" di cPanel dan klik tombol "Restart" pada aplikasi Anda. 5. Buka peramban (browser) dan akses 'https://power.silvestersila.my.id' untuk memverifikasi halaman login telah tampil dengan benar. ------------------------------------------------------------------------ LANGKAH 6: MENJALANKAN DAEMON INGESTION MQTT LINGKUNGAN LATAR BELAKANG ------------------------------------------------------------------------ PENTING: Di server hosting cPanel (Shared Hosting), proses pekerja web (Passenger WSGI) akan didaur ulang (recycled) atau dimatikan otomatis jika tidak ada lalu lintas pengunjung. Oleh karena itu, daemon MQTT ('run_mqtt.py') tidak boleh berjalan di dalam thread web server utama agar tidak memicu duplikasi koneksi atau data hilang. Jalankan 'run_mqtt.py' secara terpisah dengan metode Cron Job yang menjaga script agar tetap hidup: 1. Di cPanel, buka menu "Cron Jobs". 2. Pada kolom waktu, pilih "Once Per Minute" (* * * * *). 3. Di kolom Command, isi dengan perintah penjaga proses berikut (sesuaikan path username dan versi python Anda): --------------------------------------------------------------------- pgrep -f run_mqtt.py > /dev/null || /home/username/virtualenv/power_app/3.10/bin/python /home/username/public_html/power/run_mqtt.py >> /home/username/public_html/power/mqtt_cron.log 2>&1 --------------------------------------------------------------------- *Penjelasan*: Cron job ini berjalan setiap menit untuk memeriksa apakah daemon 'run_mqtt.py' sedang aktif. Jika tidak aktif, Cron akan otomatis menyalakannya kembali menggunakan Python virtual environment. Jika sudah aktif, Cron akan melewatinya sehingga tidak terjadi tumpang tindih. 4. Buka file 'app.py' di hosting Anda, dan pastikan konfigurasi 'RUN_MQTT_IN_WEB' disetel ke 'false' di Environment Variables "Setup Python App" agar web application tidak membuat thread MQTT sendiri: - Nama Variable: RUN_MQTT_IN_WEB - Nilai: false (Ini akan menonaktifkan MQTT thread bawaan web server dan menyerahkannya sepenuhnya ke Daemon Cron Job yang lebih stabil). Selesai! Aplikasi Anda kini sudah online sepenuhnya di power.silvestersila.my.id.