最近因為項目需要,到了一個純局域網環境中進行知識圖譜構建。對于小規模數據,neo4j社區版能夠滿足基本的建模和查詢需要(大規模數據需要商業版,或是選用其他開源分布式圖數據庫如nebula等)。本文主要介紹圖數據庫和python環境的部署過程和關鍵操作,以及一些遇到的問題。
部署需求
現狀:手頭有一臺服務器,安裝了centos系統,沒有圖形化界面。
目標:服務器上建立圖數據庫,并且有python開發環境支持我們進行圖數據庫的構建的查詢開發。
主要思路:服務器沒有圖形化界面,作為開發環境不太合適,因此計劃服務器上部署的neo4j和python能夠被局域網遠程機器所訪問,在其他機器上通過瀏覽器進行neo4j的操作和python代碼編寫。考慮到機器在局域網中,后續的方案基本上都是通過離線下載,導入,本地編譯或安裝的方式進行。
技術方案:neo4j+python+jupyter notebook
系統現狀
系統版本查詢
cat /etc/redhat-release
安裝python版本
python --version
安裝基本工具:
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel readline-devel sqlite-devel
neo4j圖數據庫部署
neo4j圖數據庫運行依賴于java-jdk,首先需要進行java-jdk部署.
java-jdk版本取決于neo4j,對應關系不展開。本文使用的是neo4j 5.21.0+java-jdk 21的方案。
java-jdk部署
1.下載地址:Java Downloads | Oracle]
2.遷移到服務器上
3.解壓縮到指定目錄
tar -zxvf jdk-版本號-linux-x64.tar.gz -C /opt/
4.配置環境變量,讓系統識別到:
vi /etc/profile #打開環境配置文件,在文件最后插入以下內容
# 以下是profile文件要添加內容
export JAVA_HOME=/opt/jdk-版本號 #配置主地址
export PATH=$PATH:$JAVA_HOME/bin #配置啟動地址
5.運行配置方案,讓方案生效:
source /etc/profile
6.檢查安裝是否成功
java -version
neo4j部署
1.下載:[Neo4j Deployment Center - Graph Database & Analytics]
2.遷移到服務器上
3.解壓到指定目錄
tar xvf neo4j-community-3.5.26-unix.tar.gz -C /opt/
4.修改配置,開放監聽IP和端口,讓遠程服務器能夠訪問
vi ./opt/neo4j-community/conf/neo4j.conf #路徑自己修改,主要打開neo4j配置文件,在里面添加兩句話
#以下是neo4j.conf文檔內添加內容
dbms.connector.http.listen_address=0.0.0.0:7474 #添加http監聽
dbms.connector.bolt.listen_address=0.0.0.0:7687 #添加bolt連接監聽
5.在neo4j安裝目錄下的服務啟動
./bin/neo4j start #啟動neo4j
./bin/neo4j status #查看啟動狀態
6.測試,在局域網其他機器打開http://服務器IP:7474,進入neo4j管理頁面。
首次進去初始賬號和密碼都是neo4j,進去后讓你修改密碼
如果發現無法打開,在配置正確情況下,確認局域網互通且服務器防火墻配置。糾錯這里不展開。
python環境部署
可以獨立地安裝python+jupyter,本次我直接安裝了anaconda,里面包含了python和jupyter等一些工具,如果要輕量化部署則還是分開安裝好些。
anaconda部署
1.下載,直接打開網址,或是使用命令,在其他機器下載后,遷移到服務器。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
2.安裝:
bash Anaconda3-版本號-Linux-x86_64.sh
3.配置環境變量,默認安裝地址的話,一般會自動配置環境變量,但如果是自定義地址,還是自己配置下環境變量靠譜些。配置方案與jdk類似,需要添加的是這個。
export PATH=/opt/anaconda3/bin:$PATH
4.檢查安裝是否成功
conda list
jupyter配置
1.檢查jupyter是否安裝成功了
jupyter notebook --version
2.生成配置文件
jupyter notebook --generate-config
命令會生成一個配置文件~/.jupyter/jupyter_notebook_config.py
3.配置監聽地址和端口,密碼
c.NotebookApp.ip = '*' #所有地址都監聽
c.NotebookApp.port = 8888 #監聽端口
c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxxxxxxxx' #訪問密碼哈希值
密碼的生成使用需要在python環境內運行以下代碼:
from notebook.auth import passwd
passwd()
結果讓你輸入密碼以及生成該密碼的哈希值。
4.啟動服務
jupyter notebook
5.如果為了更安全,可以使用SSH端口轉發(不一定)
ssh -N -f -L localhost:xxxx:localhost:yyyy username@server_ip
其中xxxx是本地端口,yyyy是服務器上Jupyter運行的端口(默認為8888)。
在遠程瀏覽器中打開http://服務器IP:8888,進入jupyter。
如果進入成功,輸入密碼就可以遠程進行代碼編寫和編譯工作。
如果無法打開,自己搜索,一般也是配置,網絡和防火墻問題。
neo4j python支持安裝
在python中操作neo4j需要安裝對應的庫,py2neo由于停止更新了,目前版本不支持最新的python版本,所以使用neo4j的python庫。
1.離線下載地址:[neo4j · PyPI]
2.傳輸wheel文件:
將下載的.whl文件復制到離線安裝的目標機器上。
3.使用pip進行離線安裝:
在目標機器上,使用pip安裝這些wheel文件:
pip install --no-index --find-links=file:///path/to/offline/wheels neo4j
4.驗證安裝:
安裝完成后,使用以下命令驗證Neo4j Python驅動程序是否安裝成功:
python -c "import neo4j"
?