这篇博客,我们将继续“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)$ 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)"
所有步骤到此结束。