记一次用Mac在linux服务器配置JAVA openjdk15 + neo4j图数据库

由于服务器无法搭梯子访问外网,直接下载相关资源速度很慢。在PC上配置neo4j时,可能由于apple m1的问题,底层的java JNA会产生一些tmp文件不在universal wrapper中,导致neo4j server无法正常启动。所以不得不在服务器中配置,在本地中使用浏览器访问数据库。

版本选择

服务器版本

Linux version 4.15.0-041500-lowlatency (kernel@kathleen) (gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3.1))

linux版本影响大不大我并不清楚。

neo4j版本

neo4j下载中心下载neo4j:

  • 企业版enterprise
  • 社区版community
  • 桌面版desktop

我选的版本是4.2.4.

这里个人使用,无论服务器还是本地,选择community server就可以。桌面版完全可以用server版+浏览器代替,而且并不会避免配置server遇到的bug,相对的debug起来更费劲。

下载建议搭梯子。

java版本

neo4j要求使用openjdk11,但是亲测openjdk11无法正常运行neo4j。
也不要选最新的openjdk16,我没实际测试,但是很多博客说运行不了。
个人选择zulu集成的openjdk15版本zulu builds of openjdk。一般服务器就选择glibc v2.5 or higher的JDK版本,直接下载速度ok,梯子与否速度差别有限。

配置过程

首先说明JAVA配置需要有管理员权限,neo4j配置不需要管理员权限。

拷贝文件并解压

因为服务器的安全性原因,我这里使用scp命令远程传输java和neo4j文件:

scp 本地文件 用户名@服务器ip:工作目录

根据zulu下载网页给的how to install部分的指示,把java放到目标路径并解压

/usr/lib/jvm/

对于两份.tar压缩文件,用命令解压

tar xvf 文件名

配置JAVA环境变量

配置JAVA环境有几种方法,这里我们选择修改/etc/profile文件。

比如我们的JDK存放路径为:

/usr/lib/jvm/zulu15.29.15-ca-jdk15.0.2-linux_x64

我们将以下代码添加到/etc/profile的末尾,这里需要管理员权限,首先打开:

vim /etc/profile

然后添加

export JAVA_HOME=/usr/lib/jvm/zulu15.29.15-ca-jdk15.0.2-linux_x64
 37 export CLASSPATH=.:$JAVA_HOME/lib/
 38 export PATH=$JAVA_HOME/bin:$PATH

修改后source一下使其生效:

source /etc/profile

检测JAVA环境是否配置好:

命令:java -version
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment Zulu15.29+15-CA (build 15.0.2+7)
OpenJDK 64-Bit Server VM Zulu15.29+15-CA (build 15.0.2+7, mixed mode, sharing)

命令:javac -version
javac 15.0.2

配置neo4j

需要配置neo4j的conf中deneo4j.conf文件内容,提供使用浏览器远程访问neo4j数据库的能力。

在neo4j的解压目录下打开conf文件:

# 修改前建议先备份
cp ./conf/neo4j.conf ./conf/neo4j.conf.backup
vim ./conf/neo4j.conf

参考文章,但仅保留我认为必要一些的修改项目:

#添加注释
#dbms.directories.import=import

# 设置JVM堆内存参数,数值仅供参考
# JVM最大堆内存越大越好,不能超过物理内存上限
dbms.memory.heap.initial_size=1g
dbms.memory.heap.max_size=2g

# 同上,数值仅供参考
dbms.memory.pagecache.size=5g

# 去掉注释,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=0.0.0.0

# 去掉注释,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true

# 修改254行,设置neo4j可读可写
dbms.read_only=false

完成配置后,进入neo4j目录中的bin:

# 启动neo4j
./neo4j start
# 查看状态
./neo4j status
#停止服务
./neo4j stop
# 启动console
./neo4j console

最后一个命令在许多debug场景用到,否则需要到log日志中去找错误。

使用neo4j

使用管理员权限启动neo4j,启动后在浏览器内输入http://IP:Port,具体打开那个端口要看服务器,这也是为什么启动命令用neo4j console更好。
neo4j启动页面

用户名与密码默认都是neo4j,进入后需要修改密码。

到此在linux服务器上配置JAVA与neo4j的过程告一段落。

一些bug

JAVA环境变量配置不成功

修改/etc/profile后一定要source一下,另外确保路径正确。

2021-03-25 12:55:24.130+0000 ERROR Failed to start Neo4j on dbms.connector.http.listen_address, a socket address. If missing port or hostname it is acquired from dbms.default_listen_address.
...

该错误目前主要由两方面造成:

  • conf文件配置问题:请按照配置neo4j说明;
  • sudo权限问题:用su切换成root用户,or,自己账户配置sudo权限。
Exception in thread "main" java.lang.UnsatisfiedLinkError: /private/var/root/Library/Caches/JNA/temp/jna9871935425727491055.tmp: dlopen(/private/var/root/Library/Caches/JNA/temp/jna9871935425727491055.tmp, 1): no suitable image found.  Did find:
	/private/var/root/Library/Caches/JNA/temp/jna9871935425727491055.tmp: no matching architecture in universal wrapper
	/private/var/root/Library/Caches/JNA/temp/jna9871935425727491055.tmp: no matching architecture in universal wrapper
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1018)
	at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:988)
	at com.sun.jna.Native.<clinit>(Native.java:195)
	at org.neo4j.internal.unsafe.UnsafeUtil.allocateMemory(UnsafeUtil.java:441)

这是我在本地配置neo4j时遇到的问题,目前无解,有待更进。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值