Ubuntu16安装neo4j

本文详细介绍了手动下载并安装Oracle JDK的步骤,包括创建目录、解压缩、修改环境变量以及系统注册。接着,文章讲解了安装Neo4j的过程,从下载、解压到修改配置,确保服务能够接受远程连接。此外,还提到了Neo4j的配置细节,如内存设置、安全选项以及网络连接。最后,文章涵盖了启动、关闭服务的方法,并提供了客户端访问数据库的途径。
摘要由CSDN通过智能技术生成

手动下载压缩包安装oracle Java JDK

1、前往oracle Java官网下载JDK
2、解压缩到指定目录(以jdk-8u311-linux-x64.tar.gz为例)

创建目录:

sudo mkdir /home/admin/jvm

解压缩到该目录:

sudo tar -zxvf jdk-7u60-linux-x64.gz -C /home/admin/jvm

3.修改环境变量:

sudo vi ~/.bashrc

在文件末尾追加下面内容:

#set oracle jdk environment
export JAVA_HOME=/home/admin/jvm/jdk1.8.0_311   ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  

使环境变量马上生效:

source ~/.bashrc

4、系统注册此jdk

sudo update-alternatives --install /usr/bin/java java /home/admin/jvm/jdk1.8.0_311/bin/java 300

5、查看java版本,看看是否安装成功:

java -version

如果你安装了多个版本的jdk,你可以通过以下命令在这些版本之间切换:

sudo update-alternatives --config java

前面带星号的是当前正在使用的java版本,键入编号选择使用哪个版本。

安装Neo4j

1、引言

Neo4j是图数据库中单节点最受欢迎的一款产品,虽然不支持分布式,但是Neo4j无论从功能、性能、社区活跃度等都是非常高的。
Neo4j社区版 依赖Java,不同版本的Neo4j依赖不同版本的Java, 目前最新版4.1.x依赖Java11.

几点建议:
如果熟悉使用neo4j,可用较高版本(前提是稳定),因为高版本有更强大功能,如4.1开始支持neo4j管理内存

2、下载安装

2.1 服务器下载

curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz

2.2 解压安装

tar -xvzf neo4j-community-3.4.5-unix.tar.gz

3、修改配置

#*****************************************************************
# Neo4j configuration
#
# For more details and a complete list of settings, please see
# https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/
#*****************************************************************
 
# The name of the database to mount
#dbms.active_database=graph.db
 
# Paths of directories in the installation.
#dbms.directories.data=data
#dbms.directories.plugins=plugins
#dbms.directories.certificates=certificates
#dbms.directories.logs=logs
#dbms.directories.lib=lib
#dbms.directories.run=run
 
# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to
# allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the
# `LOAD CSV` section of the manual for details.
dbms.directories.import=import
 
# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false
 
# Enable this to be able to upgrade a store from an older version.
#dbms.allow_upgrade=true
 
# Java Heap Size: by default the Java heap size is dynamically
# calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum
# heap size.
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m
 
# The amount of memory to use for mapping the store files, in bytes (or
# kilobytes with the 'k' suffix, megabytes with 'm' and gigabytes with 'g').
# If Neo4j is running on a dedicated server, then it is generally recommended
# to leave about 2-4 gigabytes for the operating system, give the JVM enough
# heap to hold all your transaction state and query context, and then leave the
# rest for the page cache.
# The default page cache memory assumes the machine is dedicated to running
# Neo4j, and is heuristically set to 50% of RAM minus the max Java heap size.
#dbms.memory.pagecache.size=10g
 
#*****************************************************************
# Network connector configuration
#*****************************************************************
 
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
 
# You can also choose a specific network interface, and configure a non-default
# port for each connector, by setting their individual listen_address.
 
# The address at which this server can be reached by its clients. This may be the server's IP address or DNS name, or
# it may be the address of a reverse proxy which sits in front of the server. This setting may be overridden for
# individual connectors below.
#dbms.connectors.default_advertised_address=localhost
 
# You can also choose a specific advertised hostname or IP address, and
# configure an advertised port for each connector, by setting their
# individual advertised_address.
 
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687
 
# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=0.0.0.0:7474
 
# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
#dbms.connector.https.listen_address=:7473
 
