파이챰에서 프로젝트 생성
Django -> More Setting에서 앱도 하나 만들기
메뉴 Settings -> Project Interpreter에서 pip에서 패키지들 추가
djangorestframework
django-rest-swagger
django-debug-toolbar
패키지추가 하고
프로젝트에 settings.py에서
모든 호스트를 허용하고
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Portfolio.apps.PortfolioConfig',
'rest_framework',
'rest_framework_swagger',
'debug_toolbar',
]
rest_framework랑 rest_framework_swagger, debug_toolbar 추가
///
static 파일 관련해서 한번 읽어보기
https://devcenter.heroku.com/articles/django-assets
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = [
os.path.join(PROJECT_ROOT, 'static'),
]
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
디버그 툴바 셋팅
# Debug ToolBar
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
]
def show_toolbar(request):
return True
DEBUG_TOOLBAR_CONFIG = {
"SHOW_TOOLBAR_CALLBACK": show_toolbar,
}
urls.py에서
from django.conf.urls import url, include
from django.contrib import admin
from rest_framework_swagger.views import get_swagger_view
from DjangoProject import settings
from Portfolio.apis import TestAPI
schema_view = get_swagger_view(title='API')
urlpatterns = [
url(r'^$', schema_view),
url(r'^test$', TestAPI.as_view()),
url(r'^admin/', admin.site.urls),
]
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/', include(debug_toolbar.urls)),
] + urlpatterns
TestAPI 클래스 하나 만들어서
테스트 해보기
runserver 해서 로컬에서 돌려보고
이제 로컬 준비 끝났으면
-------------- 헤로쿠에 올려야함!! ------------
쉘에서 헤로쿠 로그인
heroku login
아이디 / 비번 입력 후
쟝고 프로젝트 루트에서 깃 초기화
git init
쟝고 프로젝트 루트에 아래 3개 파일을 만들어야함
Procfile
web: gunicorn 프로젝트명.wsgi
pip freeze > requirements.txt
requirements.txt (사용하는 패키지들 모두 적기... 의존하는 패키지들인거 같은데 따로 확인 안해봄..)
Django==1.11.1
Jinja2==2.10
MarkupSafe==1.0
certifi==2017.11.5
chardet==3.0.4
coreapi==2.3.3
coreschema==0.0.4
dj-database-url==0.4.1
django-debug-toolbar==1.9.1
django-rest-swagger==2.1.2
djangorestframework==3.7.7
gunicorn==19.6.0
idna==2.6
itypes==1.1.0
openapi-codec==1.3.2
psycopg2==2.6.2
pytz==2017.3
requests==2.18.4
simplejson==3.13.2
sqlparse==0.2.4
uritemplate==3.0.0
urllib3==1.22
whitenoise==3.2
runtime.txt
python-3.6.3
모든 소스 add 시킨 후
git add -A
커밋
git commit -m "init"
헤로쿠 앱 만들기
heroku apps:create 앱이름 (이미 사용중인 이름은 만들수가 없음!!!!)
헤로쿠에 푸쉬
git push heroku master
푸쉬중에
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
remote: ! Push rejected, failed to compile Python app.
remote:
remote: ! Push failed
위와 같이 메시지가 뜨면
heroku config:set DISABLE_COLLECTSTATIC=1
한 후 다시 git push heroku master
Verifying deploy... done. 이 뜨면
heroku config:unset DISABLE_COLLECTSTATIC
한 후
heroku run python manage.py collectstatic
heroku ps로 돌아가는지 확인
heroku open으로 앱 잘 돌아가는지 확인
스케일을 늘리거나 줄여서 앱 구동 / 정지
heroku ps:scale web=1
heroku ps:scale web=0
마이그레이트를 해야하는 경우
heroku run python manage.py migrate 해주기
쉘에 접속해서 테스트 해봐야 하는 경우
heroku run python manage.py shell
* Cannot run more than 1 Free size dynos 라고 뜨는 경우
heroku ps
실행중인 프로세스 넘버 확인 후
heroku ps:stop run.프로세스넘버
* dyno 시간 확인
남은 할당량 확인
heroku ps -a 앱이름
'프로그래밍 > Python' 카테고리의 다른 글
django + gunicorn + nginx 구축 (1) | 2018.09.19 |
---|---|
Django에서 manage.py shell 사용 않고 모델 사용해서 스크립트 작성 할 때 (0) | 2017.09.27 |
django + celery + rabbitmq 사용해보자!!! (0) | 2016.09.02 |
Django ForeignKey로 연결된 모델의 필드로 필터할 때 참조 (0) | 2016.06.01 |
Django 데이터 마이그레이션 (0) | 2015.12.09 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.