Repository Management with Nexus
3.11. Nexus Directories
The following sections describe the various directories that are a part of any Nexus installation. When you install Nexus Open Source or Nexus Professional, you are creating two directories: a directory which contains the Nexus runtime and application often symlinked as nexus and a directory which contains your own configuration and data - sonatype-work/nexus. When you upgrade to a newer version of Nexus, you replace the Nexus application directory and retain all of your own custom configuration and repository data in sonatype-work/
The Sonatype Work directory sonatype-work is installed as a sibling to the nexus application directory, and the location of this directory can be configured via the nexus.properties file which is described in Section 3.11.2, “Nexus Configuration Directory”. Figure 3.13, “The Sonatype Work Directory” shows the Sonatype Nexus work directory with some of its sub-directories.
The Sonatype Work Nexus directory sonatype-work/nexus/ contains a number of sub-directories. Depending on the plugins installed and used some directories may or may be not present in your installation:
- This directory contains a log of all IP addresses accessing Nexus. The data can be viewed by clicking on Active Users Report in the Administration - Licensing tab in the Nexus user interface.
- This holds temporary files created when running Maven dependency queries in the user interface.
- If you have configured a scheduled job to backup Nexus configuration, this directory is going to contain a number of ZIP archives that contain snapshots of Nexus configuration. Each ZIP file contains the contents of the conf/ directory. (Automated backups are a feature of Nexus Professional.)
- The broker directory and its sub-directories contains the storage backend for the Smart Proxy messaging component.
- This directory contains the Nexus configuration. Settings that define the list of Nexus repositories, the logging configuration, the staging and procurement configuration, and the security settings are all captured in this directory.
- Contains the automatically generated key used to identify this Nexus instance for Smart Proxy usage
- Contains the database storing the User Token information, if that feature is enabled.
- Contains the bundled archives of data assembled for problem reporting.
- Holds cached reports from the Repository Health Check plugin.
- Contains a Nexus index for all repositories and repository groups managed by Nexus. A Nexus index is a Lucene index which is the standard for indexing and searching a Maven repository. Nexus maintains a local index for all repositories, and can also download a Nexus index from remote repositories.
- The nexus.log file that contains information about a running instance of Nexus. This directory also contains archived copies of Nexus log files. Nexus log files are rotated every day. To reclaim disk space, you can delete old log files from the logs directory.
- Contains the database supporting queries against NuGet repositories used for .NET package support in Nexus.
- If you are using the P2 repository management features of Nexus Professional, this directory contains a local cache of P2 repository artifacts.
- This directory contains any additionally installed plugins from third parties as documented in Section 20.1, “Installing Additional Plugins”.
- Stores data about the files contained in a remote repository. Each proxy repository has a sub-directory in the proxy/attributes/ directory and every file that Nexus has interacted with in the remote repository has an XML file which captures such data as the: last requested timestamp, the remote URL for a particular file, the length of the file, and the digests for a particular file among other things. If you need to backup the local cached contents of a proxy repository, you should also back up the contents of the proxy repository’s directory under proxy/attributes/
- Stores artifacts and metadata for Nexus repositories. Each repository is a sub-directory which contains the artifacts in a repository. If the repository is a proxy repository, the storage directory will contain locally cached artifacts from the remote repository. If the repository is a hosted repository, the storage directory will contain all artifacts in the repository. If you need to backup the contents of a repository, you should backup the contents of the storage directory.
- Contains templates for default repositories. If you examine the XML files in this directory, you will see that they contain default templates for each different type of repository. For example, the repository-default_proxy_release.xml file contains defaults for a Proxy repository with a release policy.
- Contains an index which Nexus uses to store events and other information to support internal operations. Nexus uses this index to store feeds and history.
- Folder used for temporary storage.
- If you have configured scheduled jobs to remove snapshot artifacts or to delete other information from repositories, the deleted data will be stored in this directory. To empty this trash folder, view a list of Nexus repositories, and then click on the Trash icon in the Nexus user interface.
The conf/ directory contains a number of files which allow for configuration and customization of Nexus. All of the files contained in this directory are altered by the Nexus administrative user interface. While you can change the configuration settings contained in these files with a text editor, Sonatype recommends that you modify the contents of these files using the Nexus administrative user interface. Depending on your Nexus version and the installed plugins the complete list of files may differ slightly.
- A groovy script for configuring low level properties for Smart Proxy.
- Further Smart Proxy backend configuration.
- Configuration for the Repository Health Check.
- logback.properties, logback.xml and logback-*.xml
- Contains logging configuration. If you need to customize the detail of log messages, the frequency of log file rotation, or if you want to connect your own, custom logging appenders, you should edit the logback-nexus.xml configuration file as desired. If you find log4j.properties files as well you can safely remove them since they are remnants from an old version and are not used anymore.
- Contains configuration for the latest version plugin. This XML file contains the location of the properties file which Nexus queries to check for a newer version of Nexus.
- The bulk of the configuration of Nexus is contained in this file. This file maintains a list of repositories, and all server-wide configuration like the SMTP settings, security realms, repository groups, targets, and path mappings.
- Contains PGP key server configuration.
- Contains configuration for the Nexus OSGi Bundle repository plugin in Nexus Professional.
- Contains configuration for the Nexus Procurement plugin in Nexus Professional.
- Contains global security configuration.
- Contains security configuration about users and roles.
- Contains configuration for the Nexus Staging Plugin in Nexus Professional.
After installing Nexus and creating the nexus symlink as described earlier, your nexus folder contains another conf directory. This directory contains configuration for the Jetty servlet container. You will only need to modify the files in this directory if you are customizing the configuration of Jetty servlet container, or the behaviour of the scripts that start Nexus.
The files and folders contained in this directory are:
- Defines the order in which resources and classes are loaded from the classpath. It is unlikely that even the most advanced Nexus users will ever need to customize the contents of this file.
- This file contains configuration variables which control the behaviour of Nexus and the Jetty servlet container. If you are customizing the port and host that Nexus will listen to, you would change the application-port and application-host properties defined in this file. If you wanted to customize the location of the Sonatype work directory, you would modify the value of the nexus-work property in this configuration file. Changing nexus-webapp-context-path allows you to configure the server context path Nexus will be available at.
- If this file is present in the conf/ directory, it will be used to configure Jetty.
The conf/examples/ directory contains sample Jetty configuration files which can be used to customize the behaviour of the Jetty servlet container:
- contains a jetty.xml sample with no customizations. This sample file listens on the "application-port" defined in nexus.properties
- Contains a jetty.xml sample which will configure Nexus to listen on an AJP port 8009. This configuration can be used if you are proxying your Nexus server with web server which understands the AJP protocol such as Apache httpd with the mod_proxy_ajp module.
- Contains a jetty.xml sample which configures Nexus to listen on both the "application-port" and "application-port-ssl" (as defined in nexus.properties). This sample configuration also contains the SSL redirect rule.
- Contains a jetty.xml sample which configures a response buffer size that will address performance issues on Windows 2003 Server, for more information about this fix see the Jetty Wiki
- Contains a jetty.xml sample which increases the headerBufferSize to 8k from the default of 4k. Documentation about the header buffer size can be found on the Jetty Wiki
- Contains a jetty.xml sample which should be used if you are proxying a Nexus instance with a web server that is handling SSL. For example, if you were proxying Nexus with Apache httpd server using mod_ssl you would use this configuration to configure the Jetty RewriteHandler
- Contains a jetty.xml sample which will only serve SSL encrypted content from "application-port" (as defined in nexus.properties
The conf/examples/proxy-https/ directory contains two files: apache2.conf and jetty.xml contains sample mod_proxy directives to configure Apache httpd to handle SSL.