Configuring the Runtime Environment
This section details configuring the Nexus Repository runtime with recipes for specific tasks. Configuration is separated into the following categories: the Java Virtual Machine and the Nexus Application environments.
See the Directories topic to learn about the $install-dir
and $data-dir
in the Nexus Repository archive.
Java Virtual Machine Environment
The startup of the Nexus Repository Java Virtual Machine (JVM) is managed within the installation directory under the $install-dir/bin
directory.
The application startup loads JVM arguments from the Java properties file $install-dir/bin/nexus.vmoptions
. The file specifies Java tool arguments, one per line, in Java properties file format.
To edit Java options:
Open
$install-dir/bin/nexus.vmoptions
in a text editorSpecify each Java option on a new line.
Save the file with permission and ownership of the user who owns the Nexus Repository process.
-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=../sonatype-work/nexus3/log/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties -Dkaraf.data=../sonatype-work/nexus3 -Dkaraf.log=../sonatype-work/nexus3/log -Djava.io.tmpdir=../sonatype-work/nexus3/tmp -Dkaraf.startLocalConsole=false -Djava.endorsed.dirs=lib/endorsed
Memory
Before changing the default memory settings, review the memory guidelines. Changing settings requires adjusting all 3 values. The -Xms
and -Xmx
settings must always have the same value.
Locate the lines that configure memory:
-Xms2703M -Xmx2703M -XX:MaxDirectMemorySize=2703M
Edit the values of each setting using the following format. The size is a number and the literal unit letters represent gigabytes (g,G) , megabytes (m,M), or kilobytes (k,K).
-Xmssize[g|G|m|M|k|K] -Xmxsize[g|G|m|M|k|K] -XX:MaxDirectMemorySize=size[g|G|m|M|k|K]
Data Directory
The Data Directory is used to store the content that you want to preserve.
Set the value as an absolute path or a path relative to the $install-dir/bin
directory.
-Dkaraf.data=/opt/sonatype-work/nexus3 -Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp -XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log -Dkaraf.log=/opt/sonatype-work/nexus3/log
Temporary Directory
Nexus Repository uses the Java virtual machine temporary directory for downloading and editing files. The temporary directory is set inside of the data directory to isolate file ownership and permissions under a single directory tree.
Edit the following line with the new directory.
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
Do not manipulate files in the temp directory
Make sure the disk has more than 1GB of free space
Do not use the noexec mount option for the location that contains the tmp directory The tmp directory requires
exec
permissions by the user owning the repository manager process. Whennoexec
is set on the tmp directory, Nexus Repository fails on start-up with the following message:java.lang.UnsatisfiedLinkError failed to map segment from shared object: Operation not permitted
Nexus Application Environment
The main location for the application configuration files is the $install-dir/etc
directory. This directory includes one properties file and several nested directories:
fabric
Configuration files for Ehcache, Elasticsearch, and OrientDB
karaf
Configuration files for Apache Karaf, including:
config.properties
The main configuration for the Apache Karaf runtime. This file should not be modified.
custom.properties
Customizable configuration used by Apache Karaf. This file can be used to pass additional parameters to the Apache Karaf container.
org.apache.*, org.ops4j.*
Various Karaf and OSGi-related configuration files
system.properties
System properties used for the JVM and application start-up
jetty
Eclipse Jetty is used as the webserver for the Nexus Repository application. We manage configuration files for Eclipse Jetty in this directory.
See changing the thread pool as an example of this configuration.
logback
Logger definition for the log file name, logging levels, pattern layout, and rotation rules. The configuration files for logback including:
See Logging for more information on adjusting the logging configuration.
logback.xml
For the
nexus.log
andtasks.log
fileslogback-access.xml
For the
request.log
file
ssl
A directory to put keystores when configuring HTTPS
See Configuring SSL for details.
nexus-default.properties
$install-dir/etc/nexus-default.properties
This file contains the system default property values such as the main HTTP connector port and the context path. This file should not be modified rather configuration changes should be maintained in the nexus.properties
file stored in the data directory.
Keeping the application configuration in the data directory simplifies upgrading as when new application properties are added you do not have to find the difference between the two files.
nexus.properties
$data-dir/etc/nexus.properties
Configuration stored in the nexus.properties
file overrides the settings found the nexus-default.properties
file. This file provides a more simple upgrade process as custom configuration is maintained separately from the default application configuration.
The $data-dir/etc/nexus.properties
file is created the first time Nexus Repository is started. When you need to add configuration before the the first start-up, manually created file with any of the customizations stored there.
Application Port
We recommend configuring Nexus Repository behind a proxy server when directing traffic from the domain to the service. From the running server, you may access the service directly using the localhost and the default port for the application, 8081
.
http://localhost:8081/
Set the port by adding the following line to your nexus.properties file:
application-port=8081
See Setting up SSL to use a secured port instead of HTTP.
Application Context Path
The application context path is the directory found after the domain name in the sites URL. By default, this value is set to a slash (/)
to locate the service at the root of the domain.
The location may be changed by setting the nexus-context-path
property in the nexus.properties
file.
nexus-context-path=/nexus
In the above configuration, the exposed URL is now https://your_url.domain/nexus/