It is possible to run multiple instances of OpenMRS in the same servlet container instance. OpenMRS looks up database connection properties from the runtime properties file and so the different instances can connect to different databases. The runtime properties file lookup is based on the name of the webapp, so creating a second instance is (almost) as easy as renaming the war file and deploying it.
For servlet container deployments (like Tomcat)
- Rename the war file to something new (like openmrs2)
- Deploy that war file and go to http://localhost:8080/openmrs2
- Run through the database setup in the initialization wizard that comes up
You might want to change the location of the application data directory usingĀ runtime properties. You can also change the folder where modules are stored using a global property: module_repository_folder. You can use either a relative path or an absolute path.
If you don't change either of those, data stored on the file system (like which modules to load at startup, cached data exports, etc.) will be shared by both instances.
For standalone deployments
TBD
For developers using Jetty
The standard "mvn jetty:run" command in the webapp folder starts "openmrs" on port 8080. You can start a second instance of openmrs on a different port and with a different context path by using two Java properties: webapp.name and jetty.port:
mvn jetty:run -Dwebapp.name=openmrs2 -Djetty.port=8081
You might want to change the location of the application data directory using a runtime property. You can also change the folder where modules are stored using a global property: module_repository_folder. You can use either a relative path or an absolute path.