Menjalankan Django di lingkungan standar App Engine


Aplikasi Django yang berjalan di standar App Engine diskalakan secara dinamis sesuai dengan traffic.

Tutorial ini mengasumsikan bahwa Anda sudah memahami pengembangan web Django. Jika Anda baru mengenal pengembangan Django, sebaiknya pelajari cara menulis aplikasi Django pertama Anda sebelum melanjutkan.

Meskipun tutorial ini menunjukkan Django secara khusus, Anda dapat menggunakan proses deployment ini dengan framework berbasis Django lainnya, seperti Wagtail dan Django CMS.

Tutorial ini menggunakan Django 4, yang memerlukan minimal Python 3.8. App Engine Standard mendukung Python 3.7 dan yang lebih tinggi, termasuk Python 3.8.

Tujuan

Dalam tutorial ini, Anda akan:

  • Membuat dan menghubungkan database Cloud SQL.
  • Membuat dan menggunakan nilai secret Secret Manager.
  • Men-deploy aplikasi Django ke standar App Engine.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API, Secret Manager, and Cloud Build APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud SQL Admin API, Secret Manager, and Cloud Build APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Jika Anda belum melakukannya, lakukan inisialisasi App Engine dan pilih region pilihan Anda:

    gcloud app create
    

Menyiapkan lingkungan Anda

Meng-clone aplikasi sampel

Kode untuk aplikasi contoh Django ada di repositori GoogleCloudPlatform/python-docs-samples di GitHub.

  1. Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya atau meng-clone repositori ke komputer lokal:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. Buka direktori yang berisi kode contoh:

    Linux/macOS

    cd python-docs-samples/appengine/standard_python3/django
    

    Windows

    cd python-docs-samples\appengine\standard_python3\django
    

Mengonfirmasi penyiapan Python

Tutorial ini mengandalkan Python untuk menjalankan aplikasi contoh di komputer Anda. Kode contoh juga memerlukan penginstalan dependensi

Untuk mengetahui detail selengkapnya, lihat panduan lingkungan pengembangan Python.

  1. Pastikan Python Anda minimal versi 3.8.

     python -V
    

    Anda akan melihat Python 3.8.0 atau lebih tinggi.

  2. Buat lingkungan virtual Python dan instal dependensi:

    Linux/macOS

    python -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

    Windows

    python -m venv venv
    venv\scripts\activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

Mendownload Proxy Auth Cloud SQL untuk terhubung ke Cloud SQL dari komputer lokal Anda

Saat di-deploy, aplikasi Anda menggunakan Proxy Auth Cloud SQL yang terintegrasi dengan lingkungan standar App Engine untuk berkomunikasi dengan instance Cloud SQL Anda. Namun, untuk menguji aplikasi secara lokal, Anda harus menginstal dan menggunakan salinan lokal proxy di lingkungan pengembangan. Untuk mengetahui detail selengkapnya, lihat panduan Proxy Auth Cloud SQL.

Proxy Auth Cloud SQL menggunakan Cloud SQL API untuk berinteraksi dengan instance SQL Anda. Untuk melakukannya, autentikasi aplikasi melalui gcloud CLI diperlukan.

  1. Lakukan autentikasi dan dapatkan kredensial untuk API:

    gcloud auth application-default login
    
  2. Download dan instal Proxy Auth Cloud SQL ke komputer lokal Anda.

    Linux 64 bit

    1. Download Proxy Auth Cloud SQL:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
      
    2. Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
      chmod +x cloud-sql-proxy
      

    Linux 32 bit

    1. Download Proxy Auth Cloud SQL:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.386
      
    2. Jika perintah curl tidak ditemukan, jalankan sudo apt install curl dan ulangi perintah download.
    3. Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
      chmod +x cloud-sql-proxy
      

    macOS 64-bit

    1. Download Proxy Auth Cloud SQL:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.darwin.amd64
      
    2. Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
      chmod +x cloud-sql-proxy
      

    Mac M1

    1. Download Proxy Auth Cloud SQL:
        curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.darwin.arm64
        
    2. Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
        chmod +x cloud-sql-proxy
        

    Windows 64 bit

    Klik kanan https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x64.exe dan pilih Simpan Link Sebagai untuk mendownload Proxy Auth Cloud SQL. Ganti nama file menjadi cloud-sql-proxy.exe.

    Windows 32 bit

    Klik kanan https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x86.exe dan pilih Simpan Link Sebagai untuk mendownload Proxy Auth Cloud SQL. Ganti nama file menjadi cloud-sql-proxy.exe.

    Image Docker Proxy Auth Cloud SQL

    Proxy Auth Cloud SQL memiliki image penampung yang berbeda, seperti distroless, alpine, dan buster. Image penampung Proxy Auth Cloud SQL default menggunakan distroless, yang tidak berisi shell. Jika Anda memerlukan shell atau alat terkait, download image berdasarkan alpine atau buster. Untuk mengetahui informasi selengkapnya, lihat Image Penampung Proxy Auth Cloud SQL.

    Anda dapat menarik image terbaru ke mesin lokal menggunakan Docker dengan menggunakan perintah berikut:

    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1
    

    OS Lainnya

    Untuk sistem operasi lain yang tidak disertakan di sini, Anda dapat mengompilasi Proxy Auth Cloud SQL dari sumber.

    Anda dapat memilih untuk memindahkan hasil download ke tempat yang umum, seperti lokasi di PATH, atau direktori utama Anda. Jika Anda memilih untuk melakukannya, saat memulai Proxy Auth Cloud SQL nanti dalam tutorial ini, jangan lupa untuk mereferensikan lokasi yang Anda pilih saat menggunakan perintah cloud-sql-proxy.