# Number of Neo4j worker threads.
#dbms.threads.worker_count=
 
#*****************************************************************
# SSL system configuration
#*****************************************************************
 
# Names of the SSL policies to be used for the respective components.
 
# The legacy policy is a special policy which is not defined in
# the policy configuration section, but rather derives from
# dbms.directories.certificates and associated files
# (by default: neo4j.key and neo4j.cert). Its use will be deprecated.
 
# The policies to be used for connectors.
#
# N.B: Note that a connector must be configured to support/require
#      SSL/TLS for the policy to actually be utilized.
#
# see: dbms.connector.*.tls_level
 
#bolt.ssl_policy=legacy
#https.ssl_policy=legacy
 
#*****************************************************************
# SSL policy configuration
#*****************************************************************
 
# Each policy is configured under a separate namespace, e.g.
#    dbms.ssl.policy.<policyname>.*
#
# The example settings below are for a new policy named 'default'.
 
# The base directory for cryptographic objects. Each policy will by
# default look for its associated objects (keys, certificates, ...)
# under the base directory.
#
# Every such setting can be overridden using a full path to
# the respective object, but every policy will by default look
# for cryptographic objects in its base location.
#
# Mandatory setting
 
#dbms.ssl.policy.default.base_directory=certificates/default
 
# Allows the generation of a fresh private key and a self-signed
# certificate if none are found in the expected locations. It is
# recommended to turn this off again after keys have been generated.
#
# Keys should in general be generated and distributed offline
# by a trusted certificate authority (CA) and not by utilizing
# this mode.
 
#dbms.ssl.policy.default.allow_key_generation=false
 
# Enabling this makes it so that this policy ignores the contents
# of the trusted_dir and simply resorts to trusting everything.
#
# Use of this mode is discouraged. It would offer encryption but no security.
 
#dbms.ssl.policy.default.trust_all=false
 
# The private key for the default SSL policy. By default a file
# named private.key is expected under the base directory of the policy.
# It is mandatory that a key can be found or generated.
 
#dbms.ssl.policy.default.private_key=
 
# The private key for the default SSL policy. By default a file
# named public.crt is expected under the base directory of the policy.
# It is mandatory that a certificate can be found or generated.
 
#dbms.ssl.policy.default.public_certificate=
 
# The certificates of trusted parties. By default a directory named
# 'trusted' is expected under the base directory of the policy. It is
# mandatory to create the directory so that it exists, because it cannot
# be auto-created (for security purposes).
#
# To enforce client authentication client_auth must be set to 'require'!
 
#dbms.ssl.policy.default.trusted_dir=
 
# Client authentication setting. Values: none, optional, require
# The default is to require client authentication.
#
# Servers are always authenticated unless explicitly overridden
# using the trust_all setting. In a mutual authentication setup this
# should be kept at the default of require and trusted certificates
# must be installed in the trusted_dir.
 
#dbms.ssl.policy.default.client_auth=require
 
# It is possible to verify the hostname that the client uses
# to connect to the remote server. In order for this to work, the server public
# certificate must have a valid CN and/or matching Subject Alternative Names.
 
# Note that this is irrelevant on host side connections (sockets receiving
# connections).
 
# To enable hostname verification client side on nodes, set this to true.
 
#dbms.ssl.policy.default.verify_hostname=false
 
# A comma-separated list of allowed TLS versions.
# By default only TLSv1.2 is allowed.
 
#dbms.ssl.policy.default.tls_versions=
 
# A comma-separated list of allowed ciphers.
# The default ciphers are the defaults of the JVM platform.
 
#dbms.ssl.policy.default.ciphers=
 
#*****************************************************************
# Logging configuration
#*****************************************************************
 
# To enable HTTP logging, uncomment this line
#dbms.logs.http.enabled=true
 
# Number of HTTP logs to keep.
#dbms.logs.http.rotation.keep_number=5
 
# Size of each HTTP log that is kept.
#dbms.logs.http.rotation.size=20m
 
# To enable GC Logging, uncomment this line
#dbms.logs.gc.enabled=true
 
# GC Logging Options
# see http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013 for more information.
#dbms.logs.gc.options=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintTenuringDistribution
 
# For Java 9 and newer GC Logging Options
# see https://docs.oracle.com/javase/10/tools/java.htm#JSWOR-GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5
#dbms.logs.gc.options=-Xlog:gc*,safepoint,age*=trace
 
# Number of GC logs to keep.
#dbms.logs.gc.rotation.keep_number=5
 
# Size of each GC log that is kept.
#dbms.logs.gc.rotation.size=20m
 
# Log level for the debug log. One of DEBUG, INFO, WARN and ERROR. Be aware that logging at DEBUG level can be very verbose.
#dbms.logs.debug.level=INFO
 
# Size threshold for rotation of the debug log. If set to zero then no rotation will occur. Accepts a binary suffix "k",
# "m" or "g".
#dbms.logs.debug.rotation.size=20m
 
# Maximum number of history files for the internal log.
#dbms.logs.debug.rotation.keep_number=7
 
#*****************************************************************
# Miscellaneous configuration
#*****************************************************************
 
# Enable this to specify a parser other than the default one.
#cypher.default_language_version=3.0
 
# Determines if Cypher will allow using file URLs when loading data using
# `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV`
# clauses that load data from the file system.
#dbms.security.allow_csv_import_from_file_urls=true
 
 
# Value of the Access-Control-Allow-Origin header sent over any HTTP or HTTPS
# connector. This defaults to '*', which allows broadest compatibility. Note
# that any URI provided here limits HTTP/HTTPS access to that URI only.
#dbms.security.http_access_control_allow_origin=*
 
# Value of the HTTP Strict-Transport-Security (HSTS) response header. This header
# tells browsers that a webpage should only be accessed using HTTPS instead of HTTP.
# It is attached to every HTTPS response. Setting is not set by default so
# 'Strict-Transport-Security' header is not sent. Value is expected to contain
# dirictives like 'max-age', 'includeSubDomains' and 'preload'.
#dbms.security.http_strict_transport_security=
 
# Retention policy for transaction logs needed to perform recovery and backups.
dbms.tx_log.rotation.retention_policy=1 days
 
# Only allow read operations from this Neo4j instance. This mode still requires
# write access to the directory for lock purposes.
#dbms.read_only=false
 
# Comma separated list of JAX-RS packages containing JAX-RS resources, one
# package name for each mountpoint. The listed package names will be loaded
# under the mountpoints specified. Uncomment this line to mount the
# org.neo4j.examples.server.unmanaged.HelloWorldResource.java from
# neo4j-server-examples under /examples/unmanaged, resulting in a final URL of
# http://localhost:7474/examples/unmanaged/helloworld/{nodeId}
#dbms.unmanaged_extension_classes=org.neo4j.examples.server.unmanaged=/examples/unmanaged
 
# A comma separated list of procedures and user defined functions that are allowed
# full access to the database through unsupported/insecure internal APIs.
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*
 
# A comma separated list of procedures to be loaded by default.
# Leaving this unconfigured will load all procedures found.
#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.*
 
#********************************************************************
# JVM Parameters
#********************************************************************
 
# G1GC generally strikes a good balance between throughput and tail
# latency, without too much tuning.
dbms.jvm.additional=-XX:+UseG1GC
 
# Have common exceptions keep producing stack traces, so they can be
# debugged regardless of how often logs are rotated.
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow
 
# Make sure that `initmemory` is not only allocated, but committed to
# the process, before starting the database. This reduces memory
# fragmentation, increasing the effectiveness of transparent huge
# pages. It also reduces the possibility of seeing performance drop
# due to heap-growing GC events, where a decrease in available page
# cache leads to an increase in mean IO response time.
# Try reducing the heap memory, if this flag degrades performance.
dbms.jvm.additional=-XX:+AlwaysPreTouch
 
# Trust that non-static final fields are really final.
# This allows more optimizations and improves overall performance.
# NOTE: Disable this if you use embedded mode, or have extensions or dependencies that may use reflection or
# serialization to change the value of final fields!
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields
 
# Disable explicit garbage collection, which is occasionally invoked by the JDK itself.
dbms.jvm.additional=-XX:+DisableExplicitGC
 
