(注意:我已在CircleCI论坛上发布此问题here。)
我想使用neo4j的更新版本,而不是通过指定安装的默认neo4j2.2.2:
machine:
services:
neo4j
我使用以下方法手动安装较新版本的neo4j:
machine:
environment:
NEO4J_VERSION:
"2.2.3"
post:
- wget dist.neo4j.org/neo4j-community-$NEO4J_VERSION-unix.tar.gz
- tar -xzf neo4j-community-$NEO4J_VERSION-unix.tar.gz
- neo4j-community-$NEO4J_VERSION/bin/neo4j start
Neo4j开始没问题,到目前为止还不错!
现在要对neo4j进行身份验证,我们需要创建一个默认用户和 定义密码或关闭身份验证。对我来说都不适用。
(我在这里找到了这个方法:https://discuss.circleci.com/t/neo4j-server-authorization-error/692)。
在neo4j start命令之前,关闭auth_enabled:
- sudo sed -i "s|dbms.security.auth_enabled=true|dbms.security.auth_enabled=false|g" neo4j-community-$NEO4J_VERSION/conf/neo4j-server.properties
Neo4j在没有身份验证的情况下启动,因此与http://localhost:7474
的连接应该会成功。
相反,我得到:
httpstream: INFO: > GET http://localhost:7474/
httpstream: DEBUG: > User-Agent: py2neo/2.0.3 HTTPStream/1.5.0 Python/3.5.0-final-0 (linux)
httpstream: DEBUG: > Host: localhost:7474
httpstream: DEBUG: > X-Stream: true
httpstream: ERROR: ! SocketError: Connection refused
(我正在使用py2neo进行连接)。
我有一个单独的可执行脚本来创建用户,然后设置其密码:
#!/usr/bin/env bash
curl -X GET http://localhost:7474/user/neo4j --user neo4j:neo4j -H Accept:application/json -H Content-Type:application/json
curl -X POST http://localhost:7474/user/neo4j/password --user neo4j:neo4j -H Accept:application/json -H Content-Type:application/json -d "{\"password\": \"pass\"}"
该脚本在machine.post
的{{1}}步骤中运行。
配置完成后,测试应该能够使用circle.yml
进行身份验证。
不幸的是,curl请求失败了:
http://neo4j:pass@localhost:7474
如果我退回并使用CircleCI默认neo4j而不是手动安装,方法1和2都可以工作。它们在与本地(例如在我的笔记本电脑上)安装neo4j时运行时也可以工作。
在CircleCI中手动安装neo4j时,为什么会失败的任何想法?
感谢您的帮助,
克雷格