------------------------------------------------------------------------------- This document is a summary of the VIVO installation process. This and other documentation can be found at: http://vivoweb.org/support PLEASE NOTE! These instructions assume that you are performing a clean install, including emptying an existing database and removing a previous installation from the Tomcat webapps directory. Product functionality may not be as expected if you install over an existing installation of an earlier version. Upgrade: If you are going to upgrade an existing service, please consult the upgrade.txt in this directory. VIVO Developers: If you are working on the VIVO source code from Subversion, the instructions are slightly different. Please consult developers.txt in this directory. ------------------------------------------------------------------------------- * I. Install required software * II. Create an empty MySQL database * III. Download the VIVO code distribution * IV. Specify deployment properties * V. Compile and deploy * VI. Set Tomcat JVM Parameters * VII. Start Tomcat * VIII. Log in and add RDF data * IX. Create an initial Lucene search index * X. Setup Apache Tomcat Connector * XI. Configure Pellet Reasoner * XII. Was the Installation Successful? ------------------------------------------------------------------------------- I. Install required software Before installing VIVO, make sure that the following software is installed on the desired machine: * Java (SE) 1.5 or higher [http://java.sun.com] * Apache Tomcat 5.x or higher [http://tomcat.apache.org] * Apache Ant [http://ant.apache.org] * MySQL 4.1 or higher [http://www.mysql.com] ------------------------------------------------------------------------------- II. Create an empty MySQL database Decide on a database name, username, and password. Log into your MySQL server and create a new database in MySQL that uses UTF-8 encoding. You will need these values for step IV when you configure the deployment properties. At the mysql command line you can create the database and user with these commands substituting your values for "dbname", "username", and "password". Most of the time, the "hostname" will equal "localhost". CREATE DATABASE dbname CHARACTER SET utf8; Grant access to a database user. For example: GRANT ALL ON dbname.* TO 'username'@'hostname' IDENTIFIED BY 'password'; Keep track of the database name, username, and password for Step IV. ------------------------------------------------------------------------------- III. Download the VIVO code distribution Download either a zip or gz file and unpack it on your web server: ftp://download.mannlib.cornell.edu/pub/Vivo/rel-1.0.zip ftp://download.mannlib.cornell.edu/pub/Vivo/rel-1.0.tar.gz ------------------------------------------------------------------------------- IV. Specify deployment properties At the top level of the unpacked distribution, copy the file example.deploy.properties to a file named simply deploy.properties. This file sets several properties used in compilation and deployment. Default namespace: VIVO installations make their RDF resources available for harvest using linked data. Requests for RDF resource URIs redirect to HTML or RDF representations as specified by the client. To make this possible, VIVO's default namespace must have certain structure and begin with the public web address of the VIVO installation. For example, if the web address of a VIVO installation is http://vivo.example.edu/ the default namespace must be set to http://vivo.example.edu/individual/ in order to support linked data. Similarly, if VIVO is installed at http://www.example.edu/vivo the default namespace must be set to http://www.example.edu/vivo/individual/ Note: The namespace must end with "individual/" (including the trailing slash). property name: Vitro.defaultNamespace example value: http://vivo.mydomain.edu/individual/ Directory where Vitro code is located. In most deployments, this is set to ./vitro-core, but it commonly points elsewhere during development. property name: vitro.core.dir example value: ./vitro-core Directory where tomcat is installed property name: tomcat.home example value: /usr/local/tomcat Name of your VIVO application property name: webapp.name example value: vivo Directory where uploaded files will be stored. Depending on your permissions and who Tomcat is running as, you may need to create these directories ahead of time. property name: upload.directory example value: /usr/local/vivo/data/uploads Directory where the Lucene search index will be built. Depending on your permissions and who Tomcat is running as, you may need to create these directories ahead of time. property name: LuceneSetup.indexDir example value: /usr/local/vivo/data/luceneIndex Specify an SMTP host that the form will use for sending e-mail (Optional). If this is left blank, the contact form will be hidden and disabled. property name: Vitro.smtpHost example value: smtp.servername.edu Specify the JDBC URL of your database. Change the end of the URL to reflect your database name (if it is not "vivo"). property name: VitroConnection.DataSource.url example value: jdbc:mysql://localhost/vivo Change the username to match the authorized user you created in MySQL property name: VitroConnection.DataSource.username example value: username Change the password to match the password you created in MySQL property name: VitroConnection.DataSource.password example value: password Specify the name of your first admin user for the VIVO application. This user will have an initial temporary password of 'defaultAdmin'. You will be prompted to create a new password on first login. property name: initialAdminUser example value: defaultAdmin ------------------------------------------------------------------------------- V. Compile and deploy At the command line, from the top level of the unpacked distribution directory, type: ant all to build VIVO and deploy to Tomcat's webapps directory. ------------------------------------------------------------------------------- VI. Set Tomcat JVM Parameters Currently, VIVO copies the contents of your RDF database into memory in order to serve Web requests quickly. (The in-memory copy and the underlying database are kept in synch as edits are performed.) VIVO will require more memory than that allocated to Tomcat by default. With most installations of Tomcat, the setenv.sh or setenv.bat file in Tomcat's bin directory is a convenient place to set the memory parameters. For example: export CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=64m" This sets Tomcat to allocate an initial heap of 1024 megabytes, a maximum heap of 1024 megabytes, and a PermGen space of 64 megs. 1024 megabytes is a minimum practical heap size for production installations storing data for large academic institutions, and additional heap space is preferable. For testing with small sets of data, 256m to 512m should be sufficient. If an OutOfMemoryError is encountered during VIVO execution, increasing the heap parameters and restarting Tomcat is the typical remedy. ------------------------------------------------------------------------------- VII. Start Tomcat Most Tomcat installations can be started by running startup.sh or startup.bat in Tomcat's bin directory. Point your browser to http://localhost:8080/vivo/ to test the application. If Tomcat does not start up, or the VIVO application is not visible, check the catalina.out file in Tomcat's logs directory. ------------------------------------------------------------------------------- VIII. Log in and add RDF data If the startup was successful, you will see a welcome message informing you that you have successfully installed VIVO. Click the "Log in" link near the upper right corner. Log in with the initialAdminUser username you set up in step IV. The initial password the initialAdminUser is defaultAdmin. On first login, you will be prompted to select a new password and verify it a second time. After verifying your new password, you will be presented with a menu of editing options. Here you can create OWL classes, object properties, data properties, and configure the display of data. Currently, any classes you wish to make visible on your website must be part of a class group, and there a number of visibility and display options available for each ontology entity. VIVO comes with a core VIVO ontology, but you may also upload other ontologies from an RDF file. Under the "Advanced Data Tools", click "Add/Remove RDF Data." Note that Vitro currently works best with OWL-DL ontologies and has only limited support for pure RDF data. You can enter a URL pointing to the RDF data you wish to load or upload a file on your local machine. Ensure that the "add RDF" radio button is selected. You will also likely want to check "create classgroups automatically." Clicking the "Index" tab in the navigation bar at the top left of the page will show a simple index of the knowledge base. See more documentation for configuring VIVO at http://vivoweb.org/support. ------------------------------------------------------------------------------- IX. Set the Contact Email Address (if using "Contact Us" form) If you have configured your application to use the "Contact Us" feature in Step IV (Vitro.smtpHost), you will also need to add an email address to the VIVO application. This is the email that the contact form submits to. It can be a list server or an individual's email address. Log in as a system administrator. Navigate to the "Site Admin" table of contents (link in the right side of the header). Go to "Site Information" (under "Site Configuration"). In the "Site Information Editing Form", enter a functional email address in the field "Contact Email Address." and submit the change. If you set the Vitro.smtpHost in Step IV and do NOT provide an email address in this step, your users will receive a java error in the interface. ------------------------------------------------------------------------------- X. Create an initial Lucene search index Invoke the indexing servlet by requesting http://localhost:8080/vivo/SearchIndex You will not see any output to the browser (though this will change in future versions). When your browser switches to a blank screen, the indexing has completed and the search box on the Vitro portal will be usable. Individuals that are created, edited, or deleted from the Vitro editing interface will trigger incremental updates of the search index. ------------------------------------------------------------------------------- XI. Set up Apache Tomcat Connector It is recommended that a Tomcat Connector such as mod_jk be used to ensure that the site address does not include the port number (e.g. 8080) and an additional reference to the Tomcat context name (e.g. /vivo). For example - http://example.com instead of http://example.com:8080/vivo Using the mod_jk connector allows for communication between Tomcat and the primary web server. The "Quick Start HowTo" on the Apache site http://tomcat.apache.org/connectors-doc/generic_howto/quick.html describes the minimum server configurations for several popular web servers. After setting up the mod_jk connector above, you will need to modify the Tomcat's server.xml ([tomcat root]/conf/) to respond to requests from Apache via the connector. Look for the directive and add the following properties: connectionTimeout="20000" maxThreads="320" keepAliveTimeout="20000" Note: the value for maxThreads (320) is equal to the value for MaxClients in the httpd.conf file. Locate the directive and update as follows: example.com ------------------------------------------------------------------------------- XII. Configure Pellet Reasoner VIVO uses the Pellet engine to perform reasoning, which runs in the background at startup and also when the knowledge base is edited. VIVO continues serving pages while the reasoner continues working; when the reasoner finishes, the new inferences appear. Inferred statements are cached in a database graph so that they are available immediately when VIVO is restarted. By default, Pellet is fed only an incomplete view of your ontology and only certain inferences are materialized. These include rdf:type, rdfs:subClassOf,owl:equivalentClass, and owl:disjointWith. This mode is typically suitable for ontologies with a lot of instance data. If you would like to keep the default mode, skip to the next step. To enable "complete" OWL inference (materialize all significant entailed statements), open "vitro-core/webapp/config/web.xml" and search for PelletReasonerSetup. Then change the name of the listener class to PelletReasonerSetupComplete. Because "complete" reasoning can be very resource intensive, there is also an option to materialize nearly all inferences except owl:sameAs and owl:differentFrom. This is enabled by specifying PelletReasonerSetupPseudocomplete. For ontologies with large numbers of individuals, this mode can offer enormous performance improvements over the "complete" mode. Finally, a class called PelletReasonerSetupPseudocompleteIgnoreDataproperties is provided to improve performance on ontologies with large literals where data property entailments are not needed. ------------------------------------------------------------------------------- XIII. Was the installation successful? If you have completed the previous steps, you have good indications that the installation was successful. * Step VII showed that Tomcat recognized the webapp, and that the webapp was able to present the initial page. * Step VIII verified that you can log in to the administrator account. * Step X initialized the Lucene Search system. Though there is very little feedback for a successful installation, there are dramatic indications for failures. Here is a simple test to see whether the ontology files were loaded: * Click on the "Index" link on the upper left, below the logo. You should see a "locations" section, with links for "Country" and "Geographic Location". The index is built in a background thread, so on your first login, you may see an empty index instead. Refresh the page periodically to see whether the index will be populated. This may take some time: with VIVO installed on a modest laptop computer, loading the ontology files and building the index took more than 5 minutes from the time that Tomcat was started. * Click on the "Country" link. You should see an alphabetical list of the countries of the world. Here is a test to see whether your system is configured to serve linked data: * Point your browser to the home page of your website, and click the "Log in" link near the upper right corner. Log in with the initialAdminUser username you set up in step IV. If this is your first time logging in, you will be prompted to change the password. * After you have successfully logged in, click "site admin" in the upper right corner. In the drop down under "Data Input", select "Faculty Member(core)" and click the "Add individual of this class" button. * Enter the name "test individual" under the field "Individual Name", scroll to the bottom, and click "Create New Record".You will be taken to the "Individual Control Panel". Make note of the value of the field "URI", it will be used in the next step. * Open a new web browser or browser tab to the page "http://marbles.sourceforge.net/". In the pink box on that page enter the URI of the individual you created in the previous step and click "open." * In the resulting page search for the URI of the "test individual". You should find it towards the bottom of the page next to a red dot followed by "redirect (303)" This indicates that you are successfully serving linked RDF data. If the URI of the "test individual" is followed by "failed (400)" you are not successfully serving linked data. Finally, test the search index (assuming you have created the initial Lucene index in Step X). * The search box is on the right side, directly opposite the "Index" link. Type the word "Australia" into the box, and click on the "Search" button.You should see a page of results, with links to countries that border Australia, individuals that include Australia, and to Australia itself.