Como executar o Django no ambiente padrão do App Engine

É fácil começar a desenvolver aplicativos do Django em execução no ambiente padrão do Google App Engine. Como o App Engine é escalonado dinamicamente de acordo com o tráfego, você pode contar com a escalonabilidade necessária para atender a todos os seus usuários, sejam eles dezenas ou milhões.

Neste tutorial, julgamos que você esteja familiarizado com o desenvolvimento de Web com Django. Veja aqui como implantar o app de tutorial oficial do Django, Como escrever seu primeiro app Django. É recomendável fazer o tutorial mencionado antes deste, principalmente se você não tiver experiência em desenvolvimento com Django. Os modelos do aplicativo representam pesquisas com questões, e você pode interagir com eles. Basta usar o console de administração do Django.

Este tutorial requer o Python 3.7.

Antes de começar

Marque as etapas conforme elas forem concluídas.

  1. check_box_outline_blank check_box Criar um projeto no Console do Google Cloud Platform.
    Caso ainda não tenha feito isso, crie um agora. Com os projetos, você gerencia todos os recursos do Google Cloud Platform para seu app, incluindo implantação, controle de acesso, faturamento e serviços.
    1. Abra o Console do GCP.
    2. No menu suspenso na parte superior, selecione Criar um projeto.
    3. Clique em Mostrar opções avançadas. Em Local do App Engine, selecione um local no Brasil.
    4. Dê um nome ao projeto.
    5. Anote o código do projeto, que pode ser diferente do nome do projeto. Esse código é usado em comandos e configurações.
  2. check_box_outline_blank check_box Ativar o faturamento para o projetoe inscrever-se para uma avaliação gratuita.

    Caso ainda não tenha feito isso, ative o faturamento agorae inscreva-se para uma avaliação gratuita. A ativação do faturamento permite que recursos passíveis de cobrança, como execução de instâncias e armazenamento de dados, sejam usados no aplicativo. Você não será cobrado por qualquer serviço durante o período da avaliação gratuita.

  3. check_box_outline_blank check_box Instalar o SDK do Cloud.

    Instale e inicialize o SDK do Cloud agora, caso ainda não tenha feito isso. O SDK do Cloud contém ferramentas e bibliotecas que podem ser usadas para criar e gerenciar recursos no GCP.

  4. check_box_outline_blank check_box Ativar as APIs do projeto.

    Isso direciona você para o Console do GCP e ativa as APIs usadas nesse tutorial. As APIs são: Google Cloud SQL API.

Fazer o download e executar o aplicativo

Depois de concluir os pré-requisitos, faça o download e implante o app de amostra do Django. Veja nas seções a seguir como configurar, executar e implantar o exemplo.

Como clonar o app Django

O código para o app de exemplo do Django está no repositório Google Cloud Platform python-docs-samples, no GitHub.

Clone o repositório na sua máquina local:

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

Acesse o diretório que contém o código de amostra:

Linux/MacOS

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

Windows

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

Uma alternativa é fazer o download da amostra como arquivo zip e extraí-lo.

Como configurar o ambiente local

Quando implantado, seu aplicativo usa o Cloud SQL Proxy incorporado ao ambiente do App Engine para se comunicar com sua instância do Cloud SQL. No entanto, para testar o aplicativo no local, é necessário instalar e usar uma cópia local do Cloud SQL Proxy no ambiente de desenvolvimento.

Saiba mais sobre o Cloud SQL Proxy.

Para executar tarefas administrativas básicas na instância do Cloud SQL, use o cliente MySQL.

Como instalar o Cloud SQL Proxy

Faça o download do Cloud SQL Proxy e instale-o. Ele se conectará à instância do Cloud SQL durante a execução local.

Linux de 64 bits

  1. Faça o download do proxy:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Torne o proxy executável:
    chmod +x cloud_sql_proxy
    

Linux de 32 bits

  1. Faça o download do proxy:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Torne o proxy executável:
    chmod +x cloud_sql_proxy
    

macOS de 64 bits

  1. Faça o download do proxy:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Torne o proxy executável:
    chmod +x cloud_sql_proxy
    

macOS de 32 bits

  1. Faça o download do proxy:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Torne o proxy executável:
    chmod +x cloud_sql_proxy
    

Windows de 64 bits

Clique com o botão direito do mouse em https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe e selecione Salvar link como para fazer o download do proxy. Renomeie o arquivo para cloud_sql_proxy.exe.

Windows de 32 bits

Clique com o botão direito do mouse em https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe e selecione Salvar link como para fazer o download do proxy. Renomeie o arquivo para cloud_sql_proxy.exe.
Caso seu sistema operacional não esteja incluído aqui, compile o proxy a partir da fonte (em inglês).

Criar uma instância do Cloud SQL

  1. Crie uma instância de segunda geração do Cloud SQL para MySQL.

    Atribua à instância o nome polls-instance ou outro similar. Pode demorar alguns minutos para a instância ficar pronta. Quando estiver pronta, ela ficará visível na lista de instâncias.

  2. Agora, use o SDK do Cloud para executar o seguinte comando, em que [YOUR_INSTANCE_NAME] representa o nome da sua instância do Cloud SQL.
    gcloud sql instances describe [YOUR_INSTANCE_NAME]

    Na saída, observe o valor mostrado para [CONNECTION_NAME].

    O valor de [CONNECTION_NAME] está no formato [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].

Inicializar a instância do Cloud SQL

  1. Inicie o Cloud SQL Proxy usando o valor [CONNECTION_NAME] da etapa anterior.

    Linux/macOS

    ./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Windows

    cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Substitua [YOUR_INSTANCE_CONNECTION_NAME] pelo valor de [CONNECTION_NAME] registrado na etapa anterior.

    Essa etapa estabelece uma conexão do computador local com a instância do Cloud SQL para testes locais. Mantenha o Cloud SQL Proxy em execução durante todo o teste local do aplicativo.

  2. Crie um usuário e um banco de dados do Cloud SQL.

    Console do GCP

    1. Crie um novo banco de dados usando o Console do GCP para a instância de polls-instance do Cloud SQL. Por exemplo, você pode usar o nome polls.
    2. Crie um novo usuário usando o Console do GCP para a instância de polls-instance do Cloud SQL.

    Cliente MySQL

    1. Em uma guia separada da linha de comando, use o cliente MySQL ou um programa semelhante para se conectar à instância. Quando solicitado, use a senha raiz configurada.
      mysql --host 127.0.0.1 --user root --password
    2. Crie os bancos de dados, usuários e permissões de acesso necessários no banco de dados do Cloud SQL usando os comandos a seguir. Substitua [MYSQL_USER] e [MYSQL_PASSWORD] pelo nome de usuário e senha que você quer usar.
      CREATE DATABASE polls;
      CREATE USER '[MYSQL_USER]' IDENTIFIED BY '[MYSQL_PASSWORD]';
      GRANT ALL ON . TO '[MYSQL_USER]';

Definir as configurações do banco de dados

  1. Abra mysite/settings.py para edição.

  2. Em dois lugares, substitua [YOUR-USERNAME] e [YOUR-PASSWORD] pelo nome de usuário e senha do banco de dados criados anteriormente na etapa "Criar uma instância do Cloud SQL". Isso ajuda a estabelecer a conexão com o banco de dados para implantação e teste local do banco de dados.

  3. Execute o comando a seguir. Copie o valor de connectionName emitido para a próxima etapa.

    gcloud sql instances describe [YOUR_INSTANCE_NAME]
    
  4. Substitua [YOUR-CONNECTION-NAME] pelo connectionName da etapa anterior.

  5. Substitua [YOUR-DATABASE] pelo nome escolhido durante a etapa "Inicializar sua instância do Cloud SQL".

  6. Feche e salve settings.py.

