프로젝트 데모
REST API 문서
범주 | 기술 |
---|---|
배포 환경 | Heroku, Ubuntu, Docker, Jenkins |
개발 | Python, Flask |
의존성 관리 도구 | Pipenv |
데이터 베이스 | MySQL, SQLite, SQLAlchemy |
프론트엔드 | JavaScript, bootstrap |
백엔드 | Nginx, Gunicorn, Flask, Flask Cli |
production | development |
---|---|
flask | requests |
flask-wtf | flake8 |
flask-sqlalchemy | black |
sqlalchemy | isort |
flask-login | |
flask-migrate | |
flask-restx | |
gunicorn | |
python-dotenv | |
email-validator | |
pymysql |
root
├── app
│ ├── api # -> RESTApi 구현 코드
│ │ └── errors
│ ├── auth # -> auth view
│ ├── main # -> main view
│ ├── mybook #-> mybook view
│ ├── models # -> DB 모델
│ ├── services # -> 비즈니스로직 구현 코드
│ ├── static
│ │ ├── css
│ │ ├── images
│ │ ├── js
│ │ └── media
│ ├── templates
│ │ ├── auth # -> 로그인, 가입 템플릿
│ │ ├── errors # -> 404,500, ... 에러 페이지 템플릿
│ │ ├── layout # -> 웹 레이아웃
│ │ ├── macro # -> 자주 사용하는 jinja2 템플릿 함수
│ │ └── mybook # -> 대여기록, 대여한책
│ └── utility # -> helper 함수
├── docs # -> 프로젝트 개발에 관한 문서
├── migrations # db migrations
├── tests # -> 테스트 코드
└── utility
# FLASK_APP 환경변수 추가
$ export FLASK_APP=run.py
# 미리 생성된 책 데이터 추가하기
$ flask init
# 가상환경
# pipenv 사용
$ pipenv install
$ pipenv shell
$ pipenv update
# venv 사용
$ python3 -m venv .venv
$ pip install -r requirements.txt
# 실행
$ export FLASK_APP=run.py
$ flask run
# 테스트
$ python -m unittest
# Secret Key
SECRET_KEY='secret key here'
# ( 개발 DB (data-dev.sqlite) | 테스트 DB (data-test.sqlite) | 배포 DB (data.sqlite) )
# ex:) sqlite://path , mysql+pymysql://
DEV_DATABASE_URL='db path here'
TEST_DATABASE_URL='db path here'
DATABASE_URL='db path here'
FLASK_CONFIG='development' # 설정 ( development | testing | production )
FLASK_APP='run.py'
SERVER_NAME='server host here'
FLASK_CONFIG=production
DATABASE_URL=mysql+pymysql://id:pw@yourdatabasehosthere:3306/database
SECRET_KEY=yoursecretkey
SERVER_NAME='your heroku domain' # ex:) naver.com, github.com