Membuat layanan pendukung

Tutorial ini menggunakan beberapa layanan Google Cloud untuk menyediakan database, penyimpanan media, dan penyimpanan rahasia yang mendukung project Django yang di-deploy. Layanan ini di-deploy di region tertentu. Untuk efisiensi antar-layanan, semua layanan harus di-deploy di region yang sama. Untuk informasi selengkapnya tentang region terdekat dengan Anda, lihat Produk yang tersedia berdasarkan region.

Tutorial ini menggunakan mekanisme hosting aset statis terintegrasi di App Engine standar.

Menyiapkan instance Cloud SQL untuk PostgreSQL

Django secara resmi mendukung beberapa database relasional, tetapi menawarkan dukungan terbanyak untuk PostgreSQL. PostgreSQL didukung oleh Cloud SQL, sehingga tutorial ini memilih untuk menggunakan jenis database tersebut.

Bagian berikut menjelaskan pembuatan instance, database, dan pengguna database PostgreSQL untuk aplikasi.

  1. Buat instance PostgreSQL:

    Konsol

    1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

      Buka halaman Instance Cloud SQL

    2. Klik Create Instance.

    3. Klik Pilih PostgreSQL.

    4. Untuk SQL Edition, pilih "Enterprise".

    5. Untuk Preset Edisi, pilih "Sandbox".

    6. Di kolom Instance ID, masukkan INSTANCE_NAME.

    7. Masukkan sandi untuk pengguna postgres.

    8. Pertahankan nilai default untuk kolom lainnya.

    9. Klik Create Instance.

    Perlu waktu beberapa menit hingga instance siap digunakan.

    gcloud

    • Buat instance PostgreSQL:

      gcloud sql instances create INSTANCE_NAME \
          --project PROJECT_ID \
          --database-version POSTGRES_16 \
          --tier db-n1-standard-2 \
          --region REGION
      

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance Cloud SQL
    • PROJECT_ID: project ID Google Cloud
    • REGION: region Google Cloud

    Diperlukan waktu beberapa menit untuk membuat instance dan menyiapkannya untuk digunakan.

  2. Dalam instance yang dibuat, buat database:

    Konsol

    1. Di halaman instance, buka tab Databases.
    2. Klik Buat database.
    3. Pada dialog Database Name, masukkan DATABASE_NAME.
    4. Klik Create.

    gcloud

    • Buat database dalam instance yang baru dibuat:

      gcloud sql databases create DATABASE_NAME \
          --instance INSTANCE_NAME
      

      Ganti DATABASE_NAME dengan nama untuk database di dalam instance.

  3. Buat pengguna database:

    Konsol

    1. Di halaman instance, buka tab Users.
    2. Klik Tambahkan Akun Pengguna.
    3. Pada dialog Choose how to authenticate di bagian "Built-in Authentication":
    4. Masukkan nama pengguna DATABASE_USERNAME.
    5. Masukkan sandi DATABASE_PASSWORD
    6. Klik Tambahkan.

    gcloud

    • Buat pengguna dalam instance yang baru dibuat:

      gcloud sql users create DATABASE_USERNAME \
          --instance INSTANCE_NAME \
          --password DATABASE_PASSWORD
      

      Ganti PASSWORD dengan sandi yang aman.

Menyimpan nilai secret di Secret Manager

