# this is a script to build a first node of local Fedora Commons ver. 4.2.0 # cluster mkdir ~/f1 cd ~/f1 git clone https://github.com/fcrepo4/fcrepo4.git cd fcrepo4 git checkout tags/fcrepo-4.2.0 # replace defaults with clustered defaults in 4 files line1repo="p:repositoryConfiguration=\"\${fcrepo.modeshape.configuration:classpath:/config/minimal-default/repository.json}\"/>" line2repo="p:repositoryConfiguration=\"\${fcrepo.modeshape.configuration:classpath:/config/clustered/repository.json}\"/>" cp fcrepo-webapp/src/main/resources/spring/repo.xml \ fcrepo-webapp/src/main/resources/spring/repo.xml.bak sed -e "s@${line1repo}@${line2repo}@g" \ < fcrepo-webapp/src/main/resources/spring/repo.xml.bak \ > fcrepo-webapp/src/main/resources/spring/repo.xml line1repository="\"cacheConfiguration\" : \"\${fcrepo.ispn.configuration:config/infinispan/leveldb/infinispan.xml}\"," line2repository="\"cacheConfiguration\" : \"\${fcrepo.ispn.configuration:config/infinispan/clustered/infinispan.xml}\"," cp fcrepo-configs/src/main/resources/config/clustered/repository.json \ fcrepo-configs/src/main/resources/config/clustered/repository.json.bak sed -e "s@${line1repository}@${line2repository}@g" \ < fcrepo-configs/src/main/resources/config/clustered/repository.json.bak \ > fcrepo-configs/src/main/resources/config/clustered/repository.json # in this file replace in two places line1infinispan="" line2infinispan="" line3infinispan="xsi:schemaLocation=\"urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd\"" line4infinispan="xsi:schemaLocation=\"urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd\ urn:infinispan:config:store:leveldb:6.0 http://infinispan.org/schemas/infinispan-cachestore-leveldb-config-6.0.xsd\"\n\ xmlns:store=\"urn:infinispan:config:store:leveldb:6.0\"" cp fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml \ fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml.bak sed -e "s@${line1infinispan}@${line2infinispan}@g" -e "s@${line3infinispan}@${line4infinispan}@g"\ < fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml.bak \ > fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml.replication # then do a multiline replacement awk '{ if ( $0 ~ /.*"; } else if ( $0 ~ /.*FedoraRepositoryMetaData\/storage.*/ ) { # end of singleFile tag for netadata - replace with another leveldbStore tag inq = 0; print " "; } else if ( $0 ~ /.*FedoraRepositoryBinaryData\/storage.*/ ) { # end of singleFile tag or binary data - leave it as is inq = 0; buf = buf "\n" $0; print buf; } else if (inq == 1 ) { buf = buf "\n" $0; } else if ( inq == 0 ) { print $0; } }' fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml.replication \ > fcrepo-configs/src/main/resources/config/infinispan/clustered/infinispan.xml line1jgroups="port_range=\"30\"" line2jgroups="port_range=\"0\"" line3jgroups="port_range=\"5\"" line4jgroups="port_range=\"0\"" cp fcrepo-configs/src/main/resources/config/jgroups-fcrepo-tcp.xml \ fcrepo-configs/src/main/resources/config/jgroups-fcrepo-tcp.xml.bak sed -e "s@${line1jgroups}@${line2jgroups}@g" -e "s@${line3jgroups}@${line4jgroups}@g" \ < fcrepo-configs/src/main/resources/config/jgroups-fcrepo-tcp.xml.bak \ > fcrepo-configs/src/main/resources/config/jgroups-fcrepo-tcp.xml # now need to specify java system properties jgroups.tcp.address="local IPv4 or FQDN", # jgroups.tcp.port="780x" and jgroups.tcpping.initial_hosts="host1[780y],host2[780z]" # Comments from https://wiki.duraspace.org/display/FEDORA4x/Deploying+a+Fedora+Cluster : # - The initial_hosts attribute should only include remote hosts for the local # node, not itself. # - The num_initial_members should match the count of remote hosts, i.e. it # does not include the local node either. # - If you are running just one port on each host, then port_range will be 0. # - IP resolution is important if you use DNS names. The locally resolved IP # of each remote host must match the TCP@bind_addr in the remote host config. # build Fedora MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m" mvn install