1.EC2
2.Security Group
3.RDS(Relational Database Service)
4.Load Balancer
5.Route 53
6.AWS S3(Simple Storage Service)
인스턴스를 시작하고 프리티어 사용 가능한 Ubuntu server 18.04 LTS를 선택한다.
t2_micro가 1년동안 무료이므로 instance type은 t2_micro 선택한다.
subnet 을 기본값으로 설정하고, 종료 방지 기능을 활성화하여 우발적인 종료로 부터 보호한다.
storage는 기본 8GB로 둔다.
태그를 추가하여 키와 값을 설정한다.
보안 그룹은 기본 설정 값 그대로 설정한다.
pem 키 파일을 전에 발급받은 키로 설정한다.
인스턴스 시작 후 public ip 주소로 ssh 접속
#path/to/pem 은 pem 키 파일 경로
ssh -i path/to/pem ubuntu@13.125.228.11
2.parameter groups 페이지에서 create parameter group 을 선택하여 시작한다.
3.group name 과 description 은 자유롭게 정하고 parameter group family의 경우 mysql5.7로 설정한다.
4.방금 생성한 설정 파일을 수정한다.
6.create database를 눌러 MySQL 데이터베이스를 새로 생성한다.
7.MySQL을 엔진으로 선택하고 DB 세부 사항은 대부분 default 값으로 두고 맨 아래 settings에서 데이터베이스를 설정하고 싶은 이름으로 생성하고 싶다면 DB instance identifier에 데이터베이스 이름을 적어준다.(아니면 생성되지 않고 나중에 터미널 mysql에서 생성 가능)
8.master username은 root로 설정하고 비밀번호를 설정한다.
9.고급 설정 페이지에서 public accessability를 yes로 설정하고 DB parameter group을 방금 생성한 parameter 설정 파일로 변경한다.
10.나머지는 default 값 그대로 두고 create database 버튼을 눌러 마무리한다.
11.instance 페이지에서 데이터베이스 대쉬보드 페이지로 가면 endpoint를 확인해 이 주소로 database에 접속할 수 있다.
12.Security group 설정을 변경하여 어디서든 접속이 가능하게 한다.(원래는 해킹의 위험이 있기 때문에 어디서든 접속 가능하게 열어놓지 않는다.
13.생성된 데이터베이스에 접속한 후 데이터베이스와 테이블을 생성한다.
mysql -h temptest.cj5v1k6zfree.ap-northeast-2.rds.amazonaws.com -u root -p
1.pem 파일이 있는 폴더로 이동후 EC2 서버로 접속한다.
ssh -i path/to/pem ubuntu@13.125.228.11
2.ubuntu linux 환경이므로 미니콘다 사이트로 이동해서 linux installer에서 python 3.7 버전의 name에서 오른쪽 마우스를 클릭 후 copy link address를 선택해 터미널에서 다음 명령어를 실행해 설치한다.
weget /copied link address/
3.실행권한을 주어 모두 yes로 실행한다.
chmod +x /미니콘다파일/ # 실행 권한 부여
/미니콘다 파일/ # 파일 실행
4.bash shell script 로 로컬 환경과 같이 설정한다.
source .bashrc
5.package update/upgrade
sudo apt-get update
sudo apt-get upgrade
6.mysqlclient 설치시 에러나지 않게 gcc 설치 후 mysqlclient 설치
sudo apt-get install gcc
sudo apt-get install libmysqlclient-dev
7.conda로 프로젝트를 위한 가상환경 생성 후 activate
conda create -n project python=3.7
conda activate project
8.레포지토리 clone 후 디렉토리로 이동
git clone /git repository/
cd /git repository/
9.프로젝트에 필요한 패키지 목록인 requirement 확인 후 설치
cat requirements.txt
pip install -r requirements.txt
10.my_settings 파일을 프로젝트에 만들고 settings에 EC2 서버의 public ip 를 설정하고 서버를 돌린다.
vi project명/settings.py
ALLOWED_HOSTS = ['*', 'public_ip', 'public_ip:8000']
11.my_settings에 mysql 설정과 secret_key 넣어준다.
vi my_settings.py #root 디렉토리에 생성
python manage.py runserver 0.0.0.0:800 #public ip 로 접속
#로컬 환경에서도 아래 명령어로 원격 RDS에 접속 가능
mysql -h temptest.cj5v1k6zfree.ap-northeast-2.rds.amazonaws.com -u root -p
12.EC2 public ip 가져와서 postman 으로 test 가능
13.장고에서 사용하는 manage.py runserver는 단일 thread로 동작하여 개발 테스트로 적당하지만 request 많은 운영 환경에서는 사용하기 적합하지 않으므로 multi thread를 지원하는 웹 어플리케이션인 gunicorn 을 설치하여 사용한다.
pip install gunicorn
gunicorn --bind=0.0.0.0:8000 welonmusk.wsgi #백그라운드로 돌리지 않고 그냥 돌림
nohup gunicorn --bind=0.0.0.0:8000 welonmusk.wsgi & #백그라운드로 돌린다.
ps -ef | grep python # 실행 확인
kill /pid_num/ # 서버를 동작시킬 필요 없을 경우 gunicorn 종료
wsgi란?
- 장고의 웹 어플리케이션을 지정한다
&란?- 백그라운드로 동작하는 명령어