Setelah layanan pendukung dikonfigurasi, Django memerlukan informasi tentang layanan ini. Daripada memasukkan nilai ini langsung ke kode sumber Django, tutorial ini menggunakan Secret Manager untuk menyimpan informasi ini dengan aman.

Membuat file lingkungan Django sebagai secret Secret Manager

Anda menyimpan setelan yang diperlukan untuk memulai Django dalam file env yang aman. Aplikasi contoh menggunakan Secret Manager API untuk mengambil nilai secret, dan paket django-environ untuk memuat nilai ke dalam lingkungan Django. Secret dikonfigurasi agar dapat diakses oleh standar App Engine.

  1. Buat file bernama .env, yang menentukan string koneksi database, nama bucket media, dan nilai SECRET_KEY baru:

    echo DATABASE_URL=postgres://DATABASE_USERNAME:DATABASE_PASSWORD@//cloudsql/PROJECT_ID:REGION:INSTANCE_NAME/DATABASE_NAME > .env
    echo GS_BUCKET_NAME=PROJECT_ID_MEDIA_BUCKET >> .env
    echo SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc '[:alpha:]'| fold -w 50 | head -n1) >> .env
    
  2. Simpan secret di Secret Manager:

    Konsol

    1. Di konsol Google Cloud, buka halaman Secret Manager.

      Buka halaman Secret Manager

    2. Klik Buat secret

    3. Di kolom Name, masukkan django_settings.

    4. Di dialog Secret value, tempel konten file .env Anda.

    5. Klik Buat secret.

    6. Hapus file lokal untuk mencegah penggantian setelan lokal.

    gcloud

    1. Buat secret baru, django_settings, dengan nilai file .env:

      gcloud secrets create django_settings --data-file .env
      
    2. Hapus file lokal untuk mencegah penggantian setelan lokal:

      rm .env
      
  3. Konfigurasi akses ke secret:

    Konsol

  4. Klik tab Izin.

  5. Klik Grant access.

  6. Di kolom New Members, masukkan PROJECT_ID@appspot.gserviceaccount.com, lalu tekan Enter.

  7. Di menu drop-down Role, pilih Secret Manager Secret Accessor.

  8. Klik Simpan.

gcloud

  1. Berikan akses ke secret ke akun layanan standar App Engine:

    gcloud secrets add-iam-policy-binding django_settings \
        --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \
        --role roles/secretmanager.secretAccessor
    

Dalam output, pastikan bindings mencantumkan akun layanan baru.

Menjalankan aplikasi di komputer lokal

Dengan layanan pendukung yang dikonfigurasi, Anda kini dapat menjalankan aplikasi di komputer. Penyiapan ini memungkinkan pengembangan lokal, membuat superuser, dan menerapkan migrasi database.

  1. Di terminal terpisah, mulai Proxy Auth Cloud SQL:

    Linux/macOS

    ./cloud-sql-proxy PROJECT_ID:REGION:INSTANCE_NAME
    

    Windows

    cloud-sql-proxy.exe PROJECT_ID:REGION:INSTANCE_NAME
    

    Langkah ini akan membuat koneksi dari komputer lokal ke instance Cloud SQL Anda untuk tujuan pengujian lokal. Pastikan Proxy Auth Cloud SQL terus berjalan selama Anda menguji aplikasi secara lokal. Dengan menjalankan proses ini di terminal terpisah, Anda dapat terus bekerja saat proses ini berjalan.

  2. Di terminal asli, tetapkan Project ID secara lokal (digunakan oleh Secret Manager API):

    Linux/macOS

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    

    Windows

    set GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. Tetapkan variabel lingkungan untuk menunjukkan bahwa Anda menggunakan Proxy Auth Cloud SQL (nilai ini dikenali dalam kode):

    Linux/macOS

    export USE_CLOUD_SQL_AUTH_PROXY=true
    

    Windows

    set USE_CLOUD_SQL_AUTH_PROXY=true
    
  4. Jalankan migrasi Django untuk menyiapkan model dan aset Anda:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    python manage.py collectstatic
    
  5. Mulai server web Django:

    python manage.py runserver 8080
    
  6. Di browser Anda, buka http://localhost:8080.

    Jika Anda berada di Cloud Shell, klik tombol Web Preview, lalu pilih Preview on port 8080.

    Halaman akan menampilkan teks berikut: "Halo, dunia. Anda berada di indeks polling." Server web Django yang berjalan di komputer Anda mengirimkan halaman aplikasi contoh.

  7. Tekan Ctrl/Cmd+C untuk menghentikan server web lokal.

