Question
Is there advice on best practices for customizing Fedora 4 configuration files?
Best Practice 1
One recommended practice is to store modified configuration files outside of the unpacked war file.
This is an example of production Fedora JAVA_OPTS:
JAVA_OPTS="-Dfile.encoding=UTF-8 \ -Dfcrepo.home=/mnt/data/fcrepo \ -Dfcrepo.modeshape.configuration=file:/etc/fcrepo/repository.json \ -Dfcrepo.activemq.configuration=file:/etc/fcrepo/activemq.xml \ -Dfcrepo.ispn.configuration=/etc/fcrepo/infinispan.xml \ -Dfcrepo.auth.webac.authorization=/etc/fcrepo/root-authentication.ttl \ -Dfcrepo.spring.audit.configuration=file:/etc/fcrepo/audit.xml \ -Dlogback.configurationFile=/etc/fcrepo/logback.xml \ -Dfcrepo.ispn.alternative.cache=ispn.alt.cache \ -Dfcrepo.ispn.binary.cache=ispn.binary.cache \ -Dfcrepo.ispn.cache=ispn.cache \ -Dfcrepo.ispn.binary.alternative.cache=ispn.binary.alt.cache \ -Dfcrepo.ispn.repo.cache=ispn.repo.cache \ -Dfcrepo.modeshape.index.directory=modeshape.index \ -Dfcrepo.binary.directory=binary.store \ -Dfcrepo.activemq.directory=activemq \ -Dcom.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean.default.objectStoreDir=arjuna.common.object.store \ -Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=arjuna.object.store \ -Dnet.sf.ehcache.skipUpdateCheck=true \ -Dfcrepo.audit.container=/audit \ -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled \ -XX:+UseG1GC -XX:ConcGCThreads=5 \ -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 \ -XX:+UseParNewGC -XX:MaxMetaspaceSize=512M \ -Xms1024m -Xmx2048m"
You will see that all of the configuration files are stored outside of the unpacked war file. In this case, that is /etc/fcrepo
, but it could be any place that makes sense for your system.
All of these configuration files may be highly customized, and by placing them in an administrator-controlled directory, any local changes are not overwritten when re-deploying a war file.
At a minimum, it is recommended that production deployments of Fedora store at least the following configuration files separately, and if you customize these at all, you should absolutely do this:
* repository.json (this is the central config for Modeshape, and you should control that) * activemq.xml (common update: turn the topic into a queue) * root-authentication.ttl (if you are using webac) * logback.xml (common update: direct logging to /var/log/fcrepo/fcrepo.log rather than catalina.out)