How To Install Latest Sonatype Nexus 3 on Linux
- Last Updated On: September 28, 2019
- By: devopscube
Sonatype Nexus is one of the best repository managers out there. It is some tool that you cannot avoid in your CI/CD pipeline. It effectively manages deployable artifacts.
Sonarqube requirements
- Minimum 1 VCPU & 2 GB Memory
- Server firewall opened for port 22 & 8081
- OpenJDK 8
- All Nexus process should run as a non-root nexus user.
Note: For production setup, please consider minimum production hardware requirements based on the nexus usage and data storage. Checkout the official system requirements document for detailed information
Sonatype Nexus 3 on Linux ec2
This article guides you to install and configure Sonatype Nexus 3 in a secure way on an ec2 Linux System.
Note: This was tested on a Redhat machine and it will work on Centos or related Linux flavours as well.
Step 1: Login to your Linux server and update it. Also install required utilities.
sudo yum update -y
sudo yum install wget -y
Step 2: Install OpenJDK 1.8
sudo yum install java-1.8.0-openjdk.x86_64 -y
Step 3: Create a directory named app and cd into the directory.
sudo mkdir /app && cd /app
Step 4: Download the latest nexus. You can get the latest download links fo for nexus from here.
sudo wget -O nexus.tar.gz https://download.sonatype.com/nexus/3/latest-unix.tar.gz
Untar the downloaded file.
sudo tar -xvf nexus.tar.gz
Rename the untared file to nexus.
sudo mv nexus-3* nexus
Step 5: As a good security practice, it is not advised to run nexus service with any sudo user. So create a new user named nexus.
sudo adduser nexus
Change the ownership of nexus files and nexus data directory to nexus user.
sudo chown -R nexus:nexus /app/nexus
sudo chown -R nexus:nexus /app/sonatype-work
Step 6: Open /app/nexus/bin/nexus.rc file
sudo vi /app/nexus/bin/nexus.rc
Uncomment run_as_user parameter and set it as following.
run_as_user="nexus"
Step 7: If you want to change the default nexus data directory, open nexus properties file and change the data directory “-Dkaraf.data” parameter to a preferred location as shown below. If you dont specify anything, by default nexus data directory will be set to /app/sonatype-work/nexus3
Tip: For production setup, it is is always better to mount the nexus data directory to a separate data disk attached to the server. So that backup and restore can be done easily.
sudo vi /app/nexus/bin/nexus.vmoptions
An example configuration is shown below.
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-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=/nexus/nexus-data
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
Running Nexus as a System Service
It is better to have systemd entry to manage nexus using systemctl. Follow the steps given below for the setup.
Create a nexus systemd unit file.
sudo vi /etc/systemd/system/nexus.service
Add the following contents to the unit file.
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
User=nexus
Group=nexus
ExecStart=/app/nexus/bin/nexus start
ExecStop=/app/nexus/bin/nexus stop
User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
Manage Nexus Service
Now we have all the configurations in place to run nexus.
Execute the following command to add nexus service to boot.
sudo chkconfig nexus on
To start the Nexus service, use the following command.
sudo systemctl start nexus
The above command will start the nexus service on port 8081. To access the nexus dashboard, visit http://:8081. You will be able to see the nexus homepage as shown below.
To log in, use the default username and password.
Default username is admin
You can find the default admin password in /app/sonatype-work/nexus3/admin.password
file.
cat /app/sonatype-work/nexus3/admin.password
For stopping,
sudo systemctl stop nexus
For restarting,
sudo systemctl restart nexus
You Might Like: How To Setup Latest Nexus OSS On Kubernetes
devopscube
Other Interesting Blogs
7 Numpy Practical Examples: Sample Code for Beginners
In the previous tutorial, we have discussed some basic concepts of NumPy in Python Numpy Tutorial For Beginners With Examples. In this
How to Setup and Configure Consul Agent On Client Mode
In our last consul post, we have explained the steps to setup up a multi-node consul cluster which runs on server more.
List of Linux Commands Every Developer Should Know
At some point in you developer career , you will have to work with Linux Systems and you will be looking for
Comments
Thank you for doing this
nexus gets disconnect. Please tell me how do re-activate it
@saurabh can you eloborate the issue
I downloaded the sonatype nexus in Linux(Centos7). While the repo url opens but the server gets disconnected too frequently inspite of a good network connection. Please tell me how to resolve this issue.http://192.168.117.128:8081/#admin/repository/repositories
192.168.117.128 looks like a private IP…are you setting it up on private data center?
Also, try pinging the IP and see if there is a diconnect
Thanks! it works 🙂
Same issue for me too as posted by Yogendra, as not able to access nexus 3 using port 8081. Please help.
Does it make sense (or even is it possible) to run nexus service as a user other than “nexus” to avoid adding the user “nexus” to sudoers group?
Thanks!
I have created new EC2 instance RedHat7.5 and install nexus 3 as per above steps. I have successfully installed Nexus but unable to open http://172…..:8081/ url
Also, I have setup apache on same machine.
Kindly suggest, what i need to do.
It has to be added that access permissions must also be added to the sonatype-work folder.
sudo ln -s /app/nexus/bin/nexus /etc/init.d/nexus did not work for me with OSS2.x because the nexus script is calling itself when it is run by a different user than specified in RUN_AS.
I solved it by defining a proper systemd unit file which is better anyway:
vi /etc/systemd/system/nexus.service
[Unit]
Description=Nexus Repository Manager OSS 2.x
After=syslog.target network.target
[Service]
User=nexus
Group=nexus
Type=forking
PIDFile=/opt/nexus-2.14.5-02/bin/jsw/linux-x86-64/nexus.pid
ExecStart=/opt/nexus-2.14.5-02/bin/nexus start
ExecStop=/opt/nexus-2.14.5-02/bin/nexus stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
:wq
Hi Rene,
This article is for nexus 3 installtion. Anyways, thanks for the tip
No inicia, osea inicia pero se cae de inmediato el proceso, se detiene solo