이전 글에서 실제 서버에 Git에 있는 프로젝트 소스코드를
업로드하고 접속까지 진행해봤다. 하지만, 이렇게는 서버를
정상적으로 돌릴 수가 없다. 매번 서버에 들어가서 서버에
소스코드를 실행할 수는 없다.
STEP 1. WSGI 설치
서버와 프로젝트를 연결하기 위해서는 WSGI가 필요하다.
WSGI(Web Server Gateway Interface) 란
웹 서버 게이트웨이 인터페이스란 녀석인데,
웹 애플리케이션과 서버를 연결해주는 역할을
담당한다. WSGI는 다양한 툴이 있는데, 파이썬에서는
uWSGI 혹은 Gunicorn을 사용한다.
python3 -m pip install uwsgi
STEP 2. uwsgi.ini 설정
WSGI를 사용하기 위해서 *.ini파일을 설정해준다.
vim을 사용해서 uwsgi.ini를 실행해준다.
vim uwsgi.ini
프로젝트 내 파일이름은 Django_project/settings.py에서
확인할 수 있다. WSGI_APPLICATION에 할당된 값을
확인하면 맨 앞에 있는 프로젝트 이름을 기입하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[uwsgi]
chdir=/home/ubuntu/{프로젝트 폴더}
module={프로젝트 내 파일이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv
socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666
|
cs |
vim에 *.ini 작업을 완료하고 나서 ini 를 서버에 반영해준다.
먼저 uwsgi으로 파이썬으로 작성된 애플리케이션을 연결
하기 위한 core 모듈을 설치해준다.
sudo apt install uwsgi-core
uwsgi --ini uwsgi.ini
정상적으로 설정이 반영되면 다음 메세지가 출력된다.
[uWSGI] getting INI configuration from uwsgi.ini
STEP 3. 서버 모듈 설치
사용자들 HTTP 프로토콜을 처리할 수 있는 서버 모듈을
설치해준다. 서버모듈은 Nginx를 사용한다.
sudo apt-get install nginx
STEP 4. 서버 모듈 nginx.conf 설정
서버 모듈이 설치완료되면 Nginx configuration을
다시 설정해준다.
sudo vim /etc/nginx/nginx.conf
conf 파일을 열어서 "http" 섹션 가장 위에 다음코드를
입력해준다. WSGI 소켓설정을 해줘야 서버랑 WSGI가
정상적으로 연결된다.
http{
upstream django{
server unix:/home/ubuntu/mokey.com/uwsgi.sock;
}
## # Basic Settings ##
}
STEP 5. 서버 모듈 nginx.sites-enabled 설정
root 계정 권한으로 sites-enabled를 오픈한다.
sudo vim /etc/nginx/sites-enabled/default
먼저 Location 섹션에서 필요없는 부분을 삭제한다.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
upstream Django로 설정해준 부분을 추가해준다.
wsgi방식으로 HTTP 요청을 django로 보내는
설정이다.
static폴더를 만들어서 img 혹은 css/js를 추가한
프로젝트의 경우는 static 폴더 설정까지 추가해준다.
media 폴더를 만든경우에도 동일하게 Location
설정을 해준다. alias를 사용하고, ";"를 절대
빠뜨리면 안된다.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}
location /static/ {
alias /home/ubuntu/project_name/project_subname/static/;
}
location /media/ {
alias 프로젝트 내 media 디렉토리 path;
}
STEP 6. Nginx 재시작
이제 모든 설정을 완료했다.
Nginx(서버모듈)을 재시작 해주면, 정상적으로
서버에 접속이 가능하고, HTTP 프로토콜 처리가
작동한다.
'Programming' 카테고리의 다른 글
python 코드 20줄로 AWS S3 버킷에 이미지 업로드 하기 (0) | 2022.01.18 |
---|---|
AWS에 크롬드라이버 설치 selenium 돌리기 (0) | 2022.01.18 |
웹 애플리케이션 서버 생성 및 배포하기 Nginx uWSGI unix socket django python AWS ubuntu server (0) | 2022.01.17 |
Django AWS 배포하기 3 (0) | 2022.01.15 |
Django AWS 배포하기 2 (0) | 2022.01.15 |
Django AWS 배포하기 1 (0) | 2022.01.14 |
댓글