Difference between revisions of "Nexus"

 
(5 intermediate revisions by the same user not shown)
Line 3: Line 3:
  
 
This page explains how to setup and configure NEXUS Maven repositories.
 
This page explains how to setup and configure NEXUS Maven repositories.
 +
 +
For Nexus clients see [[Nexus Maven configuration]]
 +
  
  
Line 10: Line 13:
  
  
b) Create user / group
+
 
 +
=Installation=
 +
 
 +
 
 +
==Create user / group==
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 21: Line 28:
  
  
c) You need to create a root folder to host all the artifacts
+
==Prepare work folder==
 +
 
 +
You need to create a root folder to host all the artifacts. !!! This will be bigger and bigger over time !!!
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 30: Line 39:
  
  
 
+
==Get binaries==
 
 
=Installation=
 
  
 
Download '''Nexus OSS''' as ''Nexus Open-Source Server'' - take the ZIP format
 
Download '''Nexus OSS''' as ''Nexus Open-Source Server'' - take the ZIP format
Line 46: Line 53:
  
  
Set rights
+
==Set rights==
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 52: Line 59:
 
chown -R nexus:nexus /opt/nexus-2.11.4-01
 
chown -R nexus:nexus /opt/nexus-2.11.4-01
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
 
=Configuration=
 
  
  
Line 78: Line 81:
 
runtime=${bundleBasedir}/nexus/WEB-INF
 
runtime=${bundleBasedir}/nexus/WEB-INF
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
  
Line 86: Line 88:
 
ln -s /opt/nexus/logs/wrapper.log /var/log/nexus.log
 
ln -s /opt/nexus/logs/wrapper.log /var/log/nexus.log
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
  
Line 104: Line 105:
 
#The PID directory must be a directory where you the runtime user can Read/Write
 
#The PID directory must be a directory where you the runtime user can Read/Write
 
PIDDIR="/opt/nexus"
 
PIDDIR="/opt/nexus"
 +
</syntaxhighlight>
 +
 +
 +
==Start / stop server==
 +
 +
To start|stop the server:
 +
 +
<syntaxhighlight lang="bash">
 +
/opt/nexus/bin/nexus start
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 128: Line 138:
 
vim /opt/nexus/bin/nexus
 
vim /opt/nexus/bin/nexus
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
==Start Nexus on boot==
 +
 +
 +
<syntaxhighlight lang="bash">
 +
vim /opt/nexus/bin/nexus
 +
</syntaxhighlight>
 +
 +
 +
Add the following declaration after the first line <code>#!/bin/sh</code> :
 +
 +
<syntaxhighlight lang="bash">
 +
### BEGIN INIT INFO
 +
# Provides:            Nexus
 +
# Required-Start:      $all
 +
# Required-Stop:
 +
# Default-Start:        2 3 4 5
 +
# Default-Stop:        0 1 6
 +
# Short-Description:    Nexus
 +
### END INIT INFO
 +
</syntaxhighlight>
 +
 +
 +
Register the program to the boot sequence:
 +
 +
<syntaxhighlight lang="bash">
 +
cd /etc/init.d/
 +
update-rc.d nexus defaults
 +
</syntaxhighlight>
 +
  
  
Line 138: Line 179:
 
<syntaxhighlight lang="apache">
 
<syntaxhighlight lang="apache">
 
   ## Proxy to NEXUS
 
   ## Proxy to NEXUS
   <Location /nexus >
+
   <Location /nexus/ >
 
       ProxyPass http://localhost:9081/nexus/
 
       ProxyPass http://localhost:9081/nexus/
 
       ProxyPassReverse http://localhost:9081/nexus/
 
       ProxyPassReverse http://localhost:9081/nexus/
Line 150: Line 191:
 
=Nexus server access=
 
=Nexus server access=
  
The default user and password are:
+
You can access your server on http://myServer/nexus/ (Don't forget the end '/')
* User:    '''admin'''
 
* Pwd:    '''admin123'''
 
 
 
 
 
 
 
 
 
=Maven client configuration=
 
 
 
Basic configuration of the maven clients
 
 
 
Login as admin, locate predefined repositories. All repositories of type “proxy” need to change “Download Remote Indexes” property  to true in the configuration tab.
 
 
 
As you see there are several types of repositories.
 
 
 
    proxy – acts as proxy for external repository.
 
    hosted – repository that managed artifact produced by you
 
    virtual – kind of adapter for e.g transforming maven1 to maven 2 format.
 
    group – maybe not a repository in sonatyp’s terminology but behaves like one. A group groups several repositories to one exposing result as single URI.
 
 
 
Per default there is  a group “public” present. This group includes all the needed stuff, we just need to tell our maven clients to use this group. Maybe the easiest and flexiblest way to do so, is to use a mirror in settings.xml of your local maven.
 
