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

Invenio安装步骤(二)

周鸿光
2023-12-01

    这篇博客,我们将继续“Invenio安装步骤(一)”来讲解。

    (一)对于不耐心的Invenio开发者的快速安装指令

    这个安装过程是为Invenio的开发版本运行而定做的,对于产品安装需查看 如何创造一个Invenio覆盖 文档。

    1.1 安装

     安装的第一步是下载Invenio开发版本以及Invenio具体网站。在主要的分支上这个开发版本已经完成。

    

  $ mkdir -p $HOME/src
  $ cd $HOME/src/
  $ export BRANCH=master
  $ git clone --branch $BRANCH git://github.com/inveniosoftware/invenio.git
  $ git clone --branch $BRANCH git://github.com/inveniosoftware/invenio-demosite.git
    我们推荐使用虚拟环境(virtual environments),因此包可以就地安装,他会使你的安装变得简单。(invenio)$ 告诉你Invenio是有效的。

   

  $ mkvirtualenv invenio
  (invenio)$ # we are in the invenio environment now and
  (invenio)$ # can leave it using the deactivate command.
  (invenio)$ deactivate
  $ # Now join it back, recreating it would fail.
  $ workon invenio
  (invenio)$ # That

  让我们将Invenio以及Invenio Demosite放到我们刚刚创建的环境里面。

  (invenio)$ cdvirtualenv
  (invenio)$ mkdir src
  (invenio)$ cd src
  (invenio)$ git-new-workdir $HOME/src/invenio/ invenio $BRANCH
  (invenio)$ git-new-workdir $HOME/src/invenio-demosite/ invenio-demosite $BRANCH
    如果你不想使用git-new-workdir方式,你可以:

(invenio)$ python setup.py compile_catalog

  •   创建一个符号连接
  •   直接克隆存储仓库到虚拟环境
    安装Invenio

  (invenio)$ cdvirtualenv src/invenio
  (invenio)$ pip install --process-dependency-links -e .[development]

    有一些模块可能需要特定的依赖列表如extras。选择一个你需要的:例如增加图片支持,我们可以这么做。

   

   (invenio)$ pip install -e .[img]

    如果Invenio采用开发模式安装,你需要手动的进行编译翻译。

  (invenio)$ python setup.py compile_catalog
    注意:如果你安装的时候使用python setup.py 安装,翻译目录是自动编译。

    正在安装的Invenio Demosite.exists action i 代表了忽略。它代表它会跳过先前已经安装的步骤。因为Invenio Demosite 安装依赖Invenio,如果不使用该命令,它将会尝试重新安装。如果你忽略它,pip命令将会询问你想要采取什么样的行动。

    

  (invenio)$ cdvirtualenv src/invenio-demosite
  (invenio)$ pip install -r requirements.txt --exists-action i
    通过bower命令安装必要的配置(例如javascript,css),当bower下载文件的时候, .bowerrc 文件也将会进行配置。
  (invenio)$ inveniomanage bower -i bower-base.json > bower.json
  Generates or update bower.json for you.
  (invenio)$ cat .bowerrc
  {
    "directory": "invenio_demosite/base/static/vendors"
  }
  (invenio)$ bower install
  (invenio)$ ls invenio_demosite/base/static/vendors
  bootstrap
  ckeditor
  hogan
  jquery
  jquery-tokeninput
  jquery-ui
  plupload
    我们建议你仅仅改变bower-base.json 以及根据需要重新生成bower.jsom。invenio.ext.assets.commands.bowercommand被捆绑的每个包,聚集了所有依赖。

    最后一步,也将是最重要一步将整合所有资产,但它将在配置步骤之后进行。

  2,配置

    给你的安装生成秘钥

    invenio)$ inveniomanage config create secret-key
    如果你打算在多个环境中进行局部的开发,你将需要采取下面的步骤。

    

  (invenio)$ inveniomanage config set CFG_EMAIL_BACKEND flask_email.backends.console.Mail
  (invenio)$ inveniomanage config set CFG_BIBSCHED_PROCESS_USER $USER
  (invenio)$ inveniomanage config set CFG_DATABASE_NAME $BRANCH
  (invenio)$ inveniomanage config set CFG_DATABASE_USER $BRANCH
  (invenio)$ inveniomanage config set CFG_SITE_URL http://localhost:4000
  (invenio)$ inveniomanage config set CFG_SITE_SECURE_URL http://localhost:4000
  通过使用不同的过滤器,对非开发模式的资产 进行结合和缩小,见(asset)。如果路径变量没有在环境变量($path)里面写好,我们需要对二进制文件输入路径。

  # Local installation (using package.json)
  (invenio)$ cdvirtualenv src/invenio
  (invenio)$ npm install
  (invenio)$ inveniomanage config set LESS_BIN `find $PWD/node_modules -iname lessc | head -1`
  (invenio)$ inveniomanage config set CLEANCSS_BIN `find $PWD/node_modules -iname cleancss | head -1`
  (invenio)$ inveniomanage config set REQUIREJS_BIN `find $PWD/node_modules -iname r.js | head -1`
  (invenio)$ inveniomanage config set UGLIFYJS_BIN `find $PWD/node_modules -iname uglifyjs | head -1`
  在每一个Invenio模块或者外部的库中传播的资产(asset)将被整理成为实例目录。采用默认,它将产生原始文件的副本。作为一个开放着,你可能想要采用符号连接的方式。

  # Developer only
  (invenio)$ inveniomanage config set COLLECT_STORAGE flask_collect.storage.link
  (invenio)$ inveniomanage collect
  ...
  Done collecting.
  (invenio)$ cdvirtualenv var/invenio.base-instance/static
  (invenio)$ ls -l
  css
  js
  vendors
  ...

    3.开发

    一旦你将所有的东西都安装完成,你需要创建一个数据库以及用演示数据来填充它。

    

  (invenio)$ inveniomanage database init --user=root --password=$MYSQL_ROOT --yes-i-know
  (invenio)$ inveniomanage database create
    现在你应该能运行开发的服务器,Invenio使用Celery以及Redis,它须依赖网络服务器的运行。

    

  # make sure that redis is running
  $ sudo service redis-server status
  redis-server is running
  # or start it with start
  $ sudo service redis-server start

  # launch celery
  $ workon invenio
  (invenio)$ celery worker -E -A invenio.celery.celery --workdir=$VIRTUAL_ENV

  # in a new terminal
  $ workon invenio
  (invenio)$ inveniomanage runserver
  * Running on http://0.0.0.0:4000/
  * Restarting with reloader
  注:在OS X上,当启动Redis数据库服务的时候,service命令可能无法使用。需要如下命令:

  

  $ redis-server
    处理问题:作为一个开发者,你可能想要使用带有 Honcho的Procfile。它可以一次很好的开启所有服务。使用缺省设置,它将运行 flower,提供一个网络接口来监视Celery任务。

    

  (invenio)$ pip install honcho flower
  (invenio)$ cdvirtualenv src/invenio
  (invenio)$ honcho start
    当所有服务运行的时候,可以上传演示数据。

    

  $ # in a new terminal
  $ workon invenio
  (invenio)$ inveniomanage demosite populate --packages=invenio_demosite.base
    你现在就可以打开你喜欢的浏览器,输入   http://0.0.0.0:4000/

    视情况,如果你使用Base shell来完成,你可能需要对于Inveniomanage登记参数的完整。

    

  eval "$(register-python-argcomplete inveniomanage)"
    所有步骤到此结束。


 类似资料: