前言
Virtuoso 是一个高性能的多模型数据库,支持关系型、文档型、图形型和RDF数据库操作。随着时间的推移,Virtuoso 数据库不断更新,尤其是2024年发布的新版本,带来了许多新特性和改进。本文将详细介绍如何在 Linux 环境下安装最新版的 Virtuoso 数据库。
1 virtuoso的选择和下载
1.1 virtuoso版本介绍
截止到目前(2024年9月),virtuoso的最新版本是7.2.13,可以通过https://sourceforge.net/projects/virtuoso/files/virtuoso/这个网址看到virtuoso的历史版本,其中7.2.13版本是2024年6月份发布的。
最新版本的virtuoso有针对不同操作系统的,如下图
我们采用的系统是centos,选取的virtuoso是virtuoso-opensource-7.2.13.tar.gz。
1.2 下载解压文件
Virtuoso可以安装到/usr/local目录,在/usr/local目录下新建virtuoso文件夹。
[root@flexusx-e724 local]# cd /usr/local
[root@flexusx-e724 local]# mkdir virtuoso
[root@flexusx-e724 local]# cd virtuoso/
在virtuoso目录下,用wget命令下载virtuoso-opensource-7.2.13.tar.gz压缩文件。
[root@flexusx-e724 virtuoso]# wget https://sourceforge.net/projects/virtuoso/files/virtuoso/7.2.13/virtuoso-opensource-7.2.13.tar.gz
解压文件
[root@flexusx-e724 local]# tar -zxvf virtuoso-opensource-7.2.13.tar.gz
切换到解压后的virtuoso-opensource-7.2.13目录
[root@flexusx-e724 virtuoso]# cd virtuoso-opensource-7.2.13
2 配置编译安装过程
我们将virtuoso-opensource-7.2.13.tar.gz下载到/usr/local/virtuoso目录,解压后进行编译安装,由于每个系统默认安装的依赖,插件各不相同,我们编译安装virtuoso采用直接进行编译安装,根据报错信息查看缺少的依赖,再安装依赖,然后重复编译安装,不断重复上面的过程,一直到没有报错,安装成功为止。
以下是详细安装步骤
2.1 ./configure进行配置
[root@flexusx-e724 virtuoso-opensource-7.2.13]# ./configure
checking OpenSSL version... configure: error: OpenSSL version 0.9.8e or greater is required.
上面的报错是缺少了OpenSSL,需要安装openssl依赖
[root@flexusx-e724 virtuoso-opensource-7.2.13]# yum install openssl-devel
openssl安装完成后,再次配置
[root@flexusx-e724 virtuoso-opensource-7.2.13]# ./configure
配置完成。
2.2 make构建编译
[root@flexusx-e724 virtuoso-opensource-7.2.13]# make
* WARNING *: You should have the yacc program installed on your system.
Please check the INSTALL and README files for package
dependencies, recommended versions and operating system dependent
instructions to build and install Virtuoso on your system.
However since the file jsonld_p.c exists on your system
we will try to use it, but all changes you made to the underlying
source files will be ignored.
Please rerun 'make'
make[2]: *** [Makefile:3835: jsonld_p.h] Error 1
make[2]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/libsrc/Wi'
make[1]: *** [Makefile:506: all-recursive] Error 1
make[1]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/libsrc'
make: *** [Makefile:702: all-recursive] Error 1
从上面的报错信息,可以看出系统缺少了yacc依赖,所以需要安装yacc依赖。
[root@flexusx-e724 virtuoso-opensource-7.2.13]# yum install byacc -y
Yacc依赖安装完成后,再次进行构建
[root@flexusx-e724 virtuoso-opensource-7.2.13]# make
WARNING: 'flex' is missing on your system.
You should only need it if you modified a '.l' file.
You may want to install the Fast Lexical Analyzer package:
<https://github.com/westes/flex>
make[2]: *** [Makefile:911: graphql_l.c] Error 127
make[2]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/binsrc/graphql'
make[1]: *** [Makefile:502: all-recursive] Error 1
make[1]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/binsrc'
make: *** [Makefile:702: all-recursive] Error 1
再次报错,缺少了flex依赖,继续安装flex依赖
[root@flexusx-e724 virtuoso-opensource-7.2.13]# yum install flex
安装完成后,再次make构建
[root@flexusx-e724 virtuoso-opensource-7.2.13]# make
没有报错,构建成功
2.3 make install安装
[root@flexusx-e724 virtuoso-opensource-7.2.13]# make install
命令make install运行后,花费的时间会比较长,大概有5-6分钟,需要耐心等待。
信息一直在屏幕上滚动,没有信息滚动,说明安装完成,也没有报错,说明安装成功。
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[5]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki/plugin'
make[4]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki/plugin'
make[3]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki/plugin'
make[3]: Entering directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki'
make[4]: Entering directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki'
make[3]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki'
make[2]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc/ODS-Wiki'
make[2]: Entering directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc'
make[3]: Entering directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc'
make[2]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc'
make[1]: Leaving directory '/usr/local/virtuoso/virtuoso-opensource-7.2.13/appsrc'
3 配置virtuoso数据库
安装完成后,需要对 Virtuoso 进行一些基础配置。
3.1 virtuoso配置文件virtuoso.ini
Virtuoso会将程序自动安装到/usr/local/virtuoso-opensource目录下,其中配置文件virtuoso.ini位于/usr/local/virtuoso-opensource/var/lib/virtuoso/db目录。
以下是virtuoso配置文件的部分参数及说明
[Database] 部分:
DatabaseFile:数据库文件路径。
NumberOfBuffers 和 MaxDirtyBuffers:影响内存缓存,适合设置为服务器内存的 50-70%。
CheckpointInterval:控制检查点的时间间隔,默认 60 秒。
[Parameters] 部分:
ServerPort 和 HTTPPort:数据库和 Web 控制台端口。
ThreadsPerQuery:查询并发线程数,根据 CPU 核数调整。
[SPARQL] 部分:
ResultSetMaxRows 和 MaxQueryExecutionTime:控制查询结果集大小和执行时间。
配置应根据系统性能和需求进行优化。
3.2 放开端口8890和1111
默认情况下,virtuoso有两个端口,一个server的api端口,1111,一个是http端口,8890,如果想要正常访问virtuoso数据库,需要将这两个端口开放。
开放端口涉及到两个层面,一个是系统层面,如果使用的是centos操作系统,使用命令
firewall-cmd --zone=public --add-port=8890/tcp –permanent
firewall-cmd --zone=public --add-port=1111/tcp –permanent
放开防火墙对两个端口的限制。
一个是服务器层面,需要在供应商提供的安全管理页面进行设置,一般是安全组设置,在入站规则中,放开这两个端口。
4 运行virtuoso
[root@flexusx-e724 bin]# nohup /usr/local/virtuoso-opensource/bin/virtuoso-t -fd +configfile /usr/local/virtuoso-opensource/var/lib/virtuoso/db/virtuoso.ini &
这个命令在后台启动 Virtuoso 数据库,并指定使用特定的配置文件。以下是各个部分的解释:
nohup:命令前缀,表示忽略挂断信号(SIGHUP),即使关闭终端,进程也会继续运行。nohup 的输出通常会保存到 nohup.out 文件中,除非指定了其他输出文件。
/usr/local/virtuoso-opensource/bin/virtuoso-t:这是 Virtuoso 数据库的主可执行文件,virtuoso-t 是 Virtuoso 数据库服务器的启动程序。
-fd:表示前台运行服务器并显示调试输出,但这里使用了 nohup 将其推到后台。
+configfile /usr/local/virtuoso-opensource/var/lib/virtuoso/db/virtuoso.ini:指定 Virtuoso 数据库使用的配置文件路径。这里明确告知数据库使用位于 /usr/local/virtuoso-opensource/var/lib/virtuoso/db/virtuoso.ini 的配置文件。
&:将命令放到后台运行,允许继续使用当前终端窗口进行其他操作。
通过ps命令,查看启动情况
[root@flexusx-e724 bin]# ps aux|grep virtuoso
root 596231 12.9 35.8 9726432 4334636 pts/0 Sl 11:04 0:02 /usr/local/virtuoso-opensource/bin/virtuoso-t -fd +configfile /usr/local/virtuoso-opensource/var/libvirtuoso/db/virtuoso.ini
root 596253 0.0 0.0 22112 2108 pts/0 S+ 11:04 0:00 grep --color=auto virtuoso
说明virtuoso启动成功。
5 测试连接
5.1 使用isql测试连接
使用 `isql` 客户端来测试数据库连接。默认用户名和密码分别是 `dba` 和 `dba`。
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba
你将进入 Virtuoso 命令行界面,尝试运行 SQL 命令测试是否正常工作:
SELECT * FROM DB.DBA.SYS_USERS;
如果返回用户表的内容,则表示 Virtuoso 已成功安装并正在运行。
5.2 web登录测试
然后在浏览器中输入,服务器IP:8890,进行访问测试,如果出现web页面,没有报错。
则说明virtuoso安装成功,也能够正常访问了。
总结
2024年新版的 Virtuoso 在性能和功能上都有所提升。本文详细介绍了如何在 Linux 中安装 Virtuoso 数据库,包括依赖安装、编译、配置和优化等内容。通过这些步骤,你可以成功部署 Virtuoso 并根据实际需要进行调整和优化。Virtuoso 的多功能性使它适用于各种场景,如 RDF 数据处理、SPARQL 查询、以及传统的关系型数据库应用。在实际使用中,根据系统性能和业务需求对 Virtuoso 进行定期的优化,将确保数据库能够以最佳状态运行。