Wdrożenie¶
Heroku¶
Jedną z akceptowalnych form wdrożenia jest wykorzystanie Heroku. Wymaga to kilku prostych kroków, które są szczegółowo przedstawione poniżej.
1. Utworzenie aplikacji¶
Po pierwsze należy utworzyć aplikacje i ustalić wartość podstawowych zmiennych:
$ heroku create app_name
$ heroku config:set DJANGO_SETTINGS_MODULE=config.settings.production
$ heroku config:set DJANGO_SECRET_KEY=$(random_pass)
$ heroku config:set DJANGO_ADMIN_URL=admin/
$ heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
2. API plików statycznych¶
Następnie należy określić miejsce przechowywania plików statycznych (załączników itd.). Rekomenduje w tym zakresie wykorzystanie usługi e24files od e24cloud , co pozwala na efektywne cenowe przechowywanie danych w Polsce:
$ heroku config:set DJANGO_AWS_ACCESS_KEY_ID=**CUT**
$ heroku config:set AWS_S3_ENDPOINT_URL="https://e24files.com/""
$ heroku config:set AWS_S3_SIGNATURE_VERSION="s3"
$ heroku config:set AWS_S3_CUSTOM_DOMAIN="**CUT**.e24files.com"
$ heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY=**CUT**
$ heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME=watchdog-kj-kultura
Możliwe jest także wykorzystanie zwyczajnego Amazon S3 z wykorzystaniem ustawień
$ heroku config:set DJANGO_AWS_ACCESS_KEY_ID=**CUT**
$ heroku config:set AWS_S3_CUSTOM_DOMAIN="**CUT**.s3.eu-central-1.amazonaws.com"
$ heroku config:set AWS_S3_ENDPOINT_URL=http://s3.amazonaws.com
$ heroku config:set AWS_S3_REGION_NAME=eu-central-1
$ heroku config:set AWS_S3_SIGNATURE_VERSION="s3v4"
$ heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY=**CUT**
$ heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME=watchdog-kj-kultura
3. API wiadomości e-mail¶
W kolejnym kroku należy wskazać dane operatora wiadomości e-mail. Wstępnie aplikacja jest skonfigurowana do obsługi Mailgun, zważywszy na swoją popularność:
$ heroku config:set DJANGO_MAILGUN_API_KEY=key-xxxx
$ heroku config:set MAILGUN_SENDER_DOMAIN=sandboxxx.mailgun.org
4. API monitorowania wyjątków¶
Wymagane jest również, aby wskazać dane dostępowe DSN do instancji Sentry:
$ heroku config:set DJANGO_SENTRY_DSN=http://...:...@sentry.jawne.info.pl/16
5. Publikacja kodu¶
W tym miejscu dopiero warto umieścić kod źródłowy aplikacji na serwerze:
$ git push heroku master
6. Baza danych¶
Potem należy stworzyć bazę danych i wprowadzić schemat bazy danych:
$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku run python manage.py migrate
8. Adres WWW¶
Jeżeli uruchamisz apliacje pod adresem innym niż kultura.kj.org.pl
konieczne jest także zaakceptowanie domeny:
$ heroku config:set DJANGO_ALLOWED_HOSTS="watchdog-kj-kultura.herokuapp.com"
9. Wyszukiwarka¶
Aby uruchomić wyszukiwarkę należy wywołać:
$ heroku addons:create searchbox:starter
$ heroku run python manage.py rebuild_index
10. Administrator aplikacji¶
Warto także utworzyć pierwszego użytkownika administracyjnego:
$ heroku run python manage.py createsuperuser
Planista¶
Niektóre komponenty powinny być uruchamiane cyklicznie niezależnie od interakcji użytkownika. W przypadku Heroku należy w takiej sytuacji wykorzystać:
$ heroku addons:create scheduler:standard
W systemach Unix można wykorzystać program cron odpowiednio. Pamiętać należy jednak o ustawieniu odpowiednich zmiennych środowiskowych.
Powiadomienia¶
W celu zapewnienia powiadomień z komponentu System zapytań do instytucji konieczne jest skonfigurowanie cyklicznego wywołania polecenia Polecenia zarządzania. Wystarczające winno być powiadomienie raz dziennie.
W Heroku wywołać:
$ heroku addons:open scheduler
W nowo otwartym oknie wprowadzić następujące ustawienia:
Wyszukiwarka¶
W celu zapewnienia sprawnego wyszukiwania konieczne jest skonfigurowanie cyklicznej aktualizacji indeksu wyszukiwarki. Wystarczające powinno być indeksowanie co godzinę.
W przypadku Heroku należy wykorzystać Planista z poleceniem python manage.py update_index --age=1
wywoływanym co godzinę. Patrz także na szczegółową instrukcje dla :ref:`Powiadomienia.