PostgreSQL이란?

PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다.

 

Django나 Wagtail에서는 기본적으로 Sqlite3를 제공하고 있다. 그러나 충분한 성능을 기대하긴 어렵다. 그래서 오픈 소스로 사용가능한 PostgreSQL을 적용해보자. 

 

 

 

-윈도우는 아래 링크 참고-

https://dora-guide.com/postgresql-install/

https://m.blog.naver.com/ilsan_ilsan/221493158294

 

 

1. PostgreSQL 설치

pip install psycopg2-binary

 

 

2. Settings

 

 

settings.py

DATABASES = {
    'default': {
        'ENGINE': os.environ.get('SQL_ENGINE', 'django.db.backends.sqlite3'),
        'NAME': os.environ.get('SQL_DATABASE', os.path.join(BASE_DIR, 'db.sqlite3')),
        'USER': os.environ.get('SQL_USER', 'user'),
        'PASSWORD': os.environ.get('SQL_PASSWORD', 'password'),
        'HOST': os.environ.get('SQL_HOST', 'localhost'),
        'PORT': os.environ.get('SQL_PORT', '5432'),
    }
}

os.environ.get은 배포를 위해 만들어 놓은 .env 파일에서 설정을 가져와서 사용한다는 것이다.

로컬에서는 sqlite3를 계속해서 사용하기 위해 뒤에 입력해준다. 

 

 

추가)

 

.env 파일이란?

 

환경변수 설정 파일이다. 기존에 local에서 개발할 때 처럼 settings.py에 데이터베이스 정보, Django Secret Key등을 입력하게 되면 보안 문제를 야기할 수 있다. 그래서 .env 파일을 만들고 .gitignore에 추가시켜 업로드 되지 않게 관리하는 것이 바람직하다. 

 

 

.env

DEBUG=True
SECRET_KEY=django-insecure-ivndf...
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]

SQL_ENGINE=django.db.backends.postgresql_psycopg2
SQL_DATABASE=wagtail
SQL_USER=vicapor
SQL_PASSWORD=1234
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres

.env 파일의 예시이다. 

 

 

.gitignore

...

# .env 파일 push 방지
.env.prod
.env.db
.env.dev

위와 같이 생성한 .env 파일을 gitignore 해주면 된다.

 

 

Django SecretKey 재생성

 

Django Secretkey는 중요한 역할을 한다. 예를 들어 클라이언트에서 request로 token 값이 왔을 때, Django SecretKey와 암호화 알고리즘을 사용하여 암호화 한다. 만약 노출 되었을 경우 변경은 필수적이다. 

 

 

# python shell 접속
python manage.py shell


# shell에서 실행
from django.core.management.utils import get_random_secret_key

get_random_secret_key()

 

'Back-End > Wagtail, Django 배포' 카테고리의 다른 글

DumpData  (0) 2022.01.08
Wagtail RichText API  (0) 2022.01.07
2. Gunicorn, Nginx 적용  (0) 2021.12.23
3. Docker(Django, Wagtail)  (0) 2021.12.22
4. AWS (인스턴스 생성, 서버 접속)  (0) 2021.12.20

1. AWS 가입

 

 

https://aws.amazon.com/ko/?nc2=h_lg 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

AWS IoT에 대한 새로운 소식 산업, 소비자, 상업 및 자동차 워크로드에 대한 IoT 데이터를 수집, 저장 및 분석하는 새로운 방식에 대해 알아보세요. 발표 내용 살펴보기 

aws.amazon.com

먼저 aws 가입을 진행한다. 

 

 

AWS란? 

아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다.

쉽게 말하자면 웹 사이트 운영을 위해 서버를 대여하는 것이다. 서버는 24시간 켜져 있어야 하고 무거운 트래픽을 감당할 수 있어야 한다. 직접 서버 컴퓨터를 구매하여 운영하기에는 비용면에서 비효율적이므로 개인이나 소규모 웹 사이트는 서버 대여를 하는 것이 여러모로 좋다. 

 

 

2. 콘솔에 로그인

 

 

일단 지역을 서울로 바꿔주자. 지역을 바꾸는 이유는 선택한 지역의 서버 컴퓨터를 임대한다는 의미이다. 

 

 

그 다음에는 관리자 콘솔로 이동한다. ec2를 검색하여 들어가자. 

 

 

2. 인스턴스 생성

 

 

인스턴스로 이동하자. 작성자는 이전에 만든 인스턴스가 있지만 처음 aws를 사용하는 사람은 아무것도 없는 것이 정상이다. 오른쪽 상단에 있는 인스턴스 시작을 누르자. 

 

 

서버 컴퓨터 os를 선택하는 화면이다. Ubuntu로 선택하여 구축하도록 하겠다. 

 

 

정식 서비스면 서비스에 맞게 서버를 임대해야 하지만 공부용이나 테스트용은 프리티어로 선택하면 된다. 

왼쪽 하단의 다음: 인스턴스 세부 정보 구성을 눌러주자

 

 

인스턴스를 구축하기 위해 VPC 구성이 필요하다. VPC(Virtual Private Cloud)는 가상의 네트워크에서 Cloud의 리소스 즉 AWS의 리소스를 사용할 수 있게 해준다. 

