Déployer l'API Django avec heroku (mémo personnel)

spécification

・ Python 2.7.10 -DB est sqlite3 localement et postgreSQL pour la production -Utiliser le Framework Django REST ・ Prémisse qu'un environnement virtuel est créé à l'avance avec Virtualenv

procédure

1 </ b> .cd [Chemin du projet Django] Générez 2 </ b> .requirements.txt. (Package de version Python.json ou gemfile) Si vous cliquez sur pip freeze> requirements.txt, vous pouvez amener celui du pip de virtualenv en un seul coup. Dans mon cas, ça ressemble à ça

requirements.txt


dj-database-url==0.4.1
Django==1.9.7
django-filter==0.13.0
djangorestframework==3.3.3
psycopg2==2.6.1

Entrez ce qui suit dans 3 </ b> .vi Procfile web: python manage.py runserver 0.0.0.0:$PORT --noreload Modification de la partie DB de 4 </ b> .setting.py

setting.py


import os
import dj_database_url

DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
if bool(os.environ.get('LOCAL_DEV', False)):
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3', 
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'USER': '',                      
            'PASSWORD': '',             
            'HOST': '',                     
            'PORT': '',                     
        }
    }

(Si vous ne souhaitez pas valider le fichier 5 </ b> .pyc, créez un .gitignore) appuyez sur 6 </ b> .heroku git init git add . git commit -m "hogegggggge" heroku create [nom de l'application] git push heroic master

Puis

remote:            raise ImproperlyConfigured("You're using the staticfiles app "
remote:        django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
remote: 
remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
remote:        See traceback above for details.
remote: 
remote:        You may need to update application code to resolve this error.
remote:        Or, you can disable collectstatic for this application:
remote: 
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote:        https://devcenter.heroku.com/articles/django-assets

Parce qu'il est sorti Ajoutez ce qui suit à setting.py

setting.py


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

#J'ai ajouté ce qui suit
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)
#Fin du post-scriptum

Au fait heroku config:set DISABLE_COLLECTSTATIC=1 Exécuter. Puis lancez git push heroku master.

Counting objects: 31, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (28/28), done.
Writing objects: 100% (31/31), 8.84 KiB | 0 bytes/s, done.
Total 31 (delta 10), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing python-2.7.11
remote:      $ pip install -r requirements.txt
remote:        Collecting dj-database-url==0.4.1 (from -r requirements.txt (line 1))
remote:          Downloading dj-database-url-0.4.1.tar.gz
remote:        Collecting Django==1.9.7 (from -r requirements.txt (line 2))
remote:          Downloading Django-1.9.7-py2.py3-none-any.whl (6.6MB)
remote:        Collecting django-filter==0.13.0 (from -r requirements.txt (line 3))
remote:          Downloading django_filter-0.13.0-py2.py3-none-any.whl
remote:        Collecting djangorestframework==3.3.3 (from -r requirements.txt (line 4))
remote:          Downloading djangorestframework-3.3.3-py2.py3-none-any.whl (662kB)
remote:        Collecting psycopg2==2.6.1 (from -r requirements.txt (line 5))
remote:          Downloading psycopg2-2.6.1.tar.gz (371kB)
remote:        Installing collected packages: dj-database-url, Django, django-filter, djangorestframework, psycopg2
remote:          Running setup.py install for dj-database-url: started
remote:            Running setup.py install for dj-database-url: finished with status 'done'
remote:          Running setup.py install for psycopg2: started
remote:            Running setup.py install for psycopg2: finished with status 'done'
remote:        Successfully installed Django-1.9.7 dj-database-url-0.4.1 django-filter-0.13.0 djangorestframework-3.3.3 psycopg2-2.6.1
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 41.7M
remote: -----> Launching...
remote:        Released v6
remote:        https://cashe-api.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/cashe-api.git
 * [new branch]      master -> master

J? ai compris. plus tard, heroku run python manage.py migrate Donc, le réglage initial de DB sur heroku heroku open Vous pouvez le voir dans le navigateur. Pour plus d'informations, Voir la page officielle (https://devcenter.heroku.com/articles/django-app-configuration).

référence

http://source.hatenadiary.jp/entry/2013/02/05/173636 http://qiita.com/jtwp470/items/0034c85130928851ce72

Recommended Posts