장고를 NGINX와 gunicorn을 사용하여 움직일 때의 흐름 정리 (자신 메모)
소개
공부하고 Django를 원격 호스트에 배포 한 후 NGINX와 gunicron의 설정 방향을 잘 모르기 때문에 자신에게 메모
하고 싶은 일
하고 싶은 일
Django로 만든 애플리케이션을 클라우드에 배포하고, 정적 파일을 표시하는 것 등의 가벼운 처리는 웹 서버(NGINX)로 처리하고, Django에서의 동적 처리 등 무거운 처리는 AP 서버(gunicron)로 하고 싶다.
정리하면 다음과 같은 이미지
필요한 작업 흐름
위의 작업을 수행하려면 다음 작업이 필요합니다 (Django 애플리케이션이 이미 서버에 배포되었다고 가정)
1. NGINX가 Django 사이트를 호출하는 구성 파일 작성
"/etc/nginx/sites-available"에 NGINX가 호출하는 웹 사이트 (여기서는 Django 앱)의 설정 파일을 추가한다. 이렇게 하면 NGINX가 그 사이트를 호출할 수 있게 된다.
/etc/nginx/sites-available에 파일 추가
cd /etc/nginx/sites-available
sudo vi djangapp
이 "djangapp"에 기재된 설정에 따라 NGINX는 Django를 호출한다.
다음에, 작성한 설정 파일에 정보를 기재한다. 덧붙여 이번 NGINX는 이하의 2개를 하고 싶다.
1. 정적 파일 표시
2. 요청 정보를 djangapp.sock(gunicorn과의 소켓용 파일)에 흘린다
설정 파일의 내용은 이런 느낌
etc/nginx/sites-available/djangapp
server {
# 設定しているウェブサイトへのリクエストを通すポート
listen 80;
# ウェブサイトのIPもしくはドメイン名
server_name xx.xx.xx.xxx;
# ファビコンが見つからないというエラーを回避するおまじない
location = /favicon.ico {access_log off; log_not_found off;}
### 以下、リクエストURLとNGINX上のパスとの対応を定義
# Django静的ファイルへのパスを設定
location /static/ {
root /home/ubuntu/djangapp;
}
# 管理者用ページのCSSを表示するためのパスを設定
location /static/admin {
root /home/ubuntu/venv/lib/python3.6/site-packages/django/contrib/admin/static/admin;
}
# リクエストをウェブページに流すためにunixソケットへのパスを設定
location / {
# 「/etc/nginx/proxy_params」にプロキシの設定が記載してある
include proxy_params;
# djangapp.sockにリクエスト結果を流している
proxy_pass http://unix:/home/ubuntu/djangapp/djangapp.sock;
}
}
2. Django를 호출하는 설정 파일에 대한 심볼릭 링크 생성
아까 작성한 「 sites-available/djangapp」는 「유효야에서」라는 것을 나타내기 위해서 「site-enabled」에 심볼릭 링크를 작성한다.
접속을 일시적으로 끊고 싶은 경우는, 이 심볼릭 링크만 지우면 좋다
심볼릭 링크 만들기
sudo ln -s /etc/nginx/sites-available/djangapp /etc/nginx/sites-enaled
이제 sites-enabled/djangapp -> sites-available/djangapp라는 심볼릭 링크를 만들었습니다. 일단 확인.
심볼릭 링크 확인
(venv) ubuntu@ip-172-31-45-165:/etc/nginx/sites-available$ ls -la /etc/nginx/sites-enabled/
total 8
drwxr-xr-x 2 root root 4096 Apr 29 13:26 .
drwxr-xr-x 8 root root 4096 Apr 29 13:27 ..
lrwxrwxrwx 1 root root 34 Apr 29 06:54 default -> /etc/nginx/sites-available/default
# シンボリック・リンクになってる
lrwxrwxrwx 1 root root 36 Apr 29 13:26 djangapp -> /etc/nginx/sites-available/djangapp
3. NGINX와 gunicorn 재부팅
우선 NGINX가 제대로 움직이는지 테스트 해 보겠습니다.
nginx 테스트 실행
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
문제없이 움직이고 있는지 확인.
계속해서 다양한 재부팅
NGINX 재부팅
sudo systemctl restart nginx
gunicorn 재부팅
sudo systemctl restart gunicorn
나중에 URL에 연결하십시오.
Reference
이 문제에 관하여(장고를 NGINX와 gunicorn을 사용하여 움직일 때의 흐름 정리 (자신 메모)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamitarai/items/89835f6f63775155bc7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)