3. 设置 CubicWeb 环境¶
你可以 configure the database 您选择的系统:
对于高级功能,请查看:
3.1. CubicWeb资源配置¶
3.2. 数据库配置¶
每个实例都可以配置自己的数据库连接信息,这些信息将存储在实例的 sources
文件。创建实例时将选择要使用的数据库。CubicWeb已知与PostgreSQL(推荐)、SQLServer和SQLite一起运行。
其他可能的数据源包括CubicWeb、LDAP和Mercurial,但至少需要一个关系数据库才能工作。您不需要安装不打算用于某个实例的后端。SQLite不适合生产使用,但它在测试中很好地工作,并随Python一起提供,这可以在您希望快速启动时节省安装时间。
3.2.1. 《PostgreSQL》¶
许多Linux发行版都附带了相应的PostgreSQL包。基本上,您需要安装以下软件包:
postgresql 和 postgresql-client ,它将拉动相应版本的包(例如 postgresql-9.1 和 postgresql-client-9.1 )并且,可选地,
一 postgresql-plpython-X.Y 与上述软件包的版本相对应的软件包(例如 postgresql-plpython-9.1 ). (默认情况下现在不需要)
如果您在其他主机上运行postgres,而不是 CubicWeb 存储库,您应该安装 postgresql-client 上的包 CubicWeb 主机和数据库主机上的其他主机。
有关安装的更多详细信息,请参阅 PostgreSQL project online documentation .
3.2.1.1. 数据库群集¶
如果您已经有一个正在运行的集群和PostgreSQL服务器,则不需要执行PostgreSQL数据库的初始化步骤,除非您希望为 CubicWeb 或者如果您的现有集群不使用UTF8编码(请参见下面的注释)。
要初始化PostgreSQL集群,请使用命令 initdb
::
$ initdb -E UTF8 -D /path/to/pgsql
注: initdb
可能不在路径中,因此您可能必须使用它的绝对路径(通常类似于 /usr/lib/postgresql/9.4/bin/initdb
)
注意编码规范。这是必要的,因为 CubicWeb 通常需要utf8编码的数据库。如果使用的集群编码错误,则会出现如下错误:
new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
HINT: Use the same encoding as in the template database, or use template0 as template.
初始化后,使用命令启动数据库服务器postgresql::
$ postgres -D /path/to/psql
如果由于权限问题而无法执行此命令,请确保您的用户名对数据库具有写访问权限。地址:
$ chown username /path/to/pgsql
3.2.1.2. 数据库身份验证¶
数据库身份验证配置在 pg_hba.conf .它可以设置为 ident sameuser 或 md5 . 如果设置为 md5 ,请确保使用数据库的现有用户。如果设置为 ident sameuser ,确保客户端的操作系统用户名在数据库中具有匹配的用户。如果没有,请按以下步骤创建用户:
$ su
$ su - postgres
$ createuser -s -P <dbuser>
选择权 -P (对于密码提示),将使用配置文件中设置的方法加密密码 pg_hba.conf
.如果不使用此选项 -P ,则默认值将为空,您需要将其设置为::
$ su postgres -c "echo ALTER USER <dbuser> WITH PASSWORD '<dbpassword>' | psql"
当您将使用 cubicweb-ctl create 初始化实例的数据库。
3.2.1.3. 数据库创建¶
如果手动创建数据库(而不是使用 cubicweb-ctl db-create 工具),您可能需要确保正确设置本地设置。例如,如果需要正确处理法语重音符号以进行索引和排序,则可能需要使用如下内容创建数据库:
$ createdb --encoding=UTF-8 --locale=fr_FR.UTF-8 -t template0 -O <owner> <dbname>
请注意, cubicweb-ctl db-create 执行可能需要postgres超级用户的数据库初始化。这就是在此步骤中显式询问登录/密码的原因,这样您就可以在运行实例时使用超级用户,而无需使用此用户。在此步骤中需要特殊权限的事项:
数据库创建,需要“创建数据库”权限
哪里 pgadmin 是Postgres超级用户。
3.2.2. SQLServer¶
在撰写本文时,对SQLServer2005的支持是功能性的,但不完整。您应该能够连接、创建一个数据库并进行相当远的工作,但是从RQL查询生成的一些SQL目前仍不被后端接受。移植到SQLServer2008也是积压工作中的一项。
这个 source 配置文件可能如下所示(仅显示特定部分):
[system]
db-driver=sqlserver2005
db-user=someuser
# database password not needed
#db-password=toto123
#db-create/init may ask for a pwd: just say anything
db-extra-arguments=Trusted_Connection
db-encoding=utf8
您需要通过运行以下命令更改数据库的默认设置:
ALTER DATABASE <databasename> SET READ_COMMITTED_SNAPSHOT ON;
上面的alter database命令需要用户可能没有的某些权限。在这种情况下,您必须要求本地DBA为您运行查询。
您可以通过运行以下必须返回“1”的查询来检查设置是否正确:
SELECT is_read_committed_snapshot_on
FROM sys.databases WHERE name='<databasename>';
3.2.3. SQLite¶
sqlite具有几乎不需要配置的巨大优势。只需使用“sqlite”作为DB驱动程序,并将数据库的路径设置为DB名称。不要为db user和db password指定任何内容,它们将被忽略。
注解
sqlite非常适合测试和使用cubicWeb,但不适用于生产环境。