Linux宝塔Docker部署neo4j及知识图谱病症问答系统(上)

597 阅读3分钟

1.安装宝塔

重装服务器,系统选择宝塔。 image.png

2.安装docker

需要先在宝塔的"面板设置"中的 面板菜单栏隐藏 将 "Docker" 打开,按F5刷新界面,在左侧菜单 "Docker" 界面安装。

image.png

image.png

3.拉取镜像

目前使用的py2neo 2021.1最高只支持到neo4j 4.3,故拉取该版本。

image.png

image.png

4.创建容器并运行

服务器上的目录/home/neo4j/diseaseGraph/data对应容器目录/var/lib/neo4j/data,以此类推。

NEO4J_AUTH=neo4j/password 设定数据库的名字的访问密码。

限制的CPU和内存根据自己服务器情况而定,越大越快~

image.png

如果遇到报错,根据提示修改neo4j.conf可以解决部分问题,例如

image.png image.png

则将其中的

image.png改小

5.开放端口供外网访问。

云服务器的防火墙端口也需要放行

image.png

6.访问neo4j网页

访问http://服务器ip:7474/browser/

输入NEO4J_AUTH设定的账号进入

7.Python访问neo4j并构建图谱

采用py2neo连接数据库

g = Graph(
    'http://服务器ip:7474/',
    auth=(
        "neo4j",
        "password"
    ))  # auth=("用户名","密码"),改为自己的

ps:远程新建节点和关系速度很慢,故把构建图谱脚本放在服务器上连接本地neo4j数据库更快,详见# Python脚本部署到宝塔Linux运行juejin.cn/post/724916…

image.png

image.png

8.部署问答flask接口

使用Python项目管理器

image.png

urllib3和openssl版本不匹配错误

    g = Graph(
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/database.py", line 288, in __init__
    self.service = GraphService(profile, **settings)
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/database.py", line 119, in __init__
    self._connector = Connector(profile, **connector_settings)
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 960, in __init__
    self._add_pools(*self._initial_routers)
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 982, in _add_pools
    pool = ConnectionPool.open(
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 649, in open
    seeds = [pool.acquire() for _ in range(init_size or cls.default_init_size)]
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 649, in <listcomp>
    seeds = [pool.acquire() for _ in range(init_size or cls.default_init_size)]
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 813, in acquire
    cx = self._connect()
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 764, in _connect
    cx = Connection.open(self.profile, user_agent=self.user_agent,
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/__init__.py", line 177, in open
    from py2neo.client.http import HTTP
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/py2neo/client/http.py", line 27, in <module>
    from urllib3 import HTTPConnectionPool, HTTPSConnectionPool, make_headers
  File "/home/pythonProjects/disease/diseaseAsk/2b99fef724a6ccb05fadb32b117a6043_venv/lib/python3.9/site-packages/urllib3/__init__.py", line 41, in <module>
    raise ImportError(
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168

解决方法:

先卸载现在2.0.3的urllib3

image.png 再安装1.26.6的urllib3

image.png

或者requirements.txt里指定urllib3==1.26.6