장고:우분투에 올리기(nginx 사용)
편집하기
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{장고}} =개요= runserver는 사실 개발용 기능이다. 웹 서버에 올리기 위해선 아파치 같은 웹서버용 소프트웨어를 실행시켜야 한다. ==gunicorn== ===개요=== *파이썬 WSGI서버 중 하나.(파이썬을 웹서버와 중계하는 역할.) *웹서버와 장고를 연결시켜주는 기능. <br /> ===사용=== {| class="wikitable" !과정 !설명 !방법 |- |설치 |가상환경 내에서 설치해주자. (runserver를 실행시켰을 때 잘 돌아감을 확인한 후 진행하자.) |<code>pip install gunicorn</code> |- |테스트 |manage.py 가 있는 곳에서 <code>gunicorn wsgi의 경로</code> 를 입력해준다. (필자의 경우 gunicorn --bind 0:8000 config.wsgi:application) --bind 0:8000은 모든 IP에서 8000번 포트로 들어오는 걸 허용한다는 의미. 이걸 입력해주면 [2020-12-19 23:41:50 +0900] [86493] [INFO] Starting gunicorn 20.0.4과 같이 뜬다. (해당 도메인으로 들어가보자. runserver로 진행한 것과 동일하게 뜰 것이다.) |<code>gunicorn --bind 0:8000 config.wsgi:application</code> |- |유닉스 소켓으로 서비스 |유닉스 계열 시스템에선 포트방식보단 유닉스 소켓방식이 더 선호된다. 백그라운드에서 실행되게 하자. 소켓파일은 /tmp/gunicorn.sock 으로 생성된다. 소켓방식으로 띄우면 단독으로 gunicorn 테스트는 불가. |<code>gunicorn --bind unix:/tmp/gunicorn.sock config.wsgi:application &</code> |} ===종료=== 다른 것들을 테스트하기 위해 종료해야 할 때가 있다. <code>pkill -f gunicorn</code> ==nginx== 아파치와 같은 웹서버. ===사용=== {| class="wikitable" !과정 !설명 !방법 |- |설치 |가상환경 내에서 설치해주자. |<code>sudo apt install nginx</code> |- |설치 확인 |제대로 설치가 되었는지 확인 |<code>nginx -v</code> |- |설정파일 작성(sites-available) |설정 디렉터리 아래에 설정파일을 만든다.(mysite로 만들 때) 다음과 같이 파일을 작성한다.<syntaxhighlight lang="bash"> server { # 받을 포트. listen 8000; # 고정아이피. server_name id8436.iptime.org; #location = /favicon.ico { access_log off; log_not_found off; } # static 디렉터리 파일. # static 디렉터리 주소. location /static { alias /home/id8436/projects/mysite/static; } # static으로의 설정 외의 연결은 이곳에서 처리하게끔. location / { include proxy_params; proxy_pass http://unix:/tmp/gunicorn.sock; # gunicorn 소켓경로를 지정해준다. } } </syntaxhighlight> |sudo nano /etc/nginx/sites-available/mysite |- |설정파일 작성(site-enabled) |site-available 안의 설정파일 중 활성화시키고 싶은 것들을 관리한다. 기존 default 설정을 삭제하고 위에서 작성한 설정파일을 링크해둔다. |<code>sudo rm /etc/nginx/sites-enabled/default</code><br> <code>sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/default</code> |- |확인 및 변동사항 적용 |설정파일을 테스트하고, 재시작한다. |<code>sudo nginx -t</code><code>sudo systemctl restart nginx</code> |- | | | |} ===이외 설정=== {| class="wikitable" !과정 !설명 !방법 |- |이외 설정 |굳이 안건드려도 된다. 기본 설정파일은 /etc/nginx/nginx.conf sudo nano /etc/nginx/nginx.conf 형태로 기초 설정파일을 만질 수 있다. <nowiki>***</nowiki>설정을 만진 후엔 재시작해주어야 한다. | |- |업로드 용량 제한 |413 Request Entity Too Large 에러가 뜬 경우. nginx.conf 파일 항목 http 내에 client_max_body_size 20M; 형태로 내용을 추가한다. | |}<br /> ===이외 명령들=== {| class="wikitable" !명령 !설명 |- |<code>sudo /etc/init.d/nginx start</code> |쓸 일이 있을진 모르겠지만...(나중에 필요없으면 지우자.) nginx 시작 |- |sudo systemctl start nginx |시작 |- |sudo systemctl stop nginx |종료 |} ==변경사항 반영== git으로 변경사항을 반영해도 변경내용이 적용되지 않는 경우가 있다...그럴 땐 다음의 과정을 따라주자. 탬플릿 변형은 별다른 작업 없이도 반영된다. 파이썬 파일을 변경했을 때만 적용하면 된다. {| class="wikitable" |+ !과정 !설명 |- |gunicorn 끄기 (이상하게 재시작만으론 안된다. 굳이 껏다 켜야 한다;) |<code>pkill -f gunicorn</code> |- |gunicorn 실행(백그라운드) |<code>gunicorn --bind unix:/tmp/gunicorn.sock config.wsgi:application --daemon</code> |- | | |} =문제 파악= ===static 이 안불러와짐.=== runserver에서 잘 나오던 이미지, 스크립트 따위가 서버에 올려두면 안나오는 경우가 있다. 이때 개발자도구의 'network'를 살펴보면 해당 요소에서 404 에러가 뜨는데, 이는 확장자가 PNG인데, png로 불러왔다든가 하는.. 굉장히 사소한 오류에서 기인한다. ===포트가 사용중임=== sudo fuser -k 포트번호/tcp 를 통해 해당 포트를 사용하는 프로세스를 종료시킬 수 있다.
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:장고
(
원본 보기
) (보호됨)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보