Menggunakan konsol admin Django

Untuk login ke konsol admin Django, Anda harus membuat superuser. Karena memiliki koneksi yang dapat diakses secara lokal ke database, Anda dapat menjalankan perintah pengelolaan:

  1. Buat superuser. Anda akan diminta untuk memasukkan nama pengguna, email, dan sandi.

    python manage.py createsuperuser
    
  2. Mulai server web lokal:

    python manage.py runserver
    
  3. Di browser Anda, buka http://localhost:8000/admin.

  4. Login ke situs admin menggunakan nama pengguna dan sandi yang Anda gunakan saat menjalankan createsuperuser.

Men-deploy aplikasi ke lingkungan standar App Engine

Setelah semua layanan pendukung disiapkan dan aplikasi diuji secara lokal, sekarang Anda dapat men-deploy aplikasi ke App Engine standar:

  1. Upload aplikasi dengan menjalankan perintah berikut, yang men-deploy aplikasi seperti yang dijelaskan di app.yaml dan menetapkan versi yang baru di-deploy sebagai versi default, sehingga aplikasi menayangkan semua traffic baru:
    gcloud app deploy
  2. Konfirmasi setelan dengan mengetik "yes" saat diminta.
  3. Tunggu pesan yang memberi tahu Anda bahwa update telah selesai.
  4. Buka app.yaml dan perbarui nilai APPENGINE_URL dengan URL yang di-deploy:
    ...
    env_variables:
        APPENGINE_URL: https://PROJECT_ID.uc.r.appspot.com
    
  5. Upload perubahan konfigurasi Anda:
    gcloud app deploy

Menjalankan aplikasi yang di-deploy

Aplikasi telah di-deploy, dan sekarang dapat diakses:

  • Buka situs yang di-deploy:

    gcloud app browse
    
  • Atau, tampilkan URL dan buka secara manual:

    gcloud app describe --format "value(defaultHostname)"
    

Permintaan Anda ditayangkan oleh server web yang berjalan di lingkungan standar App Engine.

Mengupdate aplikasi

Untuk mengupdate aplikasi, buat perubahan pada kode, lalu jalankan kembali perintah gcloud app deploy.

Deployment akan membuat versi baru aplikasi Anda dan mempromosikannya ke versi default. Versi aplikasi Anda sebelumnya akan tetap ada. Semua versi aplikasi ini adalah resource yang dapat ditagih. Untuk mengurangi biaya, hapus versi aplikasi non-default.

Mengonfigurasi untuk produksi

Sekarang Anda memiliki deployment Django yang berfungsi, tetapi ada langkah-langkah lebih lanjut yang dapat Anda lakukan untuk memastikan aplikasi Anda siap untuk produksi.

Menonaktifkan proses debug

Pastikan variabel DEBUG di mysite/settings.py ditetapkan ke False. Tindakan ini akan mencegah halaman error mendetail ditampilkan kepada pengguna, yang dapat membocorkan informasi tentang konfigurasi.

Membatasi hak istimewa pengguna database

Setiap pengguna yang dibuat menggunakan Cloud SQL memiliki hak istimewa yang terkait dengan peran cloudsqlsuperuser: CREATEROLE, CREATEDB, dan LOGIN.

Untuk mencegah pengguna database Django memiliki izin ini, buat pengguna secara manual di PostgreSQL. Anda harus menginstal terminal interaktif psql, atau menggunakan Cloud Shell yang telah menginstal alat ini sebelumnya.

Konsol

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Di Cloud Shell, gunakan terminal bawaan untuk terhubung ke instance INSTANCE_NAME Anda:

    gcloud sql connect INSTANCE_NAME --user postgres
    
  3. Masukkan sandi pengguna postgres.

    Anda sekarang menggunakan psql. Anda akan melihat perintah postgres=>.

  4. Buat pengguna:

    CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
    

    Ganti PASSWORD dengan sandi acak yang unik.

  5. Berikan hak penuh di database baru kepada pengguna baru:

    GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;
    
  6. Keluar dari psql:

    \q
    

gcloud

  1. Mulai koneksi ke instance SQL:

    gcloud sql connect INSTANCE_NAME --user postgres
    

    Ganti INSTANCE_NAME dengan instance Cloud SQL yang dibuat.

  2. Masukkan sandi pengguna postgres.

    Anda sekarang menggunakan psql. Anda akan melihat perintah postgres=>.

  3. Buat pengguna:

    CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
    
  4. Berikan hak penuh di database baru kepada pengguna baru:

    GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;
    
  5. Keluar dari psql:

    \q
    