Executar o app no computador local

  1. Para executar o app Django no seu computador local, é necessário um ambiente de desenvolvimento Python configurado, incluindo Python, pip e virtualenv. Para seguir as instruções, consulte Como configurar um ambiente de desenvolvimento Python para o Google Cloud Platform.

  2. Crie um ambiente Python isolado e instale as dependências:

    Linux/MacOS

    virtualenv env
    source env/bin/activate
    pip install -r requirements.txt
    

    Windows

    virtualenv env
    env\scripts\activate
    pip install -r requirements.txt
    

  3. Execute as migrações do Django para definir seus modelos:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    
  4. Inicie um servidor da web local:

    python manage.py runserver
    
  5. No navegador da Web, digite este endereço:

    http://localhost:8000
    

Uma página da Web simples é exibida com o seguinte texto: "Hello, world. You're at the polls index." As páginas do app de amostra são entregues pelo servidor da Web do Django em execução no seu computador. Quando estiver pronto para avançar, pressione Ctrl+C para interromper o servidor da Web local.

Como usar o console de administração do Django

  1. Crie um superusuário:

    python manage.py createsuperuser
    
  2. Inicie um servidor da web local:

    python manage.py runserver
    
  3. Digite este endereço no seu navegador da Web. Para fazer login no site de administração, utilize e a senha e o nome de usuário criados na execução do createsuperuser.

    http://localhost:8000/admin/
    

Como implantar o aplicativo no ambiente padrão do App Engine

  1. Reúna todo o conteúdo estático em uma pasta. Este comando move todos os arquivos estáticos do aplicativo para uma pasta especificada por STATIC_ROOT em settings.py:

    python manage.py collectstatic
    
  2. Faça o upload do aplicativo. Basta executar o seguinte comando no diretório python-docs-samples/appengine/standard/django dele, onde o arquivo app.yaml está localizado:

    gcloud app deploy
    

    Aguarde a mensagem notificando que a atualização foi concluída.

Ver a execução do app na nuvem

No navegador da Web, digite este endereço:

https://<your_project_id>.appspot.com

Desta vez, a sua solicitação é veiculada por um servidor da Web em execução no ambiente padrão do App Engine.

O aplicativo é implantado por esse comando conforme descrito em app.yaml, e a versão recém-implantada é definida como a versão padrão, veiculando todo o tráfego novo.

Para atualizar o app, implante a versão atualizada digitando o mesmo comando usado para implantá-lo pela primeira vez. A implantação cria uma nova versão do aplicativo e a define como padrão. As versões antigas do seu app são mantidas. Esteja ciente de que todas essas versões antigas são recursos faturáveis. Para informações sobre a exclusão de versões não padrão do seu app, consulte Como limpar o ambiente.

Produção

Quando você estiver pronto para veicular o seu conteúdo na produção, mude esta configuração:

  1. Em mysite/settings.py, mude a variável DEBUG para False.

Como entender o código

O app de exemplo do Django foi criado com ferramentas padrão do Django. Estes comandos criam o projeto e o aplicativo de pesquisa:

django-admin startproject mysite
python manage.py startapp polls

O arquivo settings.py contém a configuração para seu banco de dados SQL. O código em settings.py usa a variável de ambiente GAE_APPLICATION para determinar se o app está sendo executado no App Engine ou no seu computador local. Se o app é executado no App Engine, ele se conecta ao host do MySQL usando o socket Unix /cloudsql. Se é executado no seu computador local, ele se conecta ao host do MySQL usando TCP, o que requer um nome de usuário e uma senha.

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
        }
    }

O arquivo app.yaml contém as informações de configuração para implantação no App Engine. O arquivo app.yaml também especifica que o App Engine transmite os arquivos estáticos do diretório static/.

runtime: python37

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
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…