zoukankan      html  css  js  c++  java
  • docker安装部署neo4j

    docker部署neo4j

    环境:ubuntu16.04LTS

    docker安装

    详见:菜鸟教程(docker安装)

    docker国内镜像源配置

    第一步,进入阿里云,登陆后点击左侧的镜像加速,生成自己的镜像加速地址。

    neo4j镜像源配置1

    第二步,选择ubuntu,执行阿里云推荐的终端命令,即可更新docker的镜像源为阿里云镜像。

    docker部署neo4j

    拉取neo4j镜像

    第一步,从镜像源中找合适的镜像

    docker search neo4j
    

    neo4j镜像源查找

    第二步,拉取镜像源

    docker pull neo4j(:版本号) //缺省 “:版本号” 时默认安装latest版本的
    

    第三步,查看本地镜像,检验是否拉取成功

    docker images
    

    检查本地镜像

    构建neo4j容器

    第一步,在你根目录的任意一个子目录(我这里是/home)下建立四个基本的文件夹

    • data——数据存放的文件夹
    • logs——运行的日志文件夹
    • conf——数据库配置文件夹(在配置文件neo4j.conf中配置包括开放远程连接、设置默认激活的数据库)
    • import——为了大批量导入csv来构建数据库,需要导入的节点文件nodes.csv和关系文件rel.csv需要放到这个文件夹下)
    docker run -d --name container_name   //-d表示容器后台运行 --name指定容器名字
    	-p 7474:7474 -p 7687:7687   //映射容器的端口号到宿主机的端口号
    	-v /home/neo4j/data:/data   //把容器内的数据目录挂载到宿主机的对应目录下
    	-v /home/neo4j/logs:/logs   //挂载日志目录
    	-v /home/neo4j/conf:/var/lib/neo4j/conf   //挂载配置目录
    	-v /home/neo4j/import:/var/lib/neo4j/import   //挂载数据导入目录
    	--env NEO4J_AUTH=neo4j/password   //设定数据库的名字的访问密码
    	neo4j //指定使用的镜像
    

    一个可以直接复制粘贴到终端执行的代码模板

    docker run -d --name container_name -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var/lib/neo4j/conf -v /home/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/password neo4j
    

    其中container_name可以自己指定,挂载在根目录下的子目录可以根据你自己的实际情况进行替换,我这里是/home。另外NEO4J_AUTH也是你自己来进行设置。

    执行完上述命令后就在后台把neo4j容器启动起来了,这个时候你就能在宿主机的浏览器中输入

    localhost:7474
    

    输入用户名和密码就能登录到数据库了。

    浏览器登陆数据库

    neo4j配置

    上述方式启动的neo4j是按照默认的配置进行启动的,而默认的数据库配置是不允许远程登陆的,这样对于在服务器上使用docker搭载neo4j的同学来说,就很不方便了。所以我们对默认配置进行一些改变,改变如下:

    // 进入容器配置目录挂载在宿主机的对应目录,我这里是/home/neo4j/conf
    cd /home/neo4j/conf
    
    // vim编辑器打开neo4j.conf
    vim neo4j.conf
    
    // 进行以下更改
    //在文件配置末尾添加这一行
    dbms.connectors.default_listen_address=0.0.0.0  //指定连接器的默认监听ip为0.0.0.0,即允许任何ip连接到数据库
    
    //修改
    dbms.connector.bolt.listen_address=0.0.0.0:7687  //取消注释并把对bolt请求的监听“地址:端口”改为“0.0.0.0:7687”
    dbms.connector.http.listen_address=0.0.0.0:7474  //取消注释并把对http请求的监听“地址:端口”改为“0.0.0.0:7474”
    

    保存后退出,重启neo4j容器,可以使用容器的省略id或者生成容器时指定的容器名进行重启。

    docker restart 容器id(或者容器名)
    

    防火墙设置

    // 查看当前防火墙状态,若为“inactive”,则防火墙已关闭,不必进行接续操作。
    sudo ufw status
    
    // 若防火墙状态为“active”,则使用下列命令开放端口
    sudo ufw allow 7474
    sudo ufw allow 7687
    
    // 重启防火墙
    sudo ufw reload
    

    neo4j数据导入

    neo4j数据的批量导入方法

    为了加快速度,使用官方的Neo4j-import进行导入

    // 数据准备
    清空data/databases/graph.db文件夹(如果有),将清洗好的结点文件nodes.csv和关系文件rel.csv拷贝到宿主机/home/neo4j/import中
    
    // docker以exec方式进入容器的交互式终端
    docker exec -it container_name(or container_id) /bin/bash
    
    // 停掉neo4j
    bin/neo4j stop
    
    //使用如下命令导入
    bin/neo4j-admin import 
    	--database=graph.db 	        //指定导入的数据库,没有系统则会在data/databases下自动创建一个
    	--nodes ./import/nodes.csv 		//指定导入的节点文件位置
    	--relationships ./import/rel.csv //指定导入的关系文件位置
    	--skip-duplicate-nodes=true 	//设置重复节点自动过滤
    	--skip-bad-relationships=true 	//设置bad关系自动过滤
    	
    //可执行一行式终端命令
    bin/neo4j-admin import --database=graph.db --nodes ./import/nodes.csv --relationships ./import/rel.csv --skip-duplicate-nodes=true --skip-bad-relationships=true
    
    // 容器内启动neo4j
    bin/neo4j start
    
    // 退出交互式终端但是保证neo4j后台继续运行
    ctrl + P + Q
    
    //保险起见,重启neo4j容器
    docker restart container_name(or container_id)
    

    重启后使用另一台主机向服务器发送http请求进行远程登陆,在浏览器中输入

    服务器ip:7474
    

    切换连接模式bolt:/ ,输入用户名和密码进行登陆,登陆成功发现在数据库一栏没找到新导入的数据库graph.db

    这是因为配置不够全,继续进到容器挂载到宿主机的/home/neo4j/conf中对neo4j.conf进行配置

    //在文件末尾添加默认的数据库
    dbms.active_database=graph.db
    
    // 保存后重启容器
    docker restart container_name(or container_id)
    

    重新进行远程连接,此时数据库的默认选择应该就切换到了新导入的graph.db。

    数据清洗

    数据如何清洗成两个符合neo4j-import导入格式的csv文件?

  • 相关阅读:
    PHP-Resque 简介
    基于Redis的消息队列php-resque
    sms_queue 短信队列
    那些最好的轮子
    Sphinx高亮显示关键字
    atitit.系统托盘图标的设计java swing c# .net c++ js
    atitit.验证码识别step4--------图形二值化 灰度化
    atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本
    atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结
    atitit.loading的设计与实现控件选型attilax 总结
  • 原文地址:https://www.cnblogs.com/caoyusang/p/13610408.html
Copyright © 2011-2022 走看看