源码:
- 框架源码 https://github.com/inveniosoftware/invenio.git
- 后端源码 https://github.com/inveniosoftware/invenio-app-ils.git
- 前端源码 https://github.com/inveniosoftware/react-invenio-app-ils.git
需要环境:
# 后端代码
git clone https://github.com/inveniosoftware/invenio-app-ils.git
# 前端代码
git clone https://github.com/inveniosoftware/react-invenio-app-ils.git
# 先进入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
执行之后会生成用户数据:
用户名 | 邮箱 | 密码 | 说明 |
---|---|---|---|
admin | admin@test.ch | 123456 | 超级管理员用户,可以访问/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