From 56535e7ba4f75e590e2203b224c5ad0d6da8b046 Mon Sep 17 00:00:00 2001 From: agusmakmun Date: Fri, 20 Jan 2017 08:19:17 +0700 Subject: [PATCH 1/3] added lang:id & deploy django on heroku --- id/deploy_django_di_heroku.md | 180 ++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 id/deploy_django_di_heroku.md diff --git a/id/deploy_django_di_heroku.md b/id/deploy_django_di_heroku.md new file mode 100644 index 0000000..3d76fc4 --- /dev/null +++ b/id/deploy_django_di_heroku.md @@ -0,0 +1,180 @@ +# Heroku & Django + +> **English Version:** [Heroku & Django](../all/heroku_django.md) + +Cara Deploy Project Django di Heroku.com + +### 1. Buat project Django anda, misalkan seperti contoh dibawah. + +``` +src/ +src/manage.py +src/myproject/ +src/myproject/settings.py +``` + +### 2. Install [Heroku toolbelt](https://toolbelt.heroku.com/) + +### 3. Membackup _(Membuat file cadangan untuk `settings.py`)_ + +> Hal ini sangat penting dilakukan untuk meminimalisir apabila terjadi kesalahan konfigurasi, maupun kebutuhan lainnya. + +- Silahkan rename/ganti nama file `settings.py` _(yang default)_ menjadi `old_settings.py`. +- Buat folder baru bernama `settings/` yang sejajar dengan file `old_settings.py` yang telah anda buat. + + - Didalam folder `settings/` terdapat 3 file berupa: + - `__init__.py` + - `local.py` + - `production.py` + + - Dan kurang lebih project anda nantinya akan seperti ini: + + ``` + src/ + src/manage.py + src/myproject/ + src/myproject/old_settings.py + src/myproject/settings/__init__.py + src/myproject/settings/local.py + src/myproject/settings/production.py + ``` + +### 4. Menambahkan script didalam file `settings/__init__.py`: + +Didalam file `__init__.py` tambahkan beberapa kode untuk mengimport'nya +dari file `local.py` atau `production.py` + +```python +try: + from .local import * +except: + pass + +from .production import * +``` + +- Copy/salin seluruh kode yang ada didalam file `old_settings.py` ke `local.py`. +- Copy/salin seluruh kode yang ada didalam file `old_settings.py` ke `production.py`. + +### 5. Mengawali _(initialize)_ repository Git anda dan menambahkan file `.gitignore`: + +Pada project root anda, silahkan ikuti beberapa perintah berikut: +- mengawalinya dengan perintah `$ git init` _(untuk menggenerate file-file git kedalam folder project anda)_. +- buat file bernama `.gitignore` _(file ini digunakan untuk mengecualikan file/folder yang tidak di ikutsertakan ketika anda menguploadnya ke heroku)_ + + > File `.gitingore` ini sejajar dengan file `manage.py` + + Didalam file `.gitingore`, tambahkan beberapa baris nama file/folder didalamnya: + + ``` + #.gitignore + yourproject/settings/local.py + ``` + + > Dalam kasus diatas berarti yang tidak ter-unggah nantinya adalah file `yourproject/settings/local.py`. + > Untuk lebih lengkapnya bisa melihat dokumentasi dari `.gitignore`: https://git-scm.com/docs/gitignore + +### 6. Menambahkan file `requirements.txt`: + +Didalam file `requirements.txt` ini merupakan beberapa packages yang anda butuhkan: + +``` +dj-database-url==0.4.0 +Django==1.9.7 +gunicorn==19.4.5 +psycopg2==2.6.1 +whitenoise==2.0.6 +``` + +> Anda mungkin perlu memeriksa versi masing-masing dari tool/package, karena hal tersebut adalah penting. + +### 7. Menambahkan file `Procfile`: + +File `Procfile` ini tanpa diikuti extensi apapun _(seperti halnya menggunakan `.` titik)_ maupun yang lainnya. Taruh file ini sejajar dengan file `manage.py`, dan masukkan perintah berikut didalam filenya: + +``` +web: gunicorn yourproject.wsgi +``` + +### 8. Mengganti kode didalam file `production.py` + +*Adapun file `local.py` tidak dirubah, file tersebut digunakan untuk keperluan development saja.* + +``` +DEBUG = FALSE +import dj_database_url +DATABASES = { + 'default': dj_database_url.config() +} + +SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') +``` + +### 9. Mengecek dan menambahkan project anda ke `.git` + +``` +$ git status -u # file `local.py` tidak muncul disini. +$ git add --all # atau juga bisa dengan menggunakan `$ git add .` +$ git commit -m "Prepare for production" # memberikan komentar pada commit. +``` + +10. Membuat project di Heroku beserta Databasenya. + +``` +$ heroku create +$ heroku addons:create heroku-postgresql:hobby-dev # menambahkan database +$ heroku config:set DISABLE_COLLECTSTATIC=1 # mematikan perintah untuk mengoleksi file-file static. +``` + +> **Catatan:** `` harus diubah dengan nama project anda. + +### 11. Deploy ke Heroku + +``` +$ git push heroku master +``` + +### 12. Apakah ada perubahan lain? _(ya, tentu ada)_. Pastikan Anda melakukan hal-hal berikut: + + 1. Rubah didalam file `requirements.txt` sesuai dengan kebutuhan. + 2. Rubah didalam file `production.py` sesuai dengan kebutuhan _(Dan bandingkan kembali dengan file `local.py`)_ + 3. Commit seluruh perubahan: + + ``` + git add --all + git commit -m "Update changes" + ``` + + 4. Push ke Heroku: + + ``` + git push heroku master + ``` + +## Perintah yang Umum digunakan + +* `$ heroku restart`: untuk beberapa alasan yang mungkin anda butuh untuk merestartnya. + +* `$ heroku run bash`: untuk menjalankan bash Linux didalam app anda. + +* `$ heroku run python manage.py shell`: menjalankan Python shell di Heroku + +* `$ heroku run python manage.py`: Anda juga diizinkan untuk menggunakan perintah tambahan seperti halnya `heroku run python manage.py migate` + +* `$ heroku logs`: untuk mengecek logs dari app anda, hal ini biasanya untuk mengecek error pada aplikasi atau `Application Errors` pada saat men-deploy situs/app anda. + +* `$ heroku open`: membukan situs project anda. + +* `$ heroku ps:scale web=X worker=Y`: + - ganti `X` dengan nomor dari `web dynos` dari app anda; semakin tinggi jumlahnya semakin besar kinerja dan biayanya. + - untuk lebih lanjut, silahkan cek pada [dokumentasinya](https://devcenter.heroku.com/articles/scaling). + +---------------------- + +Subscribe on our [YouTube Channel](http://joincfe.com/youtube) and join us for more in-depth tutorials on [Django development](http://joincfe.com/enroll). + +Cheers! + +## Organized by CodingForEntrepreneurs + +> Last edited by: Agus Makmun - _[github.com/agusmakmun](github.com/agusmakmun)_ From bd331980739e1ae7cd3fe511b9a0978a111a0251 Mon Sep 17 00:00:00 2001 From: agusmakmun Date: Fri, 20 Jan 2017 08:26:45 +0700 Subject: [PATCH 2/3] fixed url --- id/deploy_django_di_heroku.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/id/deploy_django_di_heroku.md b/id/deploy_django_di_heroku.md index 3d76fc4..376fb4a 100644 --- a/id/deploy_django_di_heroku.md +++ b/id/deploy_django_di_heroku.md @@ -4,7 +4,7 @@ Cara Deploy Project Django di Heroku.com -### 1. Buat project Django anda, misalkan seperti contoh dibawah. +#### 1. Buat project Django anda, misalkan seperti contoh dibawah. ``` src/ @@ -13,9 +13,9 @@ src/myproject/ src/myproject/settings.py ``` -### 2. Install [Heroku toolbelt](https://toolbelt.heroku.com/) +#### 2. Install [Heroku toolbelt](https://toolbelt.heroku.com/) -### 3. Membackup _(Membuat file cadangan untuk `settings.py`)_ +#### 3. Membackup _(Membuat file cadangan untuk `settings.py`)_ > Hal ini sangat penting dilakukan untuk meminimalisir apabila terjadi kesalahan konfigurasi, maupun kebutuhan lainnya. @@ -39,7 +39,7 @@ src/myproject/settings.py src/myproject/settings/production.py ``` -### 4. Menambahkan script didalam file `settings/__init__.py`: +#### 4. Menambahkan script didalam file `settings/__init__.py`: Didalam file `__init__.py` tambahkan beberapa kode untuk mengimport'nya dari file `local.py` atau `production.py` @@ -56,7 +56,7 @@ from .production import * - Copy/salin seluruh kode yang ada didalam file `old_settings.py` ke `local.py`. - Copy/salin seluruh kode yang ada didalam file `old_settings.py` ke `production.py`. -### 5. Mengawali _(initialize)_ repository Git anda dan menambahkan file `.gitignore`: +#### 5. Mengawali _(initialize)_ repository Git anda dan menambahkan file `.gitignore`: Pada project root anda, silahkan ikuti beberapa perintah berikut: - mengawalinya dengan perintah `$ git init` _(untuk menggenerate file-file git kedalam folder project anda)_. @@ -74,7 +74,7 @@ Pada project root anda, silahkan ikuti beberapa perintah berikut: > Dalam kasus diatas berarti yang tidak ter-unggah nantinya adalah file `yourproject/settings/local.py`. > Untuk lebih lengkapnya bisa melihat dokumentasi dari `.gitignore`: https://git-scm.com/docs/gitignore -### 6. Menambahkan file `requirements.txt`: +#### 6. Menambahkan file `requirements.txt`: Didalam file `requirements.txt` ini merupakan beberapa packages yang anda butuhkan: @@ -88,7 +88,7 @@ whitenoise==2.0.6 > Anda mungkin perlu memeriksa versi masing-masing dari tool/package, karena hal tersebut adalah penting. -### 7. Menambahkan file `Procfile`: +#### 7. Menambahkan file `Procfile`: File `Procfile` ini tanpa diikuti extensi apapun _(seperti halnya menggunakan `.` titik)_ maupun yang lainnya. Taruh file ini sejajar dengan file `manage.py`, dan masukkan perintah berikut didalam filenya: @@ -96,7 +96,7 @@ File `Procfile` ini tanpa diikuti extensi apapun _(seperti halnya menggunakan `. web: gunicorn yourproject.wsgi ``` -### 8. Mengganti kode didalam file `production.py` +#### 8. Mengganti kode didalam file `production.py` *Adapun file `local.py` tidak dirubah, file tersebut digunakan untuk keperluan development saja.* @@ -110,7 +110,7 @@ DATABASES = { SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') ``` -### 9. Mengecek dan menambahkan project anda ke `.git` +#### 9. Mengecek dan menambahkan project anda ke `.git` ``` $ git status -u # file `local.py` tidak muncul disini. @@ -128,13 +128,13 @@ $ heroku config:set DISABLE_COLLECTSTATIC=1 # mematikan perintah untu > **Catatan:** `` harus diubah dengan nama project anda. -### 11. Deploy ke Heroku +#### 11. Deploy ke Heroku ``` $ git push heroku master ``` -### 12. Apakah ada perubahan lain? _(ya, tentu ada)_. Pastikan Anda melakukan hal-hal berikut: +#### 12. Apakah ada perubahan lain? _(ya, tentu ada)_. Pastikan Anda melakukan hal-hal berikut: 1. Rubah didalam file `requirements.txt` sesuai dengan kebutuhan. 2. Rubah didalam file `production.py` sesuai dengan kebutuhan _(Dan bandingkan kembali dengan file `local.py`)_ @@ -177,4 +177,4 @@ Cheers! ## Organized by CodingForEntrepreneurs -> Last edited by: Agus Makmun - _[github.com/agusmakmun](github.com/agusmakmun)_ +> Last edited by: Agus Makmun - _[https://github.com/agusmakmun](github.com/agusmakmun)_ From d48692916531a1d7f6c79bdac897d816f4a0f4c5 Mon Sep 17 00:00:00 2001 From: agusmakmun Date: Fri, 20 Jan 2017 08:29:39 +0700 Subject: [PATCH 3/3] fixed url --- id/deploy_django_di_heroku.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/deploy_django_di_heroku.md b/id/deploy_django_di_heroku.md index 376fb4a..7ce9900 100644 --- a/id/deploy_django_di_heroku.md +++ b/id/deploy_django_di_heroku.md @@ -177,4 +177,4 @@ Cheers! ## Organized by CodingForEntrepreneurs -> Last edited by: Agus Makmun - _[https://github.com/agusmakmun](github.com/agusmakmun)_ +> Last edited by: Agus Makmun - _[github.com/agusmakmun](https://github.com/agusmakmun)_