From ccbaa63b369d63ceb5e18b10dbed4457861dd86c Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Wed, 10 Oct 2018 21:52:46 +0100 Subject: [PATCH] modify the nexus installation directory layout to match the recommend layout --- README.md | 63 +++++++++++++++++++++++++++++++++--- provision/provision-nexus.sh | 26 +++++++-------- 2 files changed, 72 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8d0bb16..16716ce 100644 --- a/README.md +++ b/README.md @@ -112,26 +112,81 @@ You can also see them with `journalctl -u nexus`. Nexus uses [OrientDB](https://en.wikipedia.org/wiki/OrientDB) as its database. To directly use it from the console run: ```bash -systemctl stop nexus -su nexus -s /bin/bash -c 'cd /opt/nexus && java -jar ./lib/support/nexus-orient-console.jar' +systemctl stop nexus # make sure nexus is not running while you use the database. +su -s /bin/bash nexus # switch to the nexus user. +nexus_home=/opt/nexus/nexus-3.13.0-01 # make sure you have the correct version here. +nexus_data=$nexus_home/../sonatype-work/nexus3 +function orientdb-console { + java -jar $nexus_home/lib/support/nexus-orient-console.jar $* +} +cd $nexus_data +ls -laF db | grep ^d # list the databases +orientdb-console # start the console. ``` Then connect to one of the databases, e.g. to the `security` database: ```plain -connect plocal:nexus3/db/security admin admin +connect plocal:db/security admin admin ``` -Then execute some commands, e.g.: +Then execute some commands and exit the orientdb console, e.g.: ```plain help +config list classes +exit +``` + +Exit the nexus user shell: + +```bash +exit +``` + +And start nexus again: + +```bash +systemctl start nexus ``` For more information about the console see [Running the OrientDB Console](http://orientdb.com/docs/master/Tutorial-Run-the-console.html). +## OrientDB Check Databases + +Execute the commands from the OrientDB section to stop nexus, to enter the +nexus account and create the orientdb-console function, then: + +```bash +# check the databases. +# NB use CHECK DATABASE -v to see the verbose log. +orientdb-console 'CONNECT PLOCAL:db/accesslog admin admin; CHECK DATABASE;' +orientdb-console 'CONNECT PLOCAL:db/analytics admin admin; CHECK DATABASE;' +orientdb-console 'CONNECT PLOCAL:db/audit admin admin; CHECK DATABASE;' +orientdb-console 'CONNECT PLOCAL:db/component admin admin; CHECK DATABASE;' +#orientdb-console 'CONNECT PLOCAL:db/component admin admin; REPAIR DATABASE;' +orientdb-console 'CONNECT PLOCAL:db/config admin admin; CHECK DATABASE;' +orientdb-console 'CONNECT PLOCAL:db/security admin admin; CHECK DATABASE;' +#orientdb-console 'CONNECT PLOCAL:db/OSystem admin admin; CONFIG; LIST CLASSES;' # XXX fails to connect. see https://groups.google.com/a/glists.sonatype.com/forum/#!topic/nexus-users/7dVofIwC5HM +``` + +Then start nexus. + +## OrientDB Export Databases + +Execute the commands from the OrientDB section to stop nexus, to enter the +nexus account and create the orientdb-console function, then: + +```bash +# export the databases. +orientdb-console 'CONNECT PLOCAL:db/config admin admin; EXPORT DATABASE /tmp/nexus-export-config.json.gz;' +#orientdb-console 'CONNECT PLOCAL:db/security admin admin; EXPORT DATABASE /tmp/nexus-export-security.json.gz;' +orientdb-console 'CONNECT PLOCAL:db/component admin admin; EXPORT DATABASE /tmp/nexus-export-component.json.gz;' + ## Reference * [How to reset a forgotten admin password in Nexus 3.x](https://support.sonatype.com/hc/en-us/articles/213467158-How-to-reset-a-forgotten-admin-password-in-Nexus-3-x) +* [Backup and Restore](https://help.sonatype.com/repomanager3/backup-and-restore) +* [Upgrading](https://help.sonatype.com/repomanager3/upgrading) diff --git a/provision/provision-nexus.sh b/provision/provision-nexus.sh index 392b77f..08f93ab 100644 --- a/provision/provision-nexus.sh +++ b/provision/provision-nexus.sh @@ -32,7 +32,9 @@ install -d -o root -g nexus -m 750 /opt/nexus pushd /opt/nexus # see http://www.sonatype.com/download-oss-sonatype # see https://help.sonatype.com/display/NXRM3 -nexus_tarball=nexus-3.13.0-01-unix.tar.gz +nexus_version=3.13.0-01 +nexus_home=/opt/nexus/nexus-$nexus_version +nexus_tarball=nexus-$nexus_version-unix.tar.gz nexus_download_url=https://sonatype-download.global.ssl.fastly.net/nexus/3/$nexus_tarball nexus_download_sha1=baf74b6d61254fd409ca8a058f113c8e18e55b0f wget -q $nexus_download_url @@ -40,17 +42,15 @@ if [ "$(sha1sum $nexus_tarball | awk '{print $1}')" != "$nexus_download_sha1" ]; echo "downloaded $nexus_download_url failed the checksum verification" exit 1 fi -tar xf $nexus_tarball --strip-components 1 +tar xf $nexus_tarball # NB this creates the $nexus_home (e.g. nexus-3.13.0-01) and sonatype-work directories. rm $nexus_tarball -chmod 700 nexus3 -chown -R nexus:nexus nexus3 install -d -o nexus -g nexus -m 700 .java # java preferences are saved here (the default java.util.prefs.userRoot preference). -install -d -o nexus -g nexus -m 700 nexus3/etc -grep -v -E '\s*##.*' etc/nexus-default.properties >nexus3/etc/nexus.properties -sed -i -E 's,(application-host=).+,\1127.0.0.1,g' nexus3/etc/nexus.properties -sed -i -E 's,nexus-pro-,nexus-oss-,g' nexus3/etc/nexus.properties -diff -u etc/nexus-default.properties nexus3/etc/nexus.properties || true -sed -i -E 's,\.\./sonatype-work/,,g' bin/nexus.vmoptions +install -d -o nexus -g nexus -m 700 sonatype-work/nexus3/etc +chown -R nexus:nexus sonatype-work +grep -v -E '\s*##.*' $nexus_home/etc/nexus-default.properties >sonatype-work/nexus3/etc/nexus.properties +sed -i -E 's,(application-host=).+,\1127.0.0.1,g' sonatype-work/nexus3/etc/nexus.properties +sed -i -E 's,nexus-pro-,nexus-oss-,g' sonatype-work/nexus3/etc/nexus.properties +diff -u $nexus_home/etc/nexus-default.properties sonatype-work/nexus3/etc/nexus.properties || true popd @@ -64,7 +64,7 @@ fi # start nexus. -cat >/etc/systemd/system/nexus.service <<'EOF' +cat >/etc/systemd/system/nexus.service <