部署
发展
块茎需要一个数据库,会话商店和作业商店以及Web服务器。对于测试和开发,您可以在使用Build-In-In-In-In-In Python和Node WebServers进行非常简单的部署时使用单个SQLITE数据库作为数据库,会话存储和作业商店。较大的系统将从使用专用数据库实例(通常是Postgres),用于会话和作业的REDIS服务器以及Nginx或Apache作为Web服务器中受益匪浅。
有很多方法可以配置事物,但是我们尝试使最常见的方法尽可能简单。
块茎的最新版本以ghcr.io/magfest/tuber-frontend:latest和ghcr.io/magfest/tuber-backend:latest 。您可以在这里查看它们。
要使用Docker首先安装Docker在您的平台上进行部署,如下所述。
在运行Docker守护程序的情况下,您现在可以拉并运行块茎:
docker-compose up这将建立一个小的生产式容器堆栈,使用数据库的Postgres,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 # MacOS在Windows上,您必须安装Nodejs,Python3和PostgreSQL。确保在安装过程中将NPM和Python同时添加到您的路径中。
安装依赖项后,您可以启动后端和前端开发服务器:
块茎使用环境变量配置一些基本设置。
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服务器现在应启动并开始在端口8080上侦听API请求。
在与后端的单独终端中,安装并服务Vue前端:
npm install --global yarn # Yarn is recommended for the frontend
cd frontend
yarn install
yarn run serve这将在端口8081上启动前端。您可以将浏览器连接到http:// localhost:8081,并完成初始设置页面以开始使用块茎。
在更改代码时,前端和后端都会热弹加载。
如果要创建一个新表或修改现有表,则需要创建Alembic迁移。大多数时候,您可以通过自动化来做到这一点。
首先,在块茎/型号/.py中创建表定义,并确保在块茎/型号/ init .py中导入它。
接下来,使用Alembic创建迁移文件:
venv/bin/alembic -c backend/tuber/alembic.ini revision --autogenerate -m " Added widget column to the whatsit table "这应该在迁移/版本中创建一个迁移文件。阅读并根据需要调整步骤。下次您重新启动开发实例时,它将运行迁移。
您还可以手动触发数据库更新:
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抱怨多个头部检查: