- 이전 온프레미스상에서 (nginx-react)-(gunicorn-django)-(mysql)이렇게 연동을 거의 다해서 글을 작성하려 했지만 못했다.
- 그때 react 파일을 build 하는 방법을 계속 생각하면서 비쥬얼 스튜디오에서 하면 되는 것을 리눅스 centos에서 노드 다운받고 등등 여러작업을 해서 했는데....
- 이번엔 ubuntu 환경에서 작업을 진행하려고 한다.
RDS 서버 만들기
- 이전 했던 작업과 동일하게 만들어 준다.

CREATE DATABASE web
Gunicorn + Django
sudo su - root
apt update #필수!
apt install python3.9
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
update-alternatives --config python3
apt-get install python3-pip libmysqlclient-dev libjpeg-dev python3.9-dev python3.9-distutils
pip3 install vertualenv
rm -rf [프로젝트 폴더]/venv
cd [프로젝트 폴더]
virtualenv venv
source [프로젝트 폴더]/venv/bin/activate
pip install -r requirements.txt
pip install django
pip install django-cors-headers
ALLOWED_HOSTS = ['*',]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
'corsheaders',
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_WHITELIST = [
"http://[프론트 ip]:3000",
"http://127.0.0.1:8000",
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[DB이름]',
'USER': '[DB계정]',
'PASSWORD': '[계정비밀번호]',
'HOST': '[RDS 엔드포인트 주소]',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
}
}
}
- settings.py 수정해서 옮겨도 되지만 나는 리눅스에서 작업하는게 편해서 리눅스에서 진행했다.
- 장고 설정
pip install gunicorn django django-model-utils
gunicorn --bind 0.0.0.0:8000 config.wsgi:application

nginx + react

- visual sutdio code 실행해서 app.js 부분 fetch 부분을 백엔드ip와 포트 그리고 url을 작성한 해준다.
npm run buiild
- 작성이 완료되면 그 때 빌드해준다.
- build 폴더를 EC2에 넣어준다!
apt update
apt-get install nginx
systemctl restart nginx
mv build/ /var/www/html

- 빌드한 react 파일을 /var/www/html 로 옮겨준다.

- 접속 확인
vi /etc/nginx/sites-available/default
location /data {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://[gunicorn ip]:8000;
}

- 주석 풀고 프록시 설정
- 백엔트(gunicorn)의 ip가 노출되지 않는다.

- nginx 실행
- 프론트ip/백엔드url을 입력하면 접속이 되는 것을 확인