高级配置#
本章涵盖 standard setup of AiiDA 以外的主题。如果你是 AiiDA 的新手,我们建议你先学习 Basic Tutorial,或查看我们的 Next steps guide。
创建数据库#
AiiDA使用数据库存储nodes、node属性和其他信息,允许终端用户对结果进行快速查询。目前,支持高性能的 PostgreSQL 数据库作为数据库后端。
要手动创建 AiiDA 数据库,需要运行 psql
程序与 postgres 交互。在大多数操作系统中,你需要以安装软件时创建的 postgres
用户身份运行。要扮演 postgres
的角色,请以 root 用户身份运行:
$ su - postgres
(或视发行版而定键入 sudo su - postgres
),然后启动 postgres 程序:
$ psql
小技巧
If you have installed PostgreSQL through Conda and you see an error like psql: FATAL: role "<role_name>" does not exist
or psql: FATAL: database "<database_name>" does not exist
, the default role and database apparently do no exist.
The command psql -l
prints the list of existing databases and the associated roles.
You can try connecting to one of those by using the -d
and -U
option to specify the database and role, respectively, for example, psql -d template0 -U some-role
.
为 AiiDA 创建一个新的数据库用户账户:
CREATE USER aiida WITH PASSWORD '<password>';
将 <password>
替换为您选择的密码。
当你通过 verdi setup
配置 AiiDA 使用该数据库时,需要再次提供密码。如果你想更改刚刚创建的密码,请使用以下命令:
ALTER USER aiida PASSWORD '<password>';
接下来,我们创建数据库本身。我们强制执行 UTF-8 编码和特定的本地语言:
CREATE DATABASE aiidadb OWNER aiida ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
并将此 DB 上的所有权限授予之前创建的 aiida
用户:
GRANT ALL PRIVILEGES ON DATABASE aiidadb to aiida;
现在你已经为 AiiDA 创建了一个数据库,可以输入 \q
关闭 postgres shell。要测试数据库是否创建成功,可以以普通用户身份在 bash 终端运行以下命令:
$ psql -h localhost -d aiidadb -U aiida -W
并在出现提示时输入之前插入的密码。如果一切顺利,就不会出错,并能看到 psql
shell 的提示。
如果使用与上述命令示例中相同的名称,则在 verdi setup
阶段,以下参数将适用于新创建的数据库:
$ Database engine: postgresql_psycopg2
$ Database host: localhost
$ Database port: 5432
$ AiiDA Database name: aiidadb
$ AiiDA Database user: aiida
$ AiiDA Database password: <password>
使用 ‘peer’ 身份验证设置数据库#
在 Ubuntu Linux 上,PostgreSQL 的默认设置是使用 peer
身份验证,允许通过本地 Unix 套接字进行无密码登录。在这种模式下,PostgreSQL 会将连接到套接字的 Unix 用户与自己的用户数据库进行比较,如果存在匹配的用户,则允许连接。
备注
这是设置数据库的另一种方法–标准方法在 Ubuntu 上同样适用。
下面我们将利用 Ubuntu 提供的命令行实用程序来简化创建用户和数据库的过程,而不是直接发布 SQL 命令。
扮演 postgres
的角色:
$ sudo su postgres
创建一个与运行 AiiDA 的 UNIX 用户(通常是你的登录名)同名的数据库用户:
$ createuser <username>
将 <username>
替换为您的用户名。
接下来,创建数据库本身,并将用户作为所有者:
$ createdb -O <username> aiidadb
退出 shell,返回登录用户。要测试数据库是否创建成功,请尝试
$ psql aiidadb
在 verdi setup
阶段,使用 !
将主机留空,并指定您的 Unix 用户名为 AiiDA 数据库用户:
$ Database engine: postgresql_psycopg2
$ Database host: !
$ Database port: 5432
$ AiiDA Database name: aiidadb
$ AiiDA Database user: <username>
$ AiiDA Database password: ""
RabbitMQ 配置#
在大多数正常设置中,RabbitMQ 将作为服务安装并运行在与 AiiDA 本身主机相同的机器上。在这种情况下,使用配置文件设置时建议的默认配置将正常工作。然而,当 RabbitMQ 的安装不是标准的,例如它运行在不同的端口,甚至运行在完全不同的机器上时,所有相关的连接细节都可以通过 verdi setup
进行配置。
可以配置以下参数:
参数 |
选项 |
默认值 |
说明 |
---|---|---|---|
规程 |
|
|
对于启用 SSL 的连接,使用的协议可以是 |
用户名 |
|
|
用于连接的用户名。 |
密码 |
|
|
连接密码。 |
主持人 |
|
|
RabbitMQ 服务器的主机名。 |
港口 |
|
|
服务器监听的端口。 |
虚拟主机 |
|
|
可选的虚拟主机。不应包含前导斜线,这将由 AiiDA 自动添加。 |
参数 |
不详 |
n.a. |
这些是额外的代理参数,通常编码为 URL 参数,例如用于指定 SSL 参数,如要使用的证书的文件路径。这些参数目前无法通过 CLI 进行定义,而必须在 |
设置#
创建数据库后,请执行以下操作
$ verdi setup --profile <profile_name>
其中 <profile_name> 是您选择的配置文件名称。verdi setup
命令将通过一系列提示引导您完成设置过程。
第一个被询问的信息是你的电子邮件,它将被用来把计算与你联系起来。在 AiiDA 中,电子邮件是你的用户名,在 importing/ 导出 AiiDA 数据时,它是唯一的标识符。
备注
在目前的 AiiDA 版本中,密码是不使用的(它只会在 REST API 和网页界面中使用)。如果不填,就不会设置密码,用户也不能通过 REST API 和网页界面访问。
然后,以下提示将帮助您配置数据库。典型的设置有
$ Default user email: richard.wagner@leipzig.de
$ Database engine: postgresql_psycopg2
$ PostgreSQL host: localhost
$ PostgreSQL port: 5432
$ AiiDA Database name: aiida_dev
$ AiiDA Database user: aiida
$ AiiDA Database password: <password>
$ AiiDA repository directory: /home/wagner/.aiida/repository/
[...]
Configuring a new user with email 'richard.wagner@leipzig.de'
$ First name: Richard
$ Last name: Wagner
$ Institution: BRUHL, LEIPZIG
$ The user has no password, do you want to set one? [y/N] y
$ Insert the new password:
$ Insert the new password (again):
管理守护进程#
AiiDA 守护进程在后台运行,负责处理你提交的计算和 workflow,检查它们的状态,完成后检索它们的结果,并将它们存储在 AiiDA 数据库中。
AiiDA 守护进程由三个简单的命令控制:
verdi daemon start
:启动守护进程verdi daemon status
:检查守护进程的状态verdi daemon stop
: 停止守护进程
备注
运行时,守护进程会将其活动记录到 ~/.aiida/daemon/log/
文件(或更常见的 $AIIDA_PATH/.aiida/daemon/log
文件)中。通过 verdi daemon logshow
获取最新日志信息。
在 Jupyter 中使用 AiiDA#
在 AiiDA python 环境内**安装 AiiDA
notebook
额外程序,例如运行pip install aiida-core[notebook]
。
有了这些设置,你就可以在 Jupyter 笔记本中使用 AiiDA 了。
启动 Jupyter 笔记本服务器
$ jupyter notebook
这将在浏览器中打开一个标签页。点击 New -> Python
。
要加载 aiida magics 扩展程序,只需运行
%load_ext aiida
现在,您可以通过以下方式加载配置文件(除非指定,否则为默认配置文件):
%aiida
否则,您可以像在 Python 脚本中一样手动加载配置文件:
from aiida import load_profile, orm
load_profile()
qb = orm.QueryBuilder()
# ...
您还可以使用当前加载的配置文件运行 verdi CLI 命令,方法是
%verdi status