当前位置: 首页 > 工具软件 > Invenio > 使用案例 >

部署图书管理框架Invenio

何麻雀
2023-12-01

源码:

 - 框架源码 https://github.com/inveniosoftware/invenio.git
 - 后端源码 https://github.com/inveniosoftware/invenio-app-ils.git
 - 前端源码 https://github.com/inveniosoftware/react-invenio-app-ils.git

需要环境:

  • Linux系统,作者使用的是ubuntu16.04
  • Docker服务,方便在本机容器化启动数据库
  • Python3.6
  • Nodejs

本次搭建可以访问的Invenio前后端

1、Clone前后端源码

# 后端代码
git clone https://github.com/inveniosoftware/invenio-app-ils.git
# 前端代码
git clone https://github.com/inveniosoftware/react-invenio-app-ils.git

2、开始搭建环境

# 先进入invenio-app-ils中
cd invenio-app-ils
# 创建虚拟环境并进入
pip install virtualenv
virtualenv VENV
source VENV/bin/activate

虚拟环境创建完成后,先修改代码中的配置文件

vim invenio_app_ils/config.py

需要注意的一些配置如下(不是全部):

# 指定ES地址,默认为localhost,以下xxx.xxx.xxx.xxx为你服务器的IP
SEARCH_ELASTIC_HOSTS = "xxx.xxx.xxx.xxx"
# Redis地址
CACHE_REDIS_URL = "redis://xxx.xxx.xxx.xxx:6379/4"
RATELIMIT_STORAGE_URL = "redis://xxx.xxx.xxx.xxx:6379/3"
ACCOUNTS_SESSION_REDIS_URL = "redis://xxx.xxx.xxx.xxx:6379/1"
# Celery地址
BROKER_URL = "amqp://guest:guest@xxx.xxx.xxx.xxx:5672/"
CELERY_BROKER_URL = "amqp://guest:guest@xxx.xxx.xxx.xxx:5672/"
CELERY_RESULT_BACKEND = "redis://xxx.xxx.xxx.xxx:6379/2"
# Postgresql地址
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://用户名:密码@xxx.xxx.xxx.xxx/postgres"
# 添加你部署服务的服务器IP
APP_ALLOWED_HOSTS = ["0.0.0.0", "172.17.0.1", "xxx.xxx.xxx.xxx"]

# !!!重要的配置
# 允许跨域访问
CORS_SEND_WILDCARD = False
CORS_SUPPORTS_CREDENTIALS = True
# 使用http启动服务时需要的配置
CSRF_FORCE_SECURE_REFERRER = False
SESSION_COOKIE_SECURE = False

修改完配置之后开始执行官方编译步骤:

①、使用docker-compose启动所有依赖服务(包括:PostgreSQL, Elasticsearch, RabbitMQ 和Redis)

cd invenio-app-ils
# 依赖服务的容器配置可自己修改docker-services.yml文件
docker-compose up -d

②、执行安装脚本

# 安装python依赖以及静态文件
./scripts/bootstrap
# 创建数据库表,搜索索引,消息队列和演示数据:
./scripts/setup

执行之后会生成用户数据:

用户名邮箱密码说明
adminadmin@test.ch123456超级管理员用户,可以访问/admin

③、启动后端以及Celery调度

启动后端:

./scripts/server

使用http启动时,将server脚本中的https参数去掉,文件内容如下:

#!/usr/bin/env bash
# -*- coding: utf-8 -*-

set -e

script_path=$(dirname "$0")
FLASK_ENV=development invenio run --host="0.0.0.0"

启动Celery

celery worker -A invenio_app.celery -l INFO

启动完成之后,即可访问 localhost:5000

④、编译和启动前端项目

启动前先修改react-invenio-app-ils目录下的.env文件,指定后端地址

REACT_APP_INVENIO_UI_URL=http://xxx.xxx.xxx.xxx:5000
REACT_APP_INVENIO_REST_ENDPOINTS_BASE_URL=http://xxx.xxx.xxx.xxx:5000/api

然后npm启动服务

cd react-invenio-app-ils
npm install
# http方式启动
npm start
# 如果需要https方式启动,则执行
npm run start:secure

启动完成即可访问 localhost:3000

 类似资料: