환경 설정하기

2025. 3. 28. 14:37개발 일지(웹소켓을 이용한 실시간 채팅)

uv 가상환경 실행

  1. curl -LsSf https://astral.sh/uv/install.sh | sh로 uv 설치
  2. uv init로 프로젝트 초기화( pyproject.toml 생성 + 기본 설정)
  3. uv add fastapi : .venv 가상환경에 fastapi 설치
  4. uv run python your_file_name : .venv 가상환경 안에서 python 실행

 

django 설치하기

Django는 빠르게 변화하는 뉴스룸 환경에서 개발되었기 때문에 일반적인 웹 개발 작업을 빠르고 쉽게 수행할 수 있도록 설계되었습니다.

 


이 프로젝트는 협업을 할 계획이니 안전적인 4.2 버전에 그에 맞는 python 3.12를 사용한다.

  • uv add django==4.2.20
  • python -m django --version : 장고 버전 확인

 

프로젝트 만들기

  • mkdir your_project: 프로젝트 폴더를 만든다
  • django-admin startproject mysite your_project 만들어진 폴더에 mysite라는 프로젝트를 부트스트랩
  • python manage.py runserver : 서버 실행, http://127.0.0.1:8000/를 통해 접속(지금은 잘 됐는지 확인 용도로 사용함)
이름 설명
manage.py django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티
your_project/__init__.py python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 빈 파일
your_project/settings.py 현재 django 프로젝트의 환경 및 구성을 저장
your_project/urls.py 현재 django project의 url 선언을 저장
your_project/asgi.py 현재 프로젝트를 서비스하기 위한 ASGI-호환 웹 서버의 진입점
your_project/wsgi.py 현재 프로젝트를 서비스하기 위한 WSGI호환 웹 서버의 진입점

 

MySQL 연동하기

1. MySQL 설치

장고에 데이터 베이스 설정 문서

MySQL notes¶
Version support¶
Django supports MySQL 8.0.11 and higher.

MySQL 8.0.11이상 다운 받을 것

  1. mysql community Downloads 해당 링크 접속 후 본인의 버전에 맞게 mysql설치 wsl2는powershel에서 wsl -l -v



  2. mysql-apt-config_0.8.33-1_all.deb이 있는 위치로 이동 (보통 다운로드에 있음)
  3. sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb (* mysql 설치가 다 끝나면 삭제 해도 됨*)

  4. sudo apt update (모든 업그레이드 가능한 패키지를 업그레이드)
  5. sudo apt install mysql-server
  6. 5번의 명령어를 실행하면 root 비밀번호 설정 (Django 연결할 때 사용 되며 팀원들도 같이 사용할 비번임 꼭 기억할 것)
  7. sudo systemctl status mysql 를 했을 때 active (running) 뜨면 정상 실행 중
  8. mysql -u root -p : root 비밀번호로 mysql에 접속

 

2. Django에 MySQL 연동하기

  1. uv add mysqlclient
    Trying pkg-config --exists mysqlclient
    Command 'pkg-config --exists mysqlclient' returned non-zero exit status 1.
    • 위와 같은 오류가 발생하면 pkg-config : C라이브러리가 설치됐는지 확인 그런데 mysqlclient 없음, 즉 mysqlclient 관련 C 헤더 파일이나 라이브러리가 설치되어 있지 않다"는 뜻
    • sudo apt install default-libmysqlclient-dev build-essential pkg-config
  2. .env 파일 생성 후 아래와 같은 내용을 적어준다(최상위, 즉 .venv와 같은 위치에다가 만들면 된다)
    • env.example 도 만들어 아래의 내용을 적어주자 , .env는 절대 GIT에 커밋안되게 할것!!
      DB_NAME=chat_db
      DB_USER=root
      DB_PASSWORD=your_password
      DB_HOST=localhost
      DB_PORT=3306 # MySQL이 돌아가는 기본 포트
      
3. `uv add python-dotenv`  (*파이썬에서 .env 파일을 읽을 수 있도록 도와주는 라이브러리*)
4. `settings.py  수정
```python
from dotenv import load_dotenv
import os
BASE_DIR = Path(__file__).resolve().parent.parent.parent # __file__ : your_project/mysite/settings.py, .parent:  your_project/mysite, .parent: your_project, .parent: 최상위 디렉터리( 여기에 .env가 있음)
load_dotenv(dotenv_path=BASE_DIR / '.env') # .env의 위치를 읽어올 수 있게 하는 함수

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.getenv("DB_NAME"),
        'USER': os.getenv("DB_USER"),
        'PASSWORD': os.getenv("DB_PASSWORD"),
        'HOST': os.getenv("DB_HOST"),
        'PORT': os.getenv("DB_PORT"),
    }
}
  1. mysql -u root -p 로 접속 후 DB 생성
    • CREATE DATABASE chat_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
    • CREATE DATABASE chat_db : chat_db 라는 데이터베이스 생성
    • CHARACTER SET utf8mb4 : MySQL에서 가장 권장되는 인코딩 방식
    • COLLATE utf8mb4_general_ci : 정렬 기준과 대소문자 구분 여부
      (django.db.utils.OperationalError: (1049, "Unknown database 'chat_db'") 오류나서 만든 임시 DB)
  2. uv run python manage.py migrate
  3. .gitignore.env 추가

 

 

협업자와 같은 환경 공유하기

  1. uv 설치
  2. git clone
  3. 해당 프로젝트의 디렉터리로 이동 후 uv venv
  4. uv sync

 

 

출처

django 훝어보기
django 공식 릴리즈
django 튜토리얼
django와 어울리는 파이썬 버전
django 데이터 베이스 설정
mysql community Downloads

반응형

'개발 일지(웹소켓을 이용한 실시간 채팅)' 카테고리의 다른 글

UV 알고 가기  (0) 2025.03.27