# Remote JMX monitoring, uncomment and adjust the following lines as needed. Absolute paths to jmx.access and
# jmx.password files are required.
# Also make sure to update the jmx.access and jmx.password files with appropriate permission roles and passwords,
# the shipped configuration contains only a read only role called 'monitor' with password 'Neo4j'.
# For more details, see: http://download.oracle.com/javase/8/docs/technotes/guides/management/agent.html
# On Unix based systems the jmx.password file needs to be owned by the user that will run the server,
# and have permissions set to 0600.
# For details on setting these file permissions on Windows see:
#     http://docs.oracle.com/javase/8/docs/technotes/guides/management/security-windows.html
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/absolute/path/to/conf/jmx.password
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/absolute/path/to/conf/jmx.access
 
# Some systems cannot discover host name automatically, and need this line configured:
#dbms.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME
 
# Expand Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites used in server TLS handshakes.
# This is to protect the server from any potential passive eavesdropping.
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048
 
# This mitigates a DDoS vector.
dbms.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true
 
#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.
 
# Name of the service
dbms.windows_service_name=neo4j
 
#********************************************************************
# Other Neo4j system properties
#********************************************************************
dbms.jvm.additional=-Dunsupported.dbms.udc.source=zip

cd neo4j-community-4.1.1/conf/
vim neo4j.conf
修改相应配置如下(没有的配置可跳过不动):

修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件
dbms.directories.import=import

修改35行和36行,设置JVM初始堆内存和JVM最大堆内存
生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存
dbms.memory.heap.initial_size=5g dbms.memory.heap.max_size=10g

修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好
dbms.memory.pagecache.size=10g

修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=0.0.0.0

默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以
修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.bolt.listen_address=:7687

修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.http.listen_address=:7474
修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.https.listen_address=:7473

修改227行,去掉#,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true

修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的
dbms.shell.enabled=true

修改235行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行
dbms.shell.host=127.0.0.1

修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行
dbms.shell.port=1337

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

打开相对路径导入设置,即neo4j需要导入的文件放在$NEO4J_HOME/import目录下,
去掉原有#注释
dbms.directories.import=import

把安全认证机制关掉,方便python代码调用neo4j
dbms.security.auth_enabled=false

Java Heap Size 配置优化
最大堆内存容量, 缓存页大小, 通常前者是后者的25%或50%, 具体要根据机器总内存及运行程序来
堆大小,8-16g足够使用,具体根据系统内存及使用情况分配
页面缓存大小,若不设置默认使用50%RAM, 设置的话,可定义4-5g,具体参考实际情况

dbms.memory.heap.max_size=8g
dbms.memory.pagecache.size=4g
是否使用默认neo4j密码,改为true则使用新定义密码

dbms.security.auth_enabled=false
逻辑日志:

Neo4j中的逻辑事务日志用于不正常关闭后需要恢复数据库的情况。它们还用于在线备份操作,尤其是增量备份。
超过特定大小(大小为25 Mb)后,将旋转这些事务日志文件。可以配置日志文件的数量或使用的空间。
建议将设置为7 days
dbms.tx_log.rotation.retention_policy=7 days
默认数据库和最大数据库个数

默认会创建并使用neo4j数据库 dbms.default_database=neo4j
最大数据库个数 dbms.max_databases=100 只有在企业级4.0及之后版本才可使用
Neo4j单实例或因果群集中可以使用的最大数据库数。该数字包括所有联机和脱机数据库。整数形式,最小值为2。
请注意,一旦达到限制,就无法创建任何其他数据库。同样,如果将限制更改为小于现有数据库总数的数字,则无法创建其他数据库。

4、启动、关闭服务

进入bin目录执行neo4j start启动脚本,脚本若要全局使用,可添加待执行脚本的父路径到环境变量:
进入linux系统配置文件,增加以下内容,保存

vim /etc/profile
export NEO4J_HOME=/root/neo4j-community-4.1.1
export PATH=$NEO4J_HOME/bin

环境变量立即生效:

source /etc/profile

命令执行:
neo4j status 查看数据库状态 neo4j start 启动数据库 neo4j stop 关闭数据库

5、客户端访问

根据conf中默认的配置修改, 7474端口是浏览器访问的应用地址,
http://服务器ip地址:7474/browser/

在浏览器访问图数据库所在的机器上的7474端口(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值