Despliegue
Desarrollo
Tuber necesita una base de datos, una tienda de sesiones y una tienda de trabajo, así como un servidor web. Para las pruebas y el desarrollo, puede usar una única base de datos SQLite como base de datos, almacén de sesiones y almacén de trabajo mientras usa los servidores web de Python y Node para una implementación muy simple. Los sistemas más grandes se beneficiarán enormemente del uso de una instancia de base de datos dedicada (generalmente Postgres), un servidor Redis para sesiones y trabajos, y Nginx o Apache como servidor web.
Existen numerosas formas de configurar las cosas, pero tratamos de hacer que lo más común fuera lo más simple posible implementar.
La última versión de Tuber se publica en paquetes de GitHub como ghcr.io/magfest/tuber-frontend:latest y ghcr.io/magfest/tuber-backend:latest . Puedes verlos aquí.
Para implementar usando Docker First Install Docker en su plataforma, como se describe aquí.
Con el Docker Daemon en funcionamiento, ahora puedes tirar y ejecutar tubérculos:
docker-compose upEsto establecerá una pequeña pila de contenedores de estilo de producción, utilizando Postgres para la base de datos, Nginx como un proxy inverso y Redis como Session y Job Store. Una vez que termine de comenzar, debería poder acceder a su instancia en http: // localhost: 8081
Nota: El archivo de composición de Docker de muestra actualmente no configura SSL. Debe configurar un proxy inverso para manejar SSL, o editar contrib/nginx.conf para usar sus certificados y editar docker-compose.yml para permitir el acceso al puerto 443.
Después de clonar este repositorio, necesitará las siguientes dependencias:
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 # MacOSEn Windows tendrá que instalar NodeJ, Python3 y PostgreSQL. Asegúrese de agregar NPM y Python a su ruta durante la instalación.
Una vez que se instalan las dependencias, puede iniciar los servidores de desarrollo de backend y frontend:
Tuber utiliza variables de entorno para configurar algunas configuraciones básicas.
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.exeEl servidor ahora debe iniciarse y comenzar a escuchar en el puerto 8080 para solicitudes de API.
En un terminal separado del backend, instale y sirva el frontend Vue:
npm install --global yarn # Yarn is recommended for the frontend
cd frontend
yarn install
yarn run serveEsto comenzará el frontend en el puerto 8081. Puede conectar su navegador a http: // localhost: 8081 y completar la página de configuración inicial para comenzar a usar tubérculo.
Tanto el frontend como el backend volverán a la gotena a medida que cambie el código.
Si desea crear una nueva tabla o modificar una existente, necesitará crear una migración alembica. La mayoría de las veces, puede hacerlo autogénicamente.
Primero, cree la definición de tabla en tubérculos/modelos/.py, y asegúrese de que se importe en tubérculos/modelos/ init .py.
A continuación, use Alembic para crear el archivo de migración:
venv/bin/alembic -c backend/tuber/alembic.ini revision --autogenerate -m " Added widget column to the whatsit table "Esto debería crear un archivo de migración en migraciones/versiones. Léelo y ajuste los pasos según sea necesario. La próxima vez que reinicie su instancia de desarrollo, ejecutará la migración.
También puede activar la actualización de la base de datos manualmente:
venv/bin/alembic -c backend/tuber/alembic.ini upgrade head¡Asegúrese de cometer la migración junto con el código que la usa!
Si recibe el siguiente mensaje de error ambiguo mientras ejecuta python setup.py develop : ld: library not found for -lssl
Intente configurar la ruta del enlace para OpenSSL y ejecutarla nuevamente: export LDFLAGS="-L/usr/local/opt/openssl/lib"
A veces, al fusionar una rama que tenga sus propias nuevas migraciones a su propia rama, tendrá que decirle a Alembic qué hacer. Si ve alembic quejándose de múltiples cabezas, verifique aquí: https://blog.jerrycodes.com/multiple-heads-in-alembic-migrations/