I\'m wondering how one would get neo4j to work with Google Compute Engine. Has anybody done this? What problems did you encounter?
the easiest and the safest way is to use docker neo4j image
and this is docker docs, to install and deploy on google compute engine
Here you go,
gcloud compute ssh INSTANCE_NAME --zone AVAILABLE_ZONES
--> AVAILABLE_ZONESneo4j
in GCE - You may need to install java(Fix) and lsof (Fix: apt-get install lsof
).Configure server neo4j
(Optional), Add neo4j https support
Whitelist neo4j port 7474 (More on Networking and Firewalls)
Add security username:password from github
gcloud compute firewall-rules create neo4j --network default --allow tcp:7474
./bin/neo4j start
http://IP_ADDRESS:7474/
py2neo
Installed and server started, try some pycode to test it>> from py2neo.neo4j import GraphDatabaseService, CypherQuery
>> # Set up a link to the local graph database.
>> # When () left blank defaults to http://localhost:7474/db/data/
>> graph = GraphDatabaseService('http://IP_ADDRESS:7474/db/data/')
>> CypherQuery(graph, "CREATE (n {name:'Example'}) RETURN n;").execute()
Above python setup / code, you can use it in GAE as well.
from py2neo import neo4j
GRAPH_DB = neo4j.GraphDatabaseService(
'http://uname:psswd@localhost:7474/db/data/')
if IS_PROD:
GRAPH_DB = neo4j.GraphDatabaseService(
'http://uname:psswd@host:port/db/data/')
def _execute(query):
"""Execute all neo4j queries and return list of Record objects.
Returns:
Returns list of Record objects.
"""
try:
result = neo4j.CypherQuery(GRAPH_DB, query).execute()
# logging.info(result.data)
return result
except neo4j.CypherError as error:
logging.error(error.exception)
except DeadlineExceededError as dead:
logging.warn(dead)
except urlfetch_errors.InternalTransientError as tra_error:
logging.warn(tra_error)
except httplib.HTTPException as exp:
logging.warn(exp)
except neo4j.http.SocketError as soc:
logging.warn(soc)