RINTARA INSIGHTS
Modul 8: Push ke GitHub dan Deploy Aplikasi
Panduan push aplikasi Python ke GitHub dan deploy ke Render Free, Railway Free atau penyedia lain dengan migrasi, smoke test serta semakan persistence.
Hasil pembelajaran
Selepas modul ini, anda boleh menyediakan repositori yang selamat, push kod ke GitHub, deploy aplikasi Python ke Render atau Railway, menjalankan migrasi pangkalan data dan mengesahkan aplikasi selepas deployment.
Maklumat pelan hosting boleh berubah. Semak halaman harga dan had rasmi sebelum setiap deployment. Hosting percuma sesuai untuk pembelajaran, prototaip dan demo—bukan secara automatik sesuai untuk production.
1. Sediakan aplikasi sebelum push
- Pastikan aplikasi berjalan dan semua ujian lulus secara lokal.
- Senaraikan kebergantungan dalam
requirements.txt. - Sediakan titik masuk WSGI seperti
wsgi:appdan gunakan Gunicorn untuk production. - Gunakan pemboleh ubah persekitaran untuk
SECRET_KEY,DATABASE_URLdan kunci API. - Masukkan
.env, pangkalan data lokal, fail muat naik dan cache ke.gitignore. - Sediakan
.env.exampleyang hanya mengandungi nama pemboleh ubah dan nilai contoh tidak sensitif.
Contoh minimum .gitignore
.env
.venv/
venv/
__pycache__/
*.pyc
instance/*.db
instance/uploads/
.pytest_cache/
2. Push projek ke GitHub
Cipta repositori kosong di GitHub tanpa menambah README atau fail lain jika projek lokal sudah mempunyai sejarah Git. Kemudian jalankan:
git status
git add .
git commit -m "Prepare application for deployment"
git branch --show-current
git remote add origin https://github.com/[AKAUN]/[REPOSITORI].git
git push -u origin [NAMA_BRANCH]
Jika remote origin sudah wujud, semak dengan git remote -v; jangan tambah kali kedua. Sintaks commit yang betul ialah git commit -m "mesej", bukannya git -m commit.
Jangan push kata laluan, token, kunci API, fail
.envatau data peribadi. Jika rahsia pernah dikomit, menambahkannya ke.gitignoresahaja tidak mencukupi—batalkan atau putarkan rahsia tersebut dan bersihkan sejarah repositori.
3. Tetapkan arahan deployment
Untuk aplikasi Flask dengan titik masuk wsgi:app, tetapan lazim ialah:
Build command:
pip install -r requirements.txt
Start command tanpa migrasi:
gunicorn --config gunicorn.conf.py wsgi:app
Start command dengan migrasi sebelum aplikasi bermula:
/bin/sh -c 'python -m flask --app wsgi:app db upgrade && exec gunicorn --config gunicorn.conf.py wsgi:app'
Gunakan arahan migrasi berasingan atau pre-deploy command jika pelan hosting menyokongnya. Pada pelan yang tidak menyediakan fungsi tersebut, arahan shell gabungan boleh digunakan untuk aplikasi satu instance. Jangan jalankan migrasi serentak daripada banyak instance tanpa strategi deployment yang sesuai.
4. Deploy ke Render Free
- Di Render Dashboard, pilih New → Web Service dan sambungkan repositori GitHub.
- Pilih branch deployment dan runtime Python atau Docker yang sepadan dengan projek.
- Pilih instance Free jika tersedia untuk workspace anda.
- Masukkan build command, start command dan pemboleh ubah persekitaran.
- Gunakan pangkalan data PostgreSQL melalui
DATABASE_URL; jangan bergantung pada SQLite lokal untuk data kekal. - Deploy, semak build log, migration log dan runtime log.
Had penting Render Free setakat semakan 7 Ogos 2026:
- Web service spin down selepas 15 minit tanpa trafik dan cold start boleh mengambil kira-kira satu minit.
- Filesystem bersifat sementara; SQLite, fail muat naik dan perubahan lokal hilang ketika restart, redeploy atau spin-down.
- Workspace menerima 750 jam instance percuma sebulan.
- Render Postgres Free mempunyai had 1 GB dan tamat 30 hari selepas dicipta.
5. Deploy ke Railway Free
- Pilih New Project → Deploy from GitHub Repo dan pilih repositori.
- Pastikan Railway mengesan Python atau tetapkan build dan start command secara manual.
- Tambah semua pemboleh ubah persekitaran melalui tab Variables.
- Tambah PostgreSQL jika aplikasi memerlukan data kekal dan gunakan URL sambungan yang disediakan.
- Jana domain awam, deploy dan semak logs serta health check.
Setakat semakan 7 Ogos 2026, Railway menawarkan pelan Free $0 dengan kredit penggunaan $1 sebulan dan trial baharu dengan kredit sekali beri $5. Pelan Hobby bukan percuma: harganya $5 sebulan dengan kredit penggunaan $5. Penggunaan melebihi kredit atau perubahan pelan boleh menghasilkan caj, jadi tetapkan had kos dan semak halaman pricing sebelum deployment.
6. Cara menilai hosting percuma lain
Gunakan semakan yang sama untuk mana-mana penyedia:
- Adakah Python, proses web dan PostgreSQL disokong?
- Adakah perkhidmatan tidur, mempunyai cold start atau had jam?
- Adakah filesystem kekal atau sementara?
- Berapa lama pangkalan data percuma disimpan?
- Adakah kad pembayaran diperlukan dan bolehkah kos dihadkan?
- Adakah custom domain, TLS, logs, backup dan rollback tersedia?
- Apakah polisi penggunaan wajar, SLA dan kesesuaian untuk production?
7. Ujian selepas deployment
- Buka halaman utama dan endpoint health check.
- Uji daftar masuk, kebenaran akses dan satu aliran cipta/kemas kini data.
- Sahkan versi migrasi pangkalan data.
- Restart atau redeploy dan pastikan data kekal.
- Semak pautan statik, fail CSS/JS, zon waktu dan e-mel.
- Periksa logs supaya tiada rahsia atau data peribadi didedahkan.
- Rekod URL, commit, masa deployment, keputusan smoke test dan langkah rollback.
Master Prompt Template
Bertindak sebagai jurutera DevOps untuk aplikasi Python. Audit repositori dahulu dan jangan push atau deploy tanpa kebenaran saya.
Repositori: [LOKASI]
Framework dan entry point: [CONTOH: FLASK, WSGI:APP]
Pangkalan data: [JENIS]
Platform sasaran: [RENDER/RAILWAY/LAIN]
Branch deployment: [BRANCH]
Tugas:
1. Semak .gitignore, requirements, entry point, konfigurasi production, migrasi dan ujian.
2. Cari risiko rahsia atau data sensitif tanpa memaparkan nilainya.
3. Senaraikan pemboleh ubah persekitaran yang diperlukan.
4. Cadangkan build, migration dan start command yang tepat.
5. Jelaskan had pelan percuma yang perlu saya sahkan pada dokumentasi rasmi.
6. Sediakan langkah GitHub daripada git status hingga git push menggunakan branch semasa.
7. Sediakan langkah deployment platform demi platform.
8. Sediakan smoke test, health check, semakan persistence dan rollback.
9. Bezakan tindakan baca sahaja, perubahan fail, push GitHub dan perubahan hosting.
Minta kelulusan sebelum melakukan push, mencipta perkhidmatan, mengubah DNS, menjalankan migrasi production atau mendedahkan aplikasi kepada Internet. Jangan cipta nilai rahsia dan jangan anggap deployment berjaya tanpa menyemak logs serta URL sebenar.
Latihan praktikal
Deploy aplikasi ke satu platform percuma. Simpan bukti commit GitHub, build yang berjaya, versi migrasi, keputusan sekurang-kurangnya lima smoke test dan satu ujian persistence selepas restart.
Senarai semak tamat modul
- Tiada rahsia atau data sensitif dalam repositori.
- Build, migrasi dan start command didokumenkan.
- Aplikasi menggunakan pangkalan data yang sesuai untuk data kekal.
- Had dan potensi kos platform difahami.
- Logs, health check, smoke test dan rollback telah disemak.
- Commit dan versi aplikasi production boleh dikenal pasti.
Dicetak daripada https://www.rintara.my/insights/python-ai-08-github-deploy-hosting-percuma