전개
개발
Tuber는 데이터베이스, 세션 스토어 및 작업 상점뿐만 아니라 웹 서버가 필요합니다. 테스트 및 개발을 위해 매우 간단한 배포를 위해 빌드 인 파이썬 및 노드 웹 서버를 사용하는 동안 단일 SQLITE 데이터베이스를 데이터베이스, 세션 스토어 및 작업 저장소로 사용할 수 있습니다. 대형 시스템은 전용 데이터베이스 인스턴스 (일반적으로 Postgres), 세션 및 작업 용 Redis 서버, Nginx 또는 Apache를 웹 서버로 사용함으로써 큰 이점을 얻을 수 있습니다.
사물을 구성하는 방법에는 여러 가지가 있지만 가장 일반적인 것을 구현하기가 가능한 한 간단하게 만들려고 노력합니다.
Tuber의 최신 버전은 Github 패키지에 ghcr.io/magfest/tuber-frontend:latest 및 ghcr.io/magfest/tuber-backend:latest 로 게시됩니다. 여기에서 볼 수 있습니다.
Docker를 사용하여 배포하려면 여기에 설명 된대로 플랫폼에 Docker를 먼저 설치하십시오.
Docker Deomon이 실행되면 이제 Tuber를 당기고 달릴 수 있습니다.
docker-compose up이로 인해 데이터베이스의 우편둥이, 리버스 프록시로 Nginx, 세션 및 작업 저장소로 Redis를 사용하여 소규모 프로덕션 스타일의 컨테이너 스택을 설정합니다. 시작이 끝나면 http : // localhost : 8081에서 인스턴스에 액세스 할 수 있어야합니다.
참고 : 샘플 Docker-Compose 파일은 현재 SSL을 구성하지 않습니다. SSL을 처리하기 위해 리버스 프록시를 설정하거나 contrib/nginx.conf 를 편집하여 인증서를 사용하고 docker-compose.yml 편집하여 포트 443에 액세스 할 수 있어야합니다.
이 저장소를 복제 한 후에는 다음의 종속성이 필요합니다.
dnf install npm python3 python3-devel python3-pip # Fedora/RHEL/CentOS
apt install npm python3 python3-dev python3-pip # Debian/Ubuntu
brew install npm python postgresql # MacOSWindows에서는 Nodejs, Python3 및 PostgreSQL을 설치해야합니다. 설치 중에 NPM과 Python을 경로에 추가하십시오.
종속성이 설치되면 백엔드 및 프론트 엔드 개발 서버를 시작할 수 있습니다.
Tuber는 환경 변수를 사용하여 일부 기본 설정을 구성합니다.
DATABASE_URL=sqlite:///database.db
FLASK_ENV=production
REDIS_URL=
WORKERS=2
CIRCUITBREAKER_THREADS=2
CIRCUITBREAKER_TIMEOUT=5
ENABLE_CIRCUITBREAKER=truepython -m venv venv
source venv/bin/activate
cd backend
python -m pip install -e .
tuber
# Windows
python -m venv venv
venv S cripts a ctivate.bat
cd backend
python -m pip install -e .
.. v env S cripts t uber.exe서버는 이제 API 요청에 대해 포트 8080에서 청취를 시작해야합니다.
백엔드에서 별도의 터미널에서 Vue 프론트 엔드를 설치하고 제공합니다.
npm install --global yarn # Yarn is recommended for the frontend
cd frontend
yarn install
yarn run serve이렇게하면 포트 8081에서 프론트 엔드가 시작됩니다. 브라우저를 http : // localhost : 8081에 연결하고 초기 설정 페이지를 작성하여 결절 사용을 시작할 수 있습니다.
코드를 변경하면 Frontend와 Backend가 모두 핫 릴로드됩니다.
새 테이블을 만들거나 기존 테이블을 수정하려면 Alembic 마이그레이션을 만들어야합니다. 대부분의 경우 자율성을 통해이 작업을 수행 할 수 있습니다.
먼저 결절/모델/.py에서 테이블 정의를 만들고 결절/모델/ init .py로 가져 오는지 확인하십시오.
다음으로 Alembic을 사용하여 마이그레이션 파일을 만듭니다.
venv/bin/alembic -c backend/tuber/alembic.ini revision --autogenerate -m " Added widget column to the whatsit table "마이그레이션/버전으로 마이그레이션 파일을 생성해야합니다. 그것을 읽고 필요에 따라 단계를 조정하십시오. 다음에 DEV 인스턴스를 다시 시작하면 마이그레이션이 실행됩니다.
데이터베이스 업데이트를 수동으로 트리거 할 수도 있습니다.
venv/bin/alembic -c backend/tuber/alembic.ini upgrade head마이그레이션을 사용하는 코드와 함께 마이그레이션을 커밋하십시오!
python setup.py develop : ld: library not found for -lssl
OpenSSL의 링크 경로를 설정하고 다시 실행하십시오 : export LDFLAGS="-L/usr/local/opt/openssl/lib"
때로는 자신의 새로운 마이그레이션이있는 지점을 자신의 지점으로 병합 할 때 Alembic에게해야 할 일을 알려야합니다. 여러 헤드에 대해 Alembic이 불평하는 경우 여기에서 확인하십시오. https://blog.jerrycodes.com/multiple-heads-in-alembic-migrations/