Reputation: 325
I'm wondering how one would get neo4j to work with Google Compute Engine. Has anybody done this? What problems did you encounter?
Upvotes: 2
Views: 2711
Reputation: 1999
Here you go,
gcloud
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
).(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)
Upvotes: 12
Reputation:
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
Upvotes: 4