CLOUD/Server

[AWS/Ubuntu/Django] 웹페이지 배포하기

alsruds 2023. 2. 28. 16:58

[ AWS ] 

 

서비스 > RDS

● 데이터베이스 생성

 

서비스 > EC2

인스턴스 생성

우분투 20.04 사용

○ 퍼블릭 IPv4 주소 & 키로 putty 접속

》 키 등록 : Category > Connection > SSH > Auth > Private key file for authentication

키 등록 시 패스워드 칠 필요가 없어짐!

login as : ubuntu

 

방화벽 해제

EC2

》 인스턴스 》 인스턴스 ID 》 보안 》 보안 그룹 》 인바운드 규칙 》 인바운드 규칙 편집 》 규칙 추가

( 유형 : HTTP & 소스 : 0.0.0.0/0)

RDS

》 데이터베이스 》 연결&보안 》 VPC 보안 그룹 》 보안 그룹 ID 》 인바운드 규칙 》 인바운드 규칙 편집 》 소스 유형 변경 

( 소스 유형 : Anywhere-IPv4 )

 

[ PuTTY ] 

root 계정으로 변경

sudo su

 

파이썬 버전 확인

python3 --version

현재 python 3.8.10

3.9로 업데이트

 

파이썬 설치

apt update
apt install python3.9

python3.8 & 3.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 apache2 apache2-dev python3-pip libmysqlclient-dev libjpeg-dev python3.9-dev

》 CentOS 웹 서버 프로그램 : httpd

Ubuntu 웹 서버 프로그램 : apache2

 

프로젝트 파일 옮기기 및 압축 해제

○ FileZilla 이용

AWS에서 받았던 키 파일을 이용해 비밀번호 없이 접속 가능

FileZilla 시작 후 파일(F)>사이트 관리자 선택

호스트는 AWS - EC2 에서의 공인 IP

포트번호 22

사용자 : ubuntu

키 파일 : AWS 에서 발급받았던 키 파일

 

압축 해제

unzip [압축파일이름]

 

¿ 에러 발생 ¿ ImportError: No module named apt_pkg

¡ 해결

apt-get remove  python3-apt
apt-get install python3-apt
apt-get install --reinstall python3-apt

 

¿ 에러 발생 ¿ unzip: command not found

¡ 해결

apt-get install unzip

 

venv 삭제 및 재생성 / 활성화

삭제

rm -rf venv

 재생성

virtualenv venv

 

¿ 에러 발생 ¿ virtualenv: command not found

¡ 해결

apt install virtualenv

 

 venv 활성화

source venv/bin/activate

 

라이브러리 설치

pip install -r requirements.txt

 

아파치 장고 연동

모듈 설치

pip install mod_wsgi

웹 서버 설정 파일

 /etc/apache2/sites-enabled/000-default.conf  내용 추가

LoadModule wsgi_module "/home/web/django/venv/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "/home/web/django/venv"
# 위 두 줄은  mod_wsgi-express module-config 입력 후 출력 결과 붙여넣기

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>

 

settings.py 파일 설정 변경

배포용 설정

ALLOWED_HOSTS = [] 	#변경 전
ALLOWED_HOSTS = ['*', ]	#변경 후

DB 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB이름',
        'USER': '계정',
        'PASSWORD': '패스워드',
        'HOST': 'AWS-RDS의 엔드포인트 주소',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}

데이터베이스 적용

python3 manage.py migrate

 

재시작

systemctl restart apache2

 

☞ 접속 확인! ☜

》 AWS - EC2 에서 할당받았던 퍼블릭 IPv4 주소로 웹페이지 접속 확인

웹페이지 배포 완료~

'CLOUD > Server' 카테고리의 다른 글

[DB] 사상 (Mapping)  (0) 2023.03.02
[DB] 관계 데이터 모델  (0) 2023.03.02
[DB] ER 다이어그램  (0) 2023.02.27
[DB] 데이터 모델링  (0) 2023.02.23
[DB] DBMS  (0) 2023.02.22