|
|
| 22번째 줄: |
22번째 줄: |
|
| |
|
| ==static 설정[이부분...위의 static과 합쳐도 괜찮지 않을까?]== | | ==static 설정[이부분...위의 static과 합쳐도 괜찮지 않을까?]== |
| static이 따로 떨어지게 된 데엔 웹의 발전형태와 관련이 있다. 웹이 복잡해지며 동적 콘텐츠는 어플리케이션에서 다루고, 정적 콘텐츠는 서버에서 다루게 되었다.
| | <br /> |
| | |
| 서버에서 static 컨텐츠와 dynamic 컨텐츠를 받는 부분이 달라, static 컨텐츠에 대한 설정을 해주어야 한다.
| |
| | |
| gunicorn과 django는 dynamic 컨텐츠를 서비스하기 위한 물건이고, static 컨텐츠는 서버에서 다루어준다.
| |
| | |
| ===setiings.py에 추가===
| |
| <syntaxhighlight lang="python">
| |
| STATIC_URL = '/static/'
| |
| #STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ] # 앱의 static이 아니라 따로 전체 ststic을 지정할 때 사용한다.
| |
| STATIC_ROOT = os.path.join(BASE_DIR, 'static')
| |
| </syntaxhighlight>
| |
| {| class="wikitable"
| |
| !변수
| |
| !기능
| |
| |-
| |
| |STATIC_URL
| |
| |참조 URL을 어떻게 쓸 것인가.
| |
| 파일명이 asdf라면, <code>도메인/static/asdf</code> 형태로 해당 파일에 접근할 수 있다.
| |
| | |
| <code><img src="{% static 'photo/asdf.jpg' %}"></code> 형태로 작성하면 경로는 /static/photo/asdf.jpg 로 변경된다.
| |
| |-
| |
| |STATICFILES_DIRS
| |
| |[DEBUG모드에선 이걸 참조하는듯] 개별 앱 외에 전체 static을 저장하는 경로를 지정한다.
| |
| |-
| |
| |STATIC_ROOT
| |
| |앱별로 흩어진 static파일을 모으기 위한 경로.(웹서버에서 사용하기 위해서.) STATICFILES_DIRS과 겹치면 안된다.
| |
| | |
| | |
| STATICFILES_DIRS의 모든 경로들을 복사한다.
| |
| | |
| collectstatic 명령을 쓰면 여기에 모인다.
| |
| | |
| 개발자가 지정하지 않은, 장고에서 지원하는 static파일도 이곳에 모인다.
| |
| | |
| (깃에서도 이 디렉터리 빼주는 게 맞지 않을까?)
| |
| |}
| |
| | |
| ===collectstatic===
| |
| 프로젝트에서 사용하는 모든 정적 파일들을 모아 하나의 경로에 모아준다.(서버에서 참고할 곳을 지정하여 사용할 수 있게끔)
| |
| | |
| 일반적으로 서버에선 static이라는 키워드로 하나의 디렉터리를 지정하는데, 이들을 한데 모아두어야 서버에서 참조해 활용할 수 있다.
| |
| | |
| python manage.py collectstatic
| |
| | |
| 그런데, 개발 settings에서는 STATICFILES_DIRS를 사용해야 하고, 운영 settings에서는 STATIC_ROOT를 사용해야 한다. 이처럼 세팅을 분리한 경우엔
| |
| | |
| <code>python manage.py collectstatic --settings=config.service_settings</code> 형태로 개발용 세팅으로 실행해준다.
| |
| | |
| CommandError: Collecting static files cancelled. 에러가 나면 python manage.py collectstatic --noinput
| |
|
| |
|
| ==배포서비스== | | ==배포서비스== |
장고! 웹 프레임워크! 틀:장고
- 장고:개요
- 장고:웹페이지설계
- 장고:앱
- 장고:url
- 장고:model
- 장고:DB
- 장고:모델 필드
- 장고:모델의 변경
- 장고:view
- 장고:클래스형 뷰, 제네릭 뷰
- 장고:view 각종 기능
- 장고:template
- 장고:static. 정적파일 사용하기
- 장고:CSS 사용하기
- 장고:JS 사용하기
- 장고:글꼴 사용
- 장고:부트스트랩
- 장고:media. 미디어 파일 사용하기
- 장고:관리자페이지
- 장고:settings.py
- 장고:기능구현
- 장고:회원관리
- 장고:유저
- 장고:커스텀 유저
- 장고:소셜로그인
- 장고:입력받기
- 장고:저장된 내용 활용하기
- 장고:변수 내보내기
- 장고:글쓰기
- 장고:페이징(페이지나누기)
- 장고:답변쓰기(댓글쓰기)
- 장고:추천,즐겨찾기
- 장고:새글(최신글) 나타내기
- 장고:썸머노트 설치
- 장고:네비게이션 바 만들기
- 장고:검색기능
- 장고:카테고리 만들기
- 장고:사진 올리기
- 장고:파일 업로드
- 장고:이메일app 만들기
- 장고:매직 그리드
- 장고:웹서비스
- 장고:Git
- 장고:리눅스에 올리기
- 장고:우분투에 올리기(nginx 사용)
- 장고:도커로 올리기
- 장고:서버 옮기기
- 장고:팁
완성 후 Settings.py에서 ALLOWED_HOST항목에 서버의 IP혹은 도메인을 입력해주어야 작동한다. DEBUG=True이면 개발모드, False면 운영모드로 인식한다.
서버를 서비스 할 때는 python manage.py runserver 0.0.0.0:8000 의 형태로 실행한다.
(리눅스라면 &을 붙이자. 백그라운드에서 실행하게끔)
0.0.0.0은 어떤 호스트로 실행하든 다 받겠다는 이야기.
개요
페이지를 만들었으면 서버에 올려두고 서비스를 해야 한다.
장고 runserver로 배포해선 안된다. 장고는 웹 프레임워크로, 웹서버의 역할을 하진 못한다. 보안이나 퍼포먼스에 대한 검증을 거치지 않았기에 공식홈페이지에서도 runserver를 사용하지 않길 권장한다.
기능
포트번호 바꾸기
python manage.py runserver 포트번호를 통해 서비스할 포트번호를 바꿀 수 있다.
static 설정[이부분...위의 static과 합쳐도 괜찮지 않을까?]
배포서비스
| 서비스
|
개요
|
특장점
|
한계
|
| Pythonanywhere
|
파이썬 온라인 서버라 할까. 파이썬 클라우드. 기업에서 제공하는 컴퓨터를 이용하는 서비스라 보면 되겠다.
리눅스 서버.
|
간단하다.
|
|
| heroku
|
다양한 언어와 프레임워크를 지원하는 클라우드 서비스.
|
|
|
| aws
|
아마존.
|
|
|
| gcp
|
구글.
|
|
|
| azure
|
마이크로소프트.
|
|
|