개발 환경에 대하여 이야기하면서 어떻게 하는지도 이해하기 쉽도록 작성하겠지만 왜? 이것을 사용하는지에 대한 의문점도 같이 해소할 수 있도록 기술해보도록 하겠습니다.
Poetry 개발환경 설정
- 설치
- 맥은 맥 프롬프트 윈도우는 powershell을 이용하여 설치하도록 한다.
- python --version 명령어를 이용하여 version을 체크 python 3.9.9가 맞는지 확인한다. python 3.9 버전 이상 추천
(mac 용)
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
(windows 용)
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
- 설치완료후
- poetry --version 명령어를 이용하여 버전을 확인하면 설치상태 확인 완료
- 프로젝트 생성
- New environment using에서 Poetry를 설정하여 줍니다. 빨간색 내용은 자동으로 설정됩니다.
- 터미널에 명령어 : poetry add django==4.0 django-ninja==0.16.1를 이용하여 장고와 장고 닌자를 설치합니다.
- django-admin을 이용하여 설치 여부를 확인합니다.
- django-admin startproject [프로젝트 이름].새로운 장고 프로젝트를 시작합니다. 마지막에 . 특히 조심
- python manage.py migate
- python manage.py runserver
- 실행이 된다면 django까지 잘 설치가 된 것을 나타내 준다.
Git repository 설정
Host
- github에서 New 새로운 저장소를 만듭니다.
- Repository 이름을 설정하여 저장소를 만들어줍니다. 초기 생성 시 바로 클론을 해서 사용하는 게 아니고 로컬 폴더의 내용을 먼저 풀을 해서 사용할 예정이므로 README file과. gitignore 파일은 생성하지 않고 만들어 줍니다.
- 위 와같이 비어있는 상태로 만들게 되면 저장소가 생성되고 난 후 밑에 내용과 같이 명령어를 가이드해줍니다.
- 원래는 순서대로 입력하면 되지만 실무를 진행할 때와 같이 fork를 하여 사용하는 방식으로 설정할 것이므로 설정을 다르게 하도록 합니다.
- git init으로 초기화를 해줍니다.
- upstream을 설정합니다. git remote add upstream https://github.com/nmdkims/greendoor.git
- git branch -M main 메인 브랜치를 설정하여 준비합니다.
- git push -u upstream main
** 위 내용을 진행하기 전에. gitignore 설정을 해주시면 더욱 좋습니다.
Team
- 팀일 경우에는 다른 점이 있습니다.
다른 내용을 먼저 진행하고 있었지만 만든 repository를 fork 하여서 Client 방식으로 사용해보려고 했을 때 자신의 저장소 내용이 fork가 되지 않는 것을 알게 되었습니다. 이것의 해결을 위하여 밑에 내용처럼 Organization(단체)를 만들어서 해결하도록 합니다.
기본적인 작업 방법은 위와 같지만 remote 경로를 팀 밑으로 설정하여 줍니다. 이 주소는 upstream으로 사용될 것이며 이것을 fork해온 내 repository의 주소가 origin이 될 것입니다.
** 추가 내용
-팀 초대 후 권한 설정이 초기 READ로 되어있습니다. 이것을 변경할 수 있습니다.
Companion
- 팀원으로 설정을 하는 방법입니다. Team repository에서 내용을 fork 해옵니다.
- 팀 저장소에서 내 저장소로 내용이 옮겨와 지는 것을 볼 수 있습니다.
- 옮겨온 repository의 주소를 복사합니다.
- 파이 참에서 빈 폴더로 프로젝트를 열고 git init 후
- git clone https://github.com/nmdkims/greendoor.git
- 클론 해오도록 합니다.
- 새로 생긴 폴더 경로에서 git remote -v 명령어로 경로를 확인이 가능합니다.
** 깃에서는 클론을 해올 때 자동으로 origin path를 설정해주는 기능이 있습니다.
여기까지 깃 설정은 이전에 작업하던 방법이랑 비슷했다고 생각한다면 Pull request를 하는 것을 추가적으로 보도록 하겠습니다.
Pull Request 하는 방법
test 용으로 파일 하나를 추가합니다.
1. git add.
2. git commit -m ""
3. git push origin main
을 순서대로 입력하여 내가 fork해온 저장소에 내용을 푸시하도록 합니다.
- fork 해온 저장소를 확인하면 open pull request 항목이 활성화되어있는 것을 볼 수 있습니다.
- open pull request을 클릭한 후 여기에서 create pull request를 클릭합니다.
- 추가 적인 description을 적어서 pull request를 하도록 합니다.
여기까지 PR을 하는 방법이었습니다.
Pull Request를 프로젝트에 반영하는 방법
- pull request를 하게 되면 원본 저장소에 pull request가 올라온 것을 확인할 수 있고 Merge pull request를 할 수 있는 버튼이 활성화 되어있는 것을 확인 할 수 있습니다.
- 이것을 허용하게 되면 밑과 같이 프로젝트에 반영이 된 것을 확인할 수 있습니다.
RDS 생성
AWS RDS는 관리되는 관계형 데이터 베이스라고 생각하면 됩니다.
예전에 DB를 관리할 때는 DBA와 같은 업무를 배정하여 관리에 신경을 썼지만 이제는 개발환경이 변화하여 저절로 매니지드 되는 서비스를 쓰는 게 비용적으로나 관리적으로나 좋다고 판단되어 AWS 뿐만 아니라 다른 클라우드에서도 RDS와 같은 형태의 서비스를 하고 있는 추세입니다.
( DBA : 데이터 베이스를 관리하는 직군 )
그러면 본격적으로 RDS 세팅을 해보도록 하겠습니다.
- 위의 AWS사이트에 로그인하고 RDS를 생성하는 곳을 찾습니다.
- 생성 방식에서 표준 생성
- 엔진 유형은 MySQL을 선택합니다
(현업에서는 Aurora를 사용할 일이 많지만 실습 프리티어가 지원되지 않아서 MySQL을 사용하며 MySQL은 MariaDB와 비슷한 방식으로 작동합니다. MySQL 개발자가 MariaDB를 만듦)
- 템플릿 프리티어 선택
- DB 인스턴스 식별자에는 아무 이름이나 설정해주면 됩니다. 성능과 기능에 영향을 미치지 않습니다.
(다만 계정에서 사용하는 인스턴스 이름 중 고유해야 합니다)
- 연결에서 퍼블릭 Access에서 허용하는 것으로 설정
(Elastic Beanstalk 등을 통하여 private로만 사용할 것이 아니기 때문에 외부에서 접근 가능하게 퍼블릭 설정)
- 위와 같이 구성하고 데이터 베이스 생성을 누르도록 합니다.
- RDS 연결을 위하여 설정의 마스터 사용자 이름과 비밀번호가 필요하니 따로 메모해두도록 합니다.
- 해당 내용까지 진행하게 된다면 처음 데이터베이스 실행까지 몇 분의 시간이 걸리게 됩니다. 완료가 되면 엔드포인트 주소를 확인합니다. 엔드 포인트 주소는 생성된 인스턴스를 눌러서 들어간 데이터베이스 탭 안 연결&보안 탭에서 확인 가능합니다.
Pycharm에서 RDS 관리 툴 연결하기
- 파이 참 프로를 이용하면 밑의 화면과 같이 간단하게 Database를 관리할 수 있습니다. 간략한 연결 방법은 밑의 내용과 같으며 dbeaver와 비슷한 기능을 수행할 수 있습니다.
- 파란색 부분을 설정하여 연결하면 빨간색 부분과 같이 연결된 것을 확인할 수 있습니다.
AWS를 RDS 내 프로젝트의 RDS로 사용하기
기본적인 개념은 프로젝트를 만들 때 생긴 앱에 있는 settings.py에서 사용하는 DB에 대한 설정을 바꿔서 AWS RDS를 사용하는 것입니다.
여기서 명시된 내용 중에 두 가지를 바꾸게 됩니다.
그것은 각각 SECRET_KEY와 DATABASES입니다
SECRET_KEY = 'django-insecure-zhi_y6fvy1nv=*d8%tqdi&ac=*isw41d-g16e&@_jvxros7j=a'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
SECRET_KEY는 AWS 항목 중 IAM - 보안 자격 증명에서 만들 수 있습니다.
그리고 추가적으로 DATABASES는 DB 식별자, 유저 이름, 비밀번호, 엔드포인트 주소가 필요합니다.
전체적인 구조는 밑과 같습니다.
전부 설정을 완료하고 구조 설정을 위하여 python manage.py makemigrations를 하게 되면 mysqlclient를 설치할 것인지 물어봅니다.
poetry add Mysqlclient로 설치를 진행하여 주면 됩니다.
여기까지 git repository를 설정하여 협업 환경을 만들고 AWS RDS를 만들어서 연결하는 것까지의 방법을 소개하여 보았습니다. 부족한 내용이나 추가적인 문의에 대한 내용은 추후 업데이트하도록 하겠습니다.
** 추가 관리 툴
1. Black
설치 : poetry add black==21.12b0
자동으로 코드 스타일 포맷을 바꿔줌
pyproject.toml에 [tool.black] 안에서 설정이 가능 대괄호 안에 내용은 섹션이라고 부른다.
실행은 poetry run black . 으로 실행함
2. stub, mypy
- 설치 : poetry add django-stubs==1.9.0 mypy==0.931
- 어느 곳에서 문제가 일어날 수 있는지 또 그것을 어떻게 수정해야하는지 힌트를 알려준다.
- 밑의 사진을 보면 ALLOWED_HOSTS=[]를 수정하라고 나와있고 밑에 hint도 주는 것을 확인 가능하다.
(hint: "ALLOWED_HOSTS: List[<type>] = ...")
수정 내용 : ALLOWED_HOSTS: List[str] = []
3. pycharm 추가 설정
4. isort 설치
설치 : poetry add isort==5.10.1
정렬을 해주는 tool
poetry run isort . 으로 실행합니다.
5. test shell script
- 위에 3가지 black과 mypy와 isort를 한번에 실행 할 수 있는 shell script를 작성해두었습니다.
'DevLog' 카테고리의 다른 글
[WIL]2203.2nd (1) | 2022.03.13 |
---|---|
[Setting]개발 셋팅 후 실습 참고 자료 (0) | 2022.03.10 |
[WIL]2203.1ST (1) | 2022.03.06 |
[PYTHON] 가상환경 사용하기 (0) | 2022.02.10 |
[PYTHON] path 환경 변수 설정 (0) | 2022.02.10 |