파이챰에서 프로젝트 생성

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 앱이름








Posted by ㅇ_ㅎ
현재 브라우저에서는 댓글을 표시할 수 없습니다.
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.