실제로 웹 어플리케이션이 배포되는 과정에선 필요한 부분이 더 많다.
우선 지금 배포하려고 하는 django 프로젝트를 gunicorn 이라는 파이썬 기반 wsgi 에 연결해보자.
django 서버에 gunicon 을 설치하여 WSGI (Web Server Gateway Interface) 인 gunicorn 에서 통신을 단순화하고 표준화하는 역할을 수행하게끔 설정한다.
source venv/bin/activate
cd Dev ... # 해당 app 경로로 가서
구니콘의 경우 파이썬 패키지에서 다운이 가능하다.
pip install gunicorn
구니콘의 config 파일을 settings.py 파일이 있는 곳에 만들어준다.
vi lion_app/gunicorn_config.py
# bind 해서 8000 포트로 묶어
import multiprocessing
bind="0.0.0.0:8000"
workers=multiprocessing.cpu_count()*2+1
웹 브라우저를 구니콘으로 오픈!
gunicorn lion_app.wsgi:application --config lion_app/gunicorn_config.py
Not Found: /static/admin/css/responsive.css
Not Found: /static/admin/css/dark_mode.css
Not Found: /static/admin/css/base.css
Not Found: /static/admin/css/login.css
Not Found: /static/admin/js/nav_sidebar.js
Not Found: /static/admin/js/theme.js
Not Found: /static/admin/css/nav_sidebar.css
^C[2023-08-01 09:29:35 +0900] [36434] [INFO] Handling signal: int
^C[2023-08-01 00:29:35 +0000] [36438] [INFO] Worker exiting (pid: 36438)
[2023-08-01 00:29:35 +0000] [36439] [INFO] Worker exiting (pid: 36439)
[2023-08-01 00:29:35 +0000] [36437] [INFO] Worker exiting (pid: 36437)
[2023-08-01 00:29:35 +0000] [36436] [INFO] Worker exiting (pid: 36436)
[2023-08-01 00:29:35 +0000] [36440] [INFO] Worker exiting (pid: 36440)
static 파일들을 찾진 못했지만 일단 서버는 열렸고 연결이 된 것을 확인 가능하다.
정적 파일들이 없으니 .. 못생긴 웹 페이지
이제 구니콘 앞단에서 비동기 이벤트 기반 아키텍처를 사용하여 연결을 처리해주는 오픈 소스 웹 서버인 Nginx 를 설치해보자
Nginx 는 파이썬 패키지가 아닌 운영체제 단위에서 단위에서 사용이 가능하기 때문에 apt 를 이용해서 다운 받는다. → root 경로에 설치가 된다.
sudo apt install nginx
이제 django 를 위한 규칙을 생성한다.
sudo vi /etc/nginx/sites-available/django
django 안쪽 규칙
server {
listen 80; # HTTP 접속 포트 80 포트
server_name http {공인 IP};
location / {
# 프록시로 아래 주소로 바꿔주겠다
proxy_pass <http://127.0.0.1:8000>;
proxy_set_header Host $host; # nginx 로 들어온 정보값을 넣어줄 변수
proxy_set_header X-Real-IP $remote_addr;
}
}
서버에 설치한 nginx 가 http 요청을 응답할 준비가 되었지만 클라우드 환경으로 서버를 띄웠기 때문에 클라우드 접근 규칙, ACG 에서 접근을 허용하는 규칙을 만들어 주어야 한다.
web 이라는 이름으로 80 포트(http), 443 포트(https) ACG 생성 및 설정 → 포트 열어주기
그리고 해당 서버 ACG 에 적용시킨다.
이제 웹 브라우저에서 해당 클라우드 공인 IP 주소로 접근하게 되면 → http GET request
nginx 의 defualt 페이지 값이 Response 로 전달 되게 된다.
이제 다른 포튿들은 닫아버리고 nginx 포트만 살려두면 작업이 완성된다.
💡 해당 목적은, 구니콘이나 django 로 바로 들어올 수 있게 하는게 아닌 nginx 를 통해서만 들어올 수 있게 함에 있다.
'Dev. > Cloud' 카테고리의 다른 글
[Cloud] 배포 - NCP : 자동으로 nginx 까지 (0) | 2023.08.05 |
---|---|
[Cloud] 배포 - NCP : Nginx 설정파일 (0) | 2023.08.04 |
[Cloud] 배포 - NCP : 자동 배포 (0) | 2023.08.01 |
[Cloud] 배포 - NCP : Django App 생성부터 배포 (0) | 2023.07.31 |
[Cloud] 시작 - NCP : VScode 로 원격 접속하기 (0) | 2023.07.29 |
댓글