EC2
인스턴스 생성
이름 설정
![](https://velog.velcdn.com/images/cis07385/post/4daa39f7-bebc-4ad7-bd30-f13c533c6217/image.png)
Ubuntu 20.04 프리티어
![](https://velog.velcdn.com/images/cis07385/post/441546c9-5a07-4648-940d-7eb20bb31b59/image.png)
![](https://velog.velcdn.com/images/cis07385/post/add6c30c-f1e5-464e-a55a-5b9213832b3f/image.png)
- 프리티어이면서 20.04 버전의 우분투를 사용할 것이다.
키 페어
![](https://velog.velcdn.com/images/cis07385/post/38a95c15-b94d-49ec-92d1-298f31ace003/image.png)
![](https://velog.velcdn.com/images/cis07385/post/2b160bb9-b3fa-4493-ab9b-f847feb52981/image.png)
![](https://velog.velcdn.com/images/cis07385/post/c5a70109-a2bd-431c-87cc-203fdf191afd/image.png)
- key pair를 ppk 확장자로 받는다.
- 다운 받고 자신의 컴퓨터에 안전하게 보관하도록 하자.
인스턴스 확인
![](https://velog.velcdn.com/images/cis07385/post/017579b0-06bc-4979-a996-f4cde5b15e7b/image.png)
- 전부 설정을 하고 잠시 기다리면 인스턴스 상태가 실행 중이 뜨면서 활성화가 된다.
RDS
MySQL 생성
![](https://velog.velcdn.com/images/cis07385/post/ccb1c364-80b4-4608-868a-d2866a243e72/image.png)
템플릿
![](https://velog.velcdn.com/images/cis07385/post/3e44bd08-2b41-4d5b-b734-0dcf583fd0de/image.png)
이름 생성
![](https://velog.velcdn.com/images/cis07385/post/8b750508-c641-480a-b4a0-9e21ad5b32b3/image.png)
암호 생성
![](https://velog.velcdn.com/images/cis07385/post/9fea2a62-4e47-4079-9836-b4631a89dd5f/image.png)
- db 서버에 접속할 암호이다.
- 계정은 디폴트로 admin으로 설정되어 있으니 굳이 안건들고 암호를 자신의 암호로 설정하자.
엑세스 허용
![](https://velog.velcdn.com/images/cis07385/post/c8f032d4-db65-46e9-a195-5b7a65ae1c7d/image.png)
- 연결 항목에 퍼블릭 액세스를 허용으로 해놓아야 한다.
- 이렇게 해놓지 않으면 EC2에서는 접근이 될지 몰라도 자신의 로컬 컴퓨터에서 workbanch를 통해 접속을 하려면 되지 않는다.
스키마 생성
![](https://velog.velcdn.com/images/cis07385/post/94e2cda5-54a4-408f-8164-f88d0fd9e628/image.png)
- 추가 구성 항목에 있다.
- CREATE [초기 데이터베이스 이름] 과 같은 뜻이다.
- 사용할 DB의 이름을 설정하자.
Putty
키페어 저장
![](https://velog.velcdn.com/images/cis07385/post/f0ea202a-f532-4ae1-bb53-170323613157/image.png)
![](https://velog.velcdn.com/images/cis07385/post/858201ab-653f-4fdf-979e-a83e77c3435b/image.png)
![](https://velog.velcdn.com/images/cis07385/post/d1223d21-e0c4-4622-a9bf-a0dde3ba35aa/image.png)
- 아까 다운로드 받은 key pair 파일을 putty를 접속해 집어넣어주자.
![](https://velog.velcdn.com/images/cis07385/post/dfcca1f3-2c4b-42c8-a1fd-4c0c7eaf55c1/image.png)
- EC2에 들어가서 만들어진 서버를 보면 퍼블릭 IPv4 DNS가 나와있다.
- 우리는 이 앤드포인트를 이용해 ssh 접속이나 외부 접속을 할 것이다.
![](https://velog.velcdn.com/images/cis07385/post/d0e48bfb-03dc-45d6-914b-9f37287d8ecd/image.png)
- putty에 22번 포트로 해당 DNS를 입력해서 ssh 접속을 하자.
![](https://velog.velcdn.com/images/cis07385/post/a2aefa04-ee38-4c90-a662-3fa223f3a0f3/image.png)
![](https://velog.velcdn.com/images/cis07385/post/6de2df9b-aae1-4de9-abcb-86b50aa81908/image.png)
- 위와 같이 로그인 아이디를 치라고 하는데 디폴트는 ubuntu이다.
![](https://velog.velcdn.com/images/cis07385/post/84643658-f363-491d-98cf-f2c443e4e4d4/image.png)
- 그러면 위 그림과 같이 활성화가 된다.
- 루트 사용자로 진행하고 싶으면 sudo su - root 명령어를 입력하면 된다.
FileZilla
- 물론 github에 프로젝트가 올라가 있는 사람은 git clone으로 프로젝트를 가지고 와도 된다.
![](https://velog.velcdn.com/images/cis07385/post/c9c53660-c22d-415a-9b18-98d791c2d04a/image.png)
- FileZilla 가장 상단 왼쪽 버튼을 클릭하자.
![](https://velog.velcdn.com/images/cis07385/post/684828e5-8d15-4d30-8194-0f3a6478188c/image.png)
- 새 사이트를 만들어준다.
- 프로토콜은 SFTP, 호스트는 퍼블릭 IPv4 (공인 IP) 주소를 쓰고 포트는 22를 입력한다.
- 사용자는 ubuntu이고, putty에서 했던것 처럼 키 파일을 넣어준다.
![](https://velog.velcdn.com/images/cis07385/post/1fb0cf26-80a0-461f-ab81-467effba09b4/image.png)
![](https://velog.velcdn.com/images/cis07385/post/e359fdcb-443b-49ae-851e-0d42cc048f6a/image.png)
- 프로젝트를 원하는 폴더 밑에 드래그 해서 옮겨준다.
- 집파일로 옮겨줘야 한다.
![](https://velog.velcdn.com/images/cis07385/post/1d1e424a-5c74-437d-a6f8-7d2176de8379/image.png)
인스턴스 및 프로젝트 초기 설정
파이썬 설치
- 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
![](https://velog.velcdn.com/images/cis07385/post/4bf7b74d-1da1-4afb-84e4-5947da529de5/image.png)
서버 관련 패키지 설치
- apt-get install apache2 apache2-dev python3-pip libmysqlclient-dev libjpeg-dev python3.9-dev
프로젝트 압축 해제 및 초기 설정
- apt install unzip
- unzip [압축파일명] -d [압축 해제하고 싶은 폴더의 경로]
![](https://velog.velcdn.com/images/cis07385/post/d41fe3cc-b7fc-4235-8460-a3a78a066d86/image.png)
만약 가상환경 관련 폴더가 있다면 삭제
가상환경 설치
- apt install virtualenv
- virtualenv [가상환경이름 아무거나]
가상환경 활성화
- source [가상환경폴더 이름]/bin/activate
- pip install -r requirements.txt
- 서버를 구동시키기 위한 필요 모듈 정리한 파일이 txt파일임.
- 없다면 직접 freeze를 이용해 만들어서 옮기거나 수동 설치 바람.
- 물론 가상환경 활성화 시키고
아파치 장고 연동
LoadModule wsgi_module "/usr/local/lib/python3.9/dist-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "/usr"
WSGIScriptAlias / "/[Project 폴더]/[Project 안의 설정 폴더]/wsgi.py"
WSGIPythonPath "/[Project 폴더]"
<Directory "/[Project 폴더]/[Project 안의 설정 폴더]">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /[Project 폴더]/static/
<Directory /[Project 폴더]/static/>
Require all granted
</Directory>
Alias /media/ /[Project 폴더]/media/
<Directory /[Project 폴더]/media/>
Require all granted
</Directory>
- 위의 코드를 가이드라인으로 작성하면 된다.
- vi 들어가기 전에 mod_wsgi-express module-config 명령어를 입력해서 나온 출력물을 복사한 후 들어가서 붙여넣기를 해야한다.
- project안의 설정 폴더는 wsgi.py가 있는 폴더를 뜻한다.
- project 폴더의 경로는 처음 경로부터 다 써주어야 한다.
방화벽 해제
EC2
![](https://velog.velcdn.com/images/cis07385/post/1a274fe3-f845-494e-87ce-164660fd7c64/image.png)
- EC2 -> 인스턴스 -> 인스턴스 이름 클릭 -> 보안 -> 보안 그룹 이름 클릭 -> 인바운드 규칙 -> 인바운드 규칙 편집 -> HTTP에 0.0.0.0/0 추가
RDS
- RDS -> DB 인스턴스 -> 인스턴스 이름 클릭 -> 연결 & 보안 -> VPC 보안 그룹 이름 클릭 -> 인바운드 규칙 -> 인바운드 규칙 편집 -> mysql의 설정에서 소스 부분을 anywhere로 설정
Django db 설정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB이름',
'USER': '계정',
'PASSWORD': '패스워드',
'HOST': 'RDS의 엔드포인트 주소',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
}
}
}
- 해당 프로젝트 settings.py에 위와 같이 db 설정을 해준다.
- RDS의 엔드포인트 주소는 RDS에 들어가서 엔드포인트 주소를 있는 그대로 넣어주면 된다.
- DB 이름은 아까 스키마 생성한 이름 그대로
- 계정은 위에서 admin으로 설정
- 비밀번호는 자신이 설정한 비밀번호
결과
![](https://velog.velcdn.com/images/cis07385/post/0e4c1ff8-a349-4da8-815b-171748bd668a/image.png)
- aws에서 발급 받은 퍼블릭 IPv4(공인 ip)를 입력하면 된다.
- 나는 도메인을 매핑 시켜서 설정했다.