Memahami kode

Contoh aplikasi

Aplikasi contoh Django dibuat menggunakan alat Django standar. Perintah berikut akan membuat project dan aplikasi polling:

django-admin startproject mysite
python manage.py startapp polls

Konfigurasi tampilan, model, dan rute dasar disalin dari Menulis aplikasi Django pertama Anda (Bagian 1 dan Bagian 2).

Secret dari Secret Manager

File settings.py berisi kode yang menggunakan Secret Manager Python API untuk mengambil versi terbaru secret yang diberi nama, dan menariknya ke lingkungan (menggunakan django-environ):

env = environ.Env(DEBUG=(bool, False))
env_file = os.path.join(BASE_DIR, ".env")

if os.path.isfile(env_file):
    # Use a local secret file, if provided

    env.read_env(env_file)
# ...
elif os.environ.get("GOOGLE_CLOUD_PROJECT", None):
    # Pull secrets from Secret Manager
    project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")

    client = secretmanager.SecretManagerServiceClient()
    settings_name = os.environ.get("SETTINGS_NAME", "django_settings")
    name = f"projects/{project_id}/secrets/{settings_name}/versions/latest"
    payload = client.access_secret_version(name=name).payload.data.decode("UTF-8")

    env.read_env(io.StringIO(payload))
else:
    raise Exception("No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found.")

Secret digunakan untuk menyimpan beberapa nilai secret guna mengurangi jumlah secret yang berbeda yang perlu dikonfigurasi.

Konfigurasi CSRF

Django memiliki perlindungan bawaan terhadap Pemalsuan Permintaan Lintas Situs (CSRF). Mulai Django 4.0, perubahan pada cara kerjanya berarti Anda harus memberi tahu Django URL yang dihosting, sehingga dapat menawarkan perlindungan terbaik bagi pengguna yang mengirimkan data.

Anda memberikan URL aplikasi sebagai variabel lingkungan dalam file settings.py. Ini adalah nilai yang digunakan Django untuk setelan yang relevan.

# SECURITY WARNING: It's recommended that you use this when
# running in production. The URL will be known once you first deploy
# to App Engine. This code takes the URL and converts it to both these settings formats.
APPENGINE_URL = env("APPENGINE_URL", default=None)
if APPENGINE_URL:
    # Ensure a scheme is present in the URL before it's processed.
    if not urlparse(APPENGINE_URL).scheme:
        APPENGINE_URL = f"https://{APPENGINE_URL}"

    ALLOWED_HOSTS = [urlparse(APPENGINE_URL).netloc]
    CSRF_TRUSTED_ORIGINS = [APPENGINE_URL]
    SECURE_SSL_REDIRECT = True
else:
    ALLOWED_HOSTS = ["*"]

Penggantian secret lokal

Jika file .env ditemukan di sistem file lokal, file tersebut akan digunakan, bukan nilai dari Secret Manager. Membuat file .env secara lokal dapat membantu pengujian lokal (misalnya, pengembangan lokal terhadap database SQLite, atau setelan lokal lainnya).

Koneksi database

File settings.py berisi konfigurasi untuk database SQL Anda. Fungsi ini menggunakan helper env.db() dari django-environ untuk memuat string koneksi yang ditetapkan di DATABASE_URL ke setelan DATABASES.

Saat menjalankan aplikasi secara lokal dan menggunakan Proxy Auth Cloud SQL untuk mengakses database yang dihosting, tanda USE_CLOUD_SQL_AUTH_PROXY akan menyesuaikan setelan database untuk menggunakan proxy.

# Use django-environ to parse the connection string
DATABASES = {"default": env.db()}

# If the flag as been set, configure to use proxy
if os.getenv("USE_CLOUD_SQL_AUTH_PROXY", None):
    DATABASES["default"]["HOST"] = "127.0.0.1"
    DATABASES["default"]["PORT"] = 5432

Konten statis yang dihosting

File app.yaml berisi informasi konfigurasi untuk deployment ke App Engine. File app.yaml ini menentukan bahwa App Engine menayangkan file statis dari direktori static/:

runtime: python39

env_variables:
  # This setting is used in settings.py to configure your ALLOWED_HOSTS
  # APPENGINE_URL: PROJECT_ID.uc.r.appspot.com

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
  static_dir: static/

# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto

Saat menjalankan aplikasi secara lokal dengan DEBUG diaktifkan, file ini ditayangkan secara lokal oleh Django:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("", include("polls.urls")),
    path("admin/", admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah selanjutnya