/backend

Backend do uruchomienia na GCP

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

ProteGO - serwer

Instalacja na serwerze

Informacje wstępne

Korzystamy z Google Cloud Platform (GCP) udostępnionego przez Operatora Chmury Krajowej.

Stworzenie i konfiguracja nowego projektu na Google Cloud Platform

Stworzenie nowego projektu GCP składa się z następnujących kroków:

  1. Stworzenie projektu na platformie Google Cloud

  2. Na stronie projektu console.cloud.google.com należy wykonać następujące ustawienia:

    • Billing - podpiąć płatność na stronie Billing
    • Datastore - ustawić Datastore Mode na stronie Datastore i wybrać eur3 (Europe) jako database location

Instalacja narzędzi

Instalacja oprogramowania serwera wymaga narzędzi Terraform oraz gcloud. Przed przystąpieniem do instalacji należy wykonać następujące kroki:

  1. Zainstalować narzędzie gcloud zgodnie z instrukcją na cloud.google.com/sdk/install

  2. Zainstalować narzędzie terraform zgodnie z instrukcją na learn.hashicorp.com/terraform/getting-started/install

Instalacja ProteGO na serwerze

  1. Używając narzędzia gcloud Należy zalogować się do GCP przy użyciu strony logowana lub Service Account z odpowiednimi uprawnieniami:

    # strona logowania
    gcloud auth application-default login
    
    # service account
    gcloud auth activate-service-account --key-file=<credentials.json>
  2. Ustawienie odpowiedniego projektu jako aktywnego:

    gcloud config set project <project_id>
    • Pomocnicze komendy
      # wylistowanie wszystkich projektów
      gcloud projects list
      
      # wyświetlenie aktywnego projektu
      gcloud config list project
  3. Pobranie źródeł ProteGO:

git clone git@github.com:ProteGO-app/backend.git

  1. Ustawienie zmiennych środowiskowych.

    • STAGE - DEVELOPMENT lub PRODUCTION to jedyne dopuszczalne wartości. Zmienna ta mówi czy jest do środowisko produkcyjne (wysyłanie SMSów jest aktywne) czy deweloperskie.
    • SMS_API_TOKEN - Token do bramki SMS. Zmienna ta jest wymagana zawsze wymagana (dla środowiska deweloperskiego wartość ta nie musi być poprawna).
    export STAGE=DEVELOPMENT
    export SMS_API_TOKEN=1234
  2. Uruchomienie skryptu tworzącego środowisko:

    bash scripts/create.sh

    Na Google Cloud Store będzie dodaktowo stworzony (jeśli nie istnieje) bucket do przechowywania konfiguracji narzędzia terraform. Nazwa bucketu skłąda się z ID projektu i końcówki "-tfstate" ("PROJECT_ID-tfstate"). Przechowywanie konfiguracji w bucket jest wygodne ze względu na możliwość bezkonfliktowego używania narzędzia przez większą ilość osób.

Wyczyszczenie środowiska (uwaga: niebezpieczne)

Aby wyczyścić środowisko należy wyskonać następącujące komendy:

  • Usunięcie zasobów zarządzanych przez terraform:
bash scripts/teardown.sh
  • Opcjonalnie możesz usunąć bucket zawierający konfigurację terraform
bash scripts/teardown_tfstate_bucket.sh

System tests:

In order to run test you need to set environment variables:

STAGE - DEVELOPMENT or PRODUCTION

SEND_SMS_NUMBER - 9 digit - requiered only in case of PRODUCTION

GOOGLE_APPLICATION_CREDENTIALS - path to account credentials file

Install requirements from tests/requirements.txt

Run:

python -m  unittest

In case of PRODUCTION you should receive SMS on number given