<mirrors>
 
  <mirror>
 
    <id>nexus</id>
 
    <mirrorOf>*</mirrorOf>
 
  <url>http://YOR_NEXUS_HOST:8081/nexus/content/groups/public</url>
 
  </mirror>
 
</mirrors>
 
 
 
Then we use a power of Maven Profiles and define new repositories they are magically (consider “*” in the mirror declaration) maps to the mirror.
 
<profile>
 
    <id>nexus</id>
 
    <!--all requests to nexus via the mirror -->
 
    <repositories>
 
      <repository>
 
        <id>central</id>
 
        <url>http://central</url>
 
        <releases><enabled>true</enabled></releases>
 
        <snapshots><enabled>true</enabled></snapshots>
 
      </repository>
 
    </repositories>
 
    <pluginRepositories>
 
      <pluginRepository>
 
        <id>central</id>
 
        <url>http://central</url>
 
        <releases><enabled>true</enabled></releases>
 
        <snapshots><enabled>true</enabled></snapshots>
 
      </pluginRepository>
 
    </pluginRepositories>
 
  </profile>
 
  
Do not forgete to activate thins new profile
+
The default users and passwords are:
<activeProfiles>
 
    <activeProfile>nexus</activeProfile>
 
</activeProfiles>
 
  
Now your maven client knows only your nexus and everything it needs and how it gets it, should be controlled by nexus.
 
  
 +
{| class="wikitable"
 +
|-
 +
! login !! password
 +
|-
 +
| admin || admin123
 +
|-
 +
| deployment || deployment123
 +
|-
 +
| anonymous ||
 +
|}
  
=References=
 
  
* http://alexander.holbreich.org/2012/10/sonatype-nexus-setup/
+
To change the password go to NEXUS > log-in > Security menu (left) > Users

Latest revision as of 10:53, 12 September 2015


This page explains how to setup and configure NEXUS Maven repositories.

For Nexus clients see Nexus Maven configuration


Requirements

a) You need to setup Maven


Installation

Create user / group

# Create group
addgroup --system "nexus"
 
# Create Nexus user (home directory must be Nexus)
adduser --home /opt/nexus --disabled-login --disabled-password nexus


Prepare work folder

You need to create a root folder to host all the artifacts. !!! This will be bigger and bigger over time !!!

mkdir -p /home/nexus
chmod -R 777 /home/nexus
chown -R nexus:nexus /home/nexus


Get binaries

Download Nexus OSS as Nexus Open-Source Server - take the ZIP format

cd /opt
wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
tar xzvf nexus-latest-bundle.tar.gz
rm nexus-latest-bundle.tar.gz
ln -s /opt/nexus-2.11.4-01/ /opt/nexus


Set rights

chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /opt/nexus-2.11.4-01


Set nexus parameters

Adjust the port number and root context path, if required

vim /opt/nexus/conf/nexus.properties


Set:

application-port=9081
application-host=127.0.0.1
nexus-webapp-context-path=/nexus

## Nexus section
## nexus-work ==>> folders where the artifacts are going to be saved. You must choose a folder with a lot of disk!
nexus-work=/home/nexus
runtime=${bundleBasedir}/nexus/WEB-INF


Log symlink

ln -s /opt/nexus/logs/wrapper.log /var/log/nexus.log


Set Nexus user and rights

vim /opt/nexus/bin/nexus


# Set the correct home
NEXUS_HOME="/opt/nexus"

#uncomment and adjust
RUN_AS_USER="nexus"
#The PID directory must be a directory where you the runtime user can Read/Write
PIDDIR="/opt/nexus"


Start / stop server

To start|stop the server:

/opt/nexus/bin/nexus start


ERROR Fix

If you encounter the Failed to start Nexus OSS error, then you need to:

chown -R nexus:nexus /opt/sonatype-work


Run Nexus from anywhere

Set the NEXUS_HOME into the start script. Without it you cannot run Nexus as a service!

ln -s /opt/nexus/bin/nexus /usr/bin/nexus
ln -s /opt/nexus/bin/nexus /etc/init.d/nexus

vim /opt/nexus/bin/nexus


Start Nexus on boot

vim /opt/nexus/bin/nexus


Add the following declaration after the first line #!/bin/sh :

### BEGIN INIT INFO
# Provides:             Nexus
# Required-Start:       $all
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Nexus
### END INIT INFO


Register the program to the boot sequence:

cd /etc/init.d/
update-rc.d nexus defaults



Apache2 proxy

Put the following lines into your Apache2 proxy configuration:


   ## Proxy to NEXUS
   <Location /nexus/ >
       ProxyPass http://localhost:9081/nexus/
       ProxyPassReverse http://localhost:9081/nexus/
       Require all granted
       satisfy any
   </Location>


Nexus server access

You can access your server on http://myServer/nexus/ (Don't forget the end '/')

The default users and passwords are:


login password
admin admin123
deployment deployment123
anonymous


To change the password go to NEXUS > log-in > Security menu (left) > Users