장고:웹서비스: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
편집 요약 없음
 
(사용자 2명의 중간 판 22개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{장고}}
{{장고}}


==개요==
페이지를 만들었으면 서버에 올려두고 서비스를 해야 한다.


완성 후 Settings.py에서 ALLOWED_HOST항목에 서버의 IP혹은 도메인을 입력해주어야 작동한다. DEBUG=True이면 개발모드, False면 운영모드로 인식한다.


서버를 서비스 할 때는 python manage.py runserver 0.0.0.0:8000 의 형태로 실행한다.
서버를 서비스 할 때는 python manage.py runserver 0.0.0.0:8000 의 형태로 실행한다.(0:80으로 쓰는 등.. 모든 IP에 대하여 80번 포트로 실행한다.는 의미.)


(리눅스라면 &을 붙이자. 백그라운드에서 실행하게끔)
(리눅스라면 &을 붙이자. 백그라운드에서 실행하게끔)


0.0.0.0은 어떤 호스트로 실행하든 다 받겠다는 이야기. 그냥 0:8000 으로 두어도 된다.
0.0.0.0은 어떤 호스트로 실행하든 다 받겠다는 이야기.


<br />
<br />
==개요==
페이지를 만들었으면 서버에 올려두고 서비스를 해야 한다.


== 호스트 설정 ==
장고 runserver로 배포해선 안된다. 장고는 웹 프레임워크로, 웹서버의 역할을 하진 못한다. 보안이나 퍼포먼스에 대한 검증을 거치지 않았기에 공식홈페이지에서도 runserver를 사용하지 않길 권장한다.
장고가 서버에서 서비스 될 때엔 Settings.py 안의 ALLOWED_HOSTS 항목을 설정해 주어야 한다.(아마 보안문제인듯)


그 안에 서버의 아이피를 기입한다.(도메인도 되는지 해보자.)
==기능==


== settings.py 분리 ==
===포트번호 바꾸기===
ALLOWED_HOSTS 안에 서버의 아이피를 기입했끼 때문에 localhost로 동작하지 못하게 된다. 이건 서버가 아닌, 작업PC에서 시범사이트를 돌리는 데 문제가 된다.
<code>python manage.py runserver 포트번호</code>를 통해 서비스할 포트번호를 바꿀 수 있다.


이를 방지하기 위해 세팅파일을 구분하여 로컬호스트로 동작할 때는 다른 파일로 서버를 동작시켜주어야 한다.
==static 설정[이부분...위의 static과 합쳐도 괜찮지 않을까?]==
 
<br />
=== 로컬용 세팅파일 만들기 ===
아무 이름이나 상관 없다. 만들고 싶은 곳에 로컬용 세팅파일을 만든다. 같은 경로에 만들면 찾기 쉽겠지.
 
내용은 다음과 같이.<syntaxhighlight lang="python">
기존 세팅파일의 임포트는 다 해준다. 그리고 아랫 줄 추가.(아님, 그냥 아래 두 줄만으로도 되는지 실험해보자.)
 
from .settings import *
 
ALLOWED_HOSTS = []#세팅파일을 불러와, 이 세팅만 덧씌운다.
</syntaxhighlight>
 
=== 로컬용 세팅파일로 서버 실행 ===
기본적인 실행에선 settings.py를  통해 기본 세팅을 받지만, 이 파일을 바꾸어 서버를 실행하는 옵션이 있다.


python manage.py runserver --settings=config.로컬용세팅파일 #기존 세팅파일과 같은 경로에 있는 경우.
==배포서비스==
{| class="wikitable"
|+
!서비스
!개요
!특장점
!한계
|-
|Pythonanywhere
|파이썬 온라인 서버라 할까. 파이썬 클라우드. 기업에서 제공하는 컴퓨터를 이용하는 서비스라 보면 되겠다.


위와 같이 실행하면 새로 만든 파일을 세팅으로 받아 서버를 실행한다.
리눅스 서버.
|간단하다.
|
|-
|heroku
|다양한 언어와 프레임워크를 지원하는 클라우드 서비스.
|
|
|-
|aws
|아마존.
|
|
|-
|gcp
|구글.
|
|
|-
|azure
|마이크로소프트.
|
|
|}
<br />
<br />
===사전작업. wsgi.py 세팅===
runserver로 접속할 수 있음을 확인한 후 진행한다.


== 서버 실행 자동화 ==
startapp 명령어를 통해 만든 세팅파일 디렉토리에 wsgi.py가 있다. 이 안에서 서버와 소통하기 위한 기본적인 세팅을 손볼 수 있다.<syntaxhighlight lang="python">
파일명.sh 파일을 만들어보자.
import os


from django.core.wsgi import get_wsgi_application


=== 주의(리눅스로 옮기자.) ===
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
서버가 종료되지 않은 상태에서 터미널이 종료되면 서버 실행 시 Error : That port is already in use. 라는 에러가 뜬다.


이땐 killall python을 실행하고 서버를 실행하면 된다.(이거 말고 핀포인트로 종료하는 방법은 없나;;?
application = get_wsgi_application()
 
</syntaxhighlight>기본 형태는 위와 같다만, 내 글을 따라온 사람이라면... 세팅파일을 운영용 세팅파일인 <code>config.service_settings</code> 로 바꾸어주어야 한다.
 
 
<br />

2022년 7월 5일 (화) 13:55 기준 최신판

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
  7. 장고:팁


완성 후 Settings.py에서 ALLOWED_HOST항목에 서버의 IP혹은 도메인을 입력해주어야 작동한다. DEBUG=True이면 개발모드, False면 운영모드로 인식한다.

서버를 서비스 할 때는 python manage.py runserver 0.0.0.0:8000 의 형태로 실행한다.(0:80으로 쓰는 등.. 모든 IP에 대하여 80번 포트로 실행한다.는 의미.)

(리눅스라면 &을 붙이자. 백그라운드에서 실행하게끔)

0.0.0.0은 어떤 호스트로 실행하든 다 받겠다는 이야기.


개요[편집 | 원본 편집]

페이지를 만들었으면 서버에 올려두고 서비스를 해야 한다.

장고 runserver로 배포해선 안된다. 장고는 웹 프레임워크로, 웹서버의 역할을 하진 못한다. 보안이나 퍼포먼스에 대한 검증을 거치지 않았기에 공식홈페이지에서도 runserver를 사용하지 않길 권장한다.

기능[편집 | 원본 편집]

포트번호 바꾸기[편집 | 원본 편집]

python manage.py runserver 포트번호를 통해 서비스할 포트번호를 바꿀 수 있다.

static 설정[이부분...위의 static과 합쳐도 괜찮지 않을까?][편집 | 원본 편집]


배포서비스[편집 | 원본 편집]

서비스 개요 특장점 한계
Pythonanywhere 파이썬 온라인 서버라 할까. 파이썬 클라우드. 기업에서 제공하는 컴퓨터를 이용하는 서비스라 보면 되겠다.

리눅스 서버.

간단하다.
heroku 다양한 언어와 프레임워크를 지원하는 클라우드 서비스.
aws 아마존.
gcp 구글.
azure 마이크로소프트.


사전작업. wsgi.py 세팅[편집 | 원본 편집]

runserver로 접속할 수 있음을 확인한 후 진행한다.

startapp 명령어를 통해 만든 세팅파일 디렉토리에 wsgi.py가 있다. 이 안에서 서버와 소통하기 위한 기본적인 세팅을 손볼 수 있다.

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

application = get_wsgi_application()

기본 형태는 위와 같다만, 내 글을 따라온 사람이라면... 세팅파일을 운영용 세팅파일인 config.service_settings 로 바꾸어주어야 한다.