Bagaimana Mengekspos Aplikasi Demo Django ke Internet dengan Ngrok?
Diterbitkan: 2021-05-02Mari belajar bagaimana mengekspos aplikasi demo Django ke internet. Itu, tanpa menyebarkannya di layanan hosting.
Mengonfigurasi lingkungan penerapan staging hanya untuk menampilkan demo aplikasi Django Anda sangat buruk. Terlebih lagi, jika Anda hanya memerlukan URL selama beberapa menit, untuk menunjukkannya kepada klien atau rekan satu tim.
Pilihan terbaik adalah menggunakan alat untuk mengekspos server lokal Anda saat ini. Tepat! Orang-orang di seluruh dunia akan dapat melihat apa yang terjadi di localhost Anda.
Untuk itu, kita akan menggunakan Ngrok. Alat ini akan memungkinkan kita untuk membuat URL publik berdasarkan port lokal komputer kita. Semua ini berkat keajaiban Terowongan.
Sebelum memulai semua kode yang dikerjakan pada tutorial ini, akan tersedia di repositori Github ini.
Pra-persyaratan
- Python 3.6+ diinstal di sistem Anda
- Sedikit pengalaman dengan antarmuka baris perintah
- Pengetahuan dasar tentang Django
- Memahami skrip Django-admin dan manage.py
Disarankan untuk mengetahui semua hal dasar ini. Meskipun mungkin Anda dapat mengikuti tutorial ini, tanpa masalah lebih lanjut.
Membuat aplikasi Django
Untuk membuat tutorial langkah demi langkah, saya akan menjelaskan proses pembuatan proyek Django. Jika Anda sudah memilikinya, Anda dapat melewati bagian ini.
Lingkungan virtual
Pertama-tama, mari kita buat lingkungan virtual Python.
- Jadi buka terminal sistem Anda (atau shell).
- Jika Anda merasa terlalu rumit untuk membuka terminal sistem Anda, coba gunakan terminal bawaan editor kode.

- Klik Terminal>New terminal , dan sebuah shell akan muncul di bagian bawah layar Anda.
- Ketik perintah berikut untuk membuat lingkungan virtual, dengan alat Python bawaan.
python -m venv .venvIni pada dasarnya berarti:
Hai Python, buat perintah lingkungan virtual (-m venv) dengan nama .venv
- Sekarang jika Anda membuat daftar file dari direktori Anda saat ini, Anda akan melihat folder .venv .
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...- Untuk mengaktifkan lingkungan virtual, kami memanggil perintah sumber .
source .venv/bin/activate- Jika Anda menemukan masalah, silakan merujuk ke tabel berikut yang diambil dari dokumentasi python resmi.
| Peron | Kerang | Perintah untuk mengaktifkan lingkungan virtual |
|---|---|---|
| POSIX | bash/zsh | $ sumber <venv>/bin/aktifkan |
| ikan | $ sumber <venv>/bin/activate.fish | |
| csh/tcsh | $ sumber <venv>/bin/activate.csh | |
| Inti PowerShell | $ <venv>/bin/Aktifkan.ps1 | |
| jendela | cmd.exe | C:\> <venv>\Scripts\activate.bat |
| PowerShell | PS C:\> <venv>\Scripts\Activate.ps1 |
Sekarang jika Anda telah menjalankan perintah yang benar, shell Anda harus memiliki nama lingkungan virtual di dalamnya.
$ source .venv/bin/activate.fish (.venv) $Instal Django
Setelah mengaktifkan lingkungan virtual Anda, sekarang Anda dapat menginstal versi Django apa pun yang Anda inginkan. Dalam hal ini, ini adalah pilihan yang baik untuk menginstal yang terbaru.
$ pip install django Collecting django Using cached Django-3.2-py3-none-any.whl (7.9 MB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting asgiref<4,>=3.3.2 Using cached asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB) Installing collected packages: pytz, asgiref, sqlparse, django Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1Sekarang waktunya untuk membuat struktur proyek dasar dari aplikasi Django yang ingin anda ekspos.
$ django-admin startproject mytestingprojectIni akan membuat proyek Django dengan nama mytestingproject . Setelah membuatnya, kami ingin Anda masuk ke direktori tempat struktur proyek berada. Jadi mari kita cd ke dalamnya dan menjalankan server Django.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.pySekarang setelah Anda masuk, mari jalankan server Django untuk melihat tampilannya.
(.venv) $python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. May 01, 2021 - 04:34:25 Django version 3.2, using settings 'mytestingproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.Pada dasarnya, Django memberitahu kita bahwa server lokal berjalan di localhost kita (127.0.0.1 selalu menunjuk ke sana), pada port default, 8000.

Jangan khawatir tentang pesan kesalahan. Pertama, mari kita periksa semua berfungsi dengan baik di server lokal kita. Untuk melakukannya, buka browser web Anda dan rekatkan arah ini:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?Jika semuanya bekerja dengan baik, Anda akan melihat template cantik Django.

Itu semua tentang instalasi Django kami.
Sekarang mari masuk ke dalam mengekspos proyek Django ini. Jika Anda sedang mengerjakan proyek yang lebih kompleks, metode berikut untuk mengekspos aplikasi Django juga akan bekerja.
Mengekspos aplikasi Django dengan Ngrok
Seperti yang saya katakan sebelumnya Ngrok adalah salah satu alat yang memungkinkan kita mendaratkan server lokal kita di internet. Jadi pertama-tama Download Ngrok dari situs resminya.
Setelah Anda menginstalnya, mari kita lanjutkan dengan perintah yang diperlukan.
Buka shell lain, pertahankan terminal yang sedang dijalankan oleh server Django Anda, dan ketik.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....Ini akan memberi Anda gambaran singkat tentang perintah yang tersedia yang ditawarkan Ngrok, dan juga akan memastikan bahwa proses instalasi berjalan dengan benar.
Untuk membuat URL di mana orang dapat mengakses server kami, mari kita jalankan.
$ ngrok http 8000 # secure public URL for port 8000 web serverKami menjalankan argumen http , untuk membuat URL yang akan terhubung ke port 8000 dari localhost kami.
Inilah hasil yang mungkin Anda dapatkan.
ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Session Expires 1 hour, 59 minutes Update update available (version 2.3.39, Ctrl-U to update) Version 2.3.35 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://cac2165aa7f8.ngrok.io -> http://localhost:8000 Forwarding https://cac2165aa7f8.ngrok.io -> http://localhost:8000 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00 Seperti yang dikatakan, Ngrok meneruskan URL aneh dan jelek itu, ke localhost kami. Tetapi keajaiban terjadi, ketika Anda menekan browser dengan URL yang diberikan Ngrok kepada Anda.

Mengubah pengaturan.py
Wah, apa yang baru saja terjadi?
Tampaknya Django membuat kesalahan karena pengaturan DisallowedHost . Jika Anda memeriksa shell tempat Anda menjalankan server Django, dan shell dengan sesi Ngrok, Anda akan mendapatkan beberapa pesan debug.
# Django messages Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. Bad Request: / [01/May/2021 05:07:46] "GET / HTTP/1.1" 400 65196 Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. # Ngrok messages HTTP Requests ------------- GET /favicon.ico 400 Bad Request GET / 400 Bad RequestSeperti yang Django katakan kepada kita, kita harus menambahkan domain yang kita hubungkan ke variabel konfigurasi ALLOWED_HOSTS. Tapi kami punya masalah, dan itu adalah nama domain yang terlalu besar dan membingungkan.
Jadi mari kita ubah sedikit pengaturan Django, untuk mengatasi kesalahan ini. Buka file settings.py yang terletak di folder proyek.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]Jika Anda mengetahui beberapa regex, Anda dapat menghargai bahwa kami sedang menyetel wildcard, di mana semua host akan diizinkan.
Sekarang muat ulang situs, dan lihat hasilnya.

Semua bekerja dengan sempurna sekarang! Dan jika Anda mulai membuat aplikasi untuk proyek dan menyetel URL dan tampilan, semua akan tercermin pada URL publik tersebut.
Catatan: Jangan lupa untuk mengubah ALLOWED_HOSTS dalam produksi, karena akan menghasilkan lubang keamanan yang sangat besar.
Kesimpulan
Dalam tutorial ini, Anda mempelajari cara membuat URL demo untuk proyek Django Anda, tanpa perlu menyebarkannya.
Anda berlatih bagaimana memulai proyek Django dan bekerja dengan file settings.py di Django.
Terakhir, Anda mempelajari cara menggunakan Ngrok, dan cara mengekspos server lokal apa pun dengannya.
Selanjutnya, jelajahi beberapa kerangka kerja Python populer untuk membangun API.