구현에 중점을 맞췄기 때문에 VPC 만들기 또는 새 기본 VPC 생성에서 새 기본 VPC 생성을 눌러주자. 자동으로 VPC를 생성해준다. 

 

 

자동으로 VPC를 생성해주었다. 

 

 

다시 인스턴스 생성으로 돌아가서 나머지는 전부 기본으로 설정하고 넘기고 보안 그룹 구성에서 소스만 내 IP로 바꿔준다. 이제 검토 및 시작을 누르게 되면 다음 화면이 나타난다. 

 

 

키 페어 이름에는 적고 싶은 이름을 적으면 된다. 키 페어는 쉽게 말해서 우리가 만든 인스턴스로 접속할 수 있는 열쇠라고 생각하면 된다. 키 페어를 다운로드 하고 인스턴스 시작을 눌러주자. 

 

* 키 페어는 중요하므로 잘 보관해놓자.

 

 

인스턴스가 생성되었다. 인스턴스는 종료를 하게 되면 시간이 지나면 삭제가 된다. 인스턴스를 사용하지 않을 때면 중지를 해놓자. 

 

 

3. 탄력적 IP 주소 할당

 

 

왼쪽 메뉴의 탄력적 IP를 선택해주자. 인스턴스(서버)는 중지하고 실행하게 되면 IP주소가 바뀌어버린다. 이를 방지하기 위해 고정 IP를 설정해주는 기능이라고 생각하면 된다. 탄력적 IP 주소 할당을 누르고 할당해주자. 

 

 

생성되었으면 탄력적 IP 주소 연결을 선택해주자. (주소 릴리즈는 삭제이다.)

 

 

인스턴스와 프라이빗 IP주소에 우리가 생성한 인스턴스가 있을 것이다. 선택해주고 연결을 눌러주자. 

 

이제 AWS 인스턴스 서버가 완성되었다. 세부 설정은 AWS에 익숙해지고 설정하는 것을 추천한다. 

그리고 계속 인스턴스를 유지하게 되면 요금이 부과된다. 공부용이나 테스트용은 꼭 반대 순서를 통해 인스턴스를 삭제해주자!!

 

 

4. 인스턴스 접속

 

 

다시 인스턴스 메뉴로 돌아와서 생성된 인스턴스를 클릭하고 연결 버튼을 클릭하자. (우측상단에 버튼 목록에 2번째에 있다.)

 

 

그러면 다음과 같은 화면을 확인할 수 있다. 

 

여기서 우리에게 필요한 명령어는 다음과 같다. 

ssh -i "somthing.pem" ubuntu@ec2-3-37-3-24.ap-northeast-2.compute.amazonaws.com

 

ssh -i [full path to keypair file] ec2-user@[EC2 instance hostname or IP address]

Mac

 

 

ssh를 사용해서 우리가 생성해놓았던 비밀 키를 가지고 서버에 접속한다는 것이다. 참고로 작성자의 운영체제는 우분투이다. 우분투 사용자는 터미널을 열어서 위 명령어를 입력해주면 된다. 

 

* "somthing.pem"은 비밀키의 경로를 적어주어야 한다. 작성자는 비밀 키가 있는 폴더에서 명령어를 실행해주었다. 

 

 

그리고 비밀키의 권한을 설정해주어야 한다. (다시한번 언급하지만 키가 있는 경로로 입력해주던가 아니면 작성자 처럼 키가 있는 폴더로 이동해서 입력해주면 된다.)

chmod 400 something.pem

 

 

 

윈도우 사용자는 putty를 사용하면 편한데 사용방법은 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html

 

PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 - Amazon Elastic Compute Cloud

프라이빗 키의 암호는 추가 보호 계층입니다. 프라이빗 키가 노출되더라도 암호 없이 사용할 수 없습니다. 암호문 사용의 단점은 인스턴스에 로그온하거나 인스턴스에 파일을 복사하기 위해 사

docs.aws.amazon.com

아마존 공식문서를 참고해보자.

 

 

추가) 

 

 

혹시 ssh가 설치가 안된 사용자들은 다음 명령어를 터미널에서 실행시키면 된다. 

sudo apt update
sudo apt install openssh-server
sudo apt-get install openssh-client

 

 

sudo systemctl status ssh

위 명령어로 ssh의 상태를 알 수 있다. 

 

 

sudo systemctl enable ssh
sudo systemctl start ssh

만약 실행중이 아니라면 위 명령어를 실행해주자. 

 

 

sudo ufw allow ssh

방화벽을 사용하는 사용자들은 방화벽에 ssh를 허용해주자. 

 

 

ssh -i "somthing.pem" ubuntu@ec2-3-37-3-24.ap-northeast-2.compute.amazonaws.com

모든 준비가 되었으면 ssh로 접속하면 된다. 

 

 

성공적으로 서버에 접속했다. 

'Back-End > Wagtail, Django 배포' 카테고리의 다른 글

DumpData  (0) 2022.01.08
Wagtail RichText API  (0) 2022.01.07
2. Gunicorn, Nginx 적용  (0) 2021.12.23
1. PostgreSQL 적용  (0) 2021.12.22
3. Docker(Django, Wagtail)  (0) 2021.12.22

+ Recent posts