.. _main_setup:
*****
Setup
*****
.. include:: rst_directives.rst
.. _`Neo4J WebServer`: https://neo4j.com/download/other-releases/
MaSyMoS can be used as a standalone or as a plugin for the `Neo4J WebServer`_.
If you want to run MaSyMoS from it's source locally on your computer, please follow the steps described in :ref:`contrib_start` to setup an development environment.
Setup Standalone
################
To create a standalone you need ``masymos-core`` and ``masymos-cli``.
To create it locally, clone the repositories, get the dependencies via Maven and build the jar.
.. TODO provide docker image here
Find the instructions on how to use the command line interface in the :ref:`use_cli`.
Setup Server
############
If you want to use MaSyMoS as a search server for models you will have to set up the server version. To do so, start by downloading `Neo4J WebServer`_.
Please check the Neo4J-vesion in pom.xml (:c_xml:`org.neo4j`) before downloading the server. You might want to make sure to compile MaSyMoS with the same version as the downloaded server. Follow the Neo4J setup instructions.
To create a Server-MaSyMoS you need ``masymos-core`` and ``masymos-morre``. Then follow these steps:
#. Use Maven to compile ``masymos-core`` (``mvn install``) without dependencies and do the same with ``masymos-morre`` (``mvn package``). You must use the same Java version used for Neo4J.
#. Copy the JAR for ``masymos-more`` into ``$Neo4jRoot/plugins``.
#. Open ``$Neo4JRoot/conf/neo4j.conf`` and set:
.. csv-table:: Arguments
:header: "Key", "Value", "Description"
:widths: 10, 10, 80
``dbms.active_database``, … , "points the path of your database"
``dbms.allow_format_migration``, true, "if you are using a server with a higher version then the one the DB was created with"
``dbms.security.auth_enabled``, false, "or configure the authentication"
``dbms.unmanaged_extension_classes``, ``de.unirostock.morre.server.plugin=/morre``, "to allow MaSyMoS plugin to be loaded"
- you might also want to uncomment ``dbms.connector.http.address=0.0.0.0:7474`` to accept non-localhost connections
#. You will also need some additional libraries for the server, easiest way is to create ``masymos-core`` and ``masymos-morre`` without dependencies and let Maven pack all necessary libraries in a directory next to the generated JAR.
- ℹ packing all the libraries inside the morre-package (fat jar) is not a good idea, even having the libs inside the core package will not work, because neo4j may has other versions running.
- To get all the libraries, please follow these steps
#. look up the ``target/lib``-directory after the build in ``masymos-core`` and ``masymos-morre``. (There is maven goal ``copy-dependencies`` for this in the pom, running automatically.)
- copy all the libraries into ``$Neo4jRoot/lib/ext`` (you may need to create it).
#. Avoid unpredictable behaviour based on java-library complications
#. Delete all libraries from ``lib/ext``, that are in ``lib`` i.e. with bash in ``lib/ext``: :c_bash:`for f in ./../*; do rm -v "./$(basename $f)"; done`.
#. Delete the following files from ``lib/ext``:
- ``*.pom``
- ``neo4j-*.jar``
- ``server-*.jar``
- The result in ``$Neo4JRoot/lib/ext`` may look like this (list is maybe outdated)
.. raw:: html
click here to show the list
.. code-block:: text
activation-1.1.jar
animal-sniffer-annotations-1.14.jar
axis-1.4.jar
axis-jaxrpc-1.4.jar
axis-saaj-1.4.jar
axis-wsdl4j-1.5.1.jar
BFLog-1.3.7.jar
BFUtils-0.5.7.jar
biojava-ontology-4.0.0.jar
BiVeS-CellML-1.8.0.jar
BiVeS-Core-1.9.1.jar
caffeine-2.6.1.jar
collections-generic-4.01.jar
commons-cli-1.3.jar
commons-codec-1.11.jar
commons-csv-1.0.jar
commons-discovery-0.2.jar
commons-lang3-3.9.jar
commons-logging-1.2.jar
commons-rdf-api-0.5.0.jar
dom4j-1.6.1.jar
error_prone_annotations-2.0.18.jar
fluent-hc-4.5.5.jar
gson-2.8.6.jar
guava-22.0.jar
hamcrest-core-1.3.jar
hppcrt-0.7.5.jar
httpclient-4.5.10.jar
httpclient-cache-4.5.2.jar
httpclient-osgi-4.5.5.jar
httpcore-4.4.12.jar
httpcore-nio-4.4.9.jar
httpcore-osgi-4.4.9.jar
httpmime-4.5.5.jar
j2objc-annotations-1.1.jar
jackson-annotations-2.9.10.jar
jackson-core-2.9.10.jar
jackson-databind-2.9.10.jar
javax.inject-1.jar
javax.ws.rs-api-2.0.jar
jaxen-1.1.1.jar
jcl-over-slf4j-1.7.22.jar
jCOMODI-1.0.2.jar
jdom2-2.0.5.jar
jdom-1.0.jar
jdom-1.1.3.jar
jdom-contrib-1.1.3.jar
jena-arq-3.0.0.jar
jena-base-3.0.0.jar
jena-core-3.0.0.jar
jena-iri-3.0.0.jar
jena-shaded-guava-3.0.0.jar
jena-tdb-3.0.0.jar
jfact-5.0.3.jar
jigsaw-2.2.6.jar
jlibsedml-2.2.3.jar
jmathml-2.2.1.jar
jms-1.1.jar
jmxri-1.2.1.jar
jmxtools-1.2.1.jar
joda-time-2.9.7.jar
jsbml-1.5.jar
jsbml-arrays-1.5.jar
jsbml-comp-1.5.jar
jsbml-core-1.5.jar
jsbml-distrib-1.5.jar
jsbml-dyn-1.5.jar
jsbml-fbc-1.5.jar
jsbml-groups-1.5.jar
jsbml-layout-1.5.jar
jsbml-multi-1.5.jar
jsbml-qual-1.5.jar
jsbml-render-1.5.jar
jsbml-req-1.5.jar
jsbml-spatial-1.5.jar
jsbml-tidy-1.5.jar
jsonld-java-0.12.0.jar
json-simple-1.1.1.jar
jsoup-1.12.1.jar
jsr305-3.0.2.jar
jtidy-r938.jar
jul-to-slf4j-1.7.25.jar
junit-4.12.jar
libthrift-0.9.2.jar
log4j-1.2.15.jar
log4j-1.2-api-2.3.jar
log4j-api-2.8.2.jar
log4j-core-2.8.2.jar
log4j-slf4j-impl-2.1.jar
mail-1.4.jar
masymos-core-1.0.2.jar
metainf-services-1.8.jar
miriam-lib-1.1.6.jar
netty-all-4.1.32.Final.jar
owlapi-api-5.1.12.jar
owlapi-apibinding-5.1.12.jar
owlapi-compatibility-5.1.12.jar
owlapi-distribution-5.1.12.jar
owlapi-impl-5.1.12.jar
owlapi-oboformat-5.1.12.jar
owlapi-parsers-5.1.12.jar
owlapi-rio-5.1.12.jar
owlapi-tools-5.1.12.jar
paxtools-core-5.1.0.jar
rdf4j-model-2.3.2.jar
rdf4j-rio-api-2.3.2.jar
rdf4j-rio-binary-2.3.2.jar
rdf4j-rio-datatypes-2.3.2.jar
rdf4j-rio-jsonld-2.3.2.jar
rdf4j-rio-languages-2.3.2.jar
rdf4j-rio-n3-2.3.2.jar
rdf4j-rio-nquads-2.3.2.jar
rdf4j-rio-ntriples-2.3.2.jar
rdf4j-rio-rdfjson-2.3.2.jar
rdf4j-rio-rdfxml-2.3.2.jar
rdf4j-rio-trig-2.3.2.jar
rdf4j-rio-trix-2.3.2.jar
rdf4j-rio-turtle-2.3.2.jar
rdf4j-util-2.3.2.jar
RoaringBitmap-0.6.32.jar
slf4j-api-1.7.13.jar
slf4j-log4j12-1.7.12.jar
stax2-api-3.1.4.jar
staxmate-2.3.0.jar
trove4j-3.0.3.jar
woodstox-core-5.0.1.jar
xalan-2.7.0.jar
xercesImpl-2.8.0.jar
xml-apis-1.3.03.jar
xmlpull-1.1.3.1.jar
xmlutils-0.6.13.jar
xom-1.3.2.jar
xpp3_min-1.1.4c.jar
xstream-1.4.9.jar
xz-1.6.jar
zstd-proxy-3.5.13.jar
.. raw:: html
#. Finally, we need to add ``$Neo4JRoot/lib/ext`` to the servers classpath.
- Linux
- Open ``$Neo4JRoot/bin/neo4j`` and add ``:${NEO4J_LIB}/ext/*`` to CLASSPATH variable
.. code-block:: bash
build_classpath() {
CLASSPATH="${NEO4J_PLUGINS}:${NEO4J_CONF}:${NEO4J_LIB}/*:${NEO4J_LIB}/ext/*:${NEO4J_PLUGINS}/*"
# …
- Windows
- Open ``$Neo4JRoot/bin/Neo4j-Management/Get-Java.ps1`` and add ``;$($Neo4jServer.Home)/lib/ext/*`` to the Java command line:
.. code-block:: ps1
# Build the Java command line
$ClassPath="$($Neo4jServer.Home)/lib/*;$($Neo4jServer.Home)/plugins/*;$($Neo4jServer.Home)/lib/ext/*"
- Well done, you can now try to start MaSyMoS with :c_bash:`./bin/neo4j console`!
- Read about how to work with the server on :ref:`use_morre`.