LoginSignup
1
0

Nexus Repository Manager Install

Last updated at Posted at 2023-06-27

あるプロジェクトでNexusの構築を行ったので、
Nexus Repository Manager 3のインストール手順を
忘れないようにメモ書きしようと思います。

Nexus Repository Manager とは

Nexusとは、リポジトリを扱うミドルウェアサービス。
Docker や Maven、Npmなどの各リポジトリをNexusの中に作成し、
docker images, mavenライブラリ, npmパッケージを各リポジトリにキャッシュとし
保存して、プライベートに使ったりする事が出来るサービス。

大型案件などで、セキュリティ面でネット環境にアクセスがさせたくない
アプリケーション開発環境などを作成する際、よく使われたりするもの。


Nexus Repository Manager install 手順

1. JRE(OpenJDK 8)

  • 1.1 JREインストール
    NexusはJavaで動いているので、Javaのインストールが必要
$ sudo yum install -y java-1.8.0-openjdk
  • 1.2 java version確認
$ java -version 
#下記のようにレスポンスが返ってくればインストール成功
→ openjdk version "1.8.0_362"
  • 1.3 現在使用中のJava確認
# どちらのコマンドでも可
$ sudo alternatives --config java
$ sudo update-alternatives --config 'java'

→ There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-2.el9_1.x86_64/jre/bin/java)

2 . Nexus Repository Manager 3

  • 2.1 Nexus Repository Manager 3 Install
# Nexus install
$ curl -LO https://download.sonatype.com/nexus/3/latest-unix.tar.gz

#「latest-unix.tar.gz」があるかを確認
# curlコマンドを実行すると上記のgz圧縮ファイルがインストールされるのであるか確認
$ ls
→ latest-unix.tar.gz

# gz file解凍
$ tar xzvf latest-unix.tar.gz
  • 2.2 「nexus-」と「sonatype-work」を /opt/をディレクトリに移動
    tarファイルを解凍した際に出来たファイル「nexus-
    」と「sonatype-work」を
    /opt/をディレクトリ以下に移動する
#「nexus-*」と「sonatype-work」があるかを確認
# nexusのバージョンはインストールした時期で異なる
$ ls
→ nexus-3.51.0-01  sonatype-work

# 「nexus-*」を移動
$ sudo mv nexus-* /opt/

# 「sonatype-work」を移動
$ sudo mv sonatype-work /opt/

# 移動したかを確認
$ cd /opt/
$ ls
→ nexus-3.51.0-01  sonatype-work

3. Installしたfileを削除

# 「latest-unix.tar.gz」があるかを確認
$ ls
→ latest-unix.tar.gz

# fileを削除
$ sudo rm latest-unix.tar.gz

# 削除された事を確認
$ ls -la

4. nexusユーザ作成

# ユーザー作成
$ sudo useradd nexus

# ユーザーが作成されたか確認
$ grep nexus /etc/passwd
→ nexus:x:1002:1002::/home/nexus:/bin/bash

5. 所有権変更

# ディレクトリに移動
$ cd /opt/
$ ls -la
→ 各fileの権限が「root root」である事を確認 
drwx--x--x. 10 root root 181 Apr 13 06:51 nexus-3.51.0-01
drwx--x--x.  3 root root  20 Apr 13 06:51 sonatype-work

# 「nexus-3.51.0-01」権限変更
$ sudo chown -R nexus:nexus /opt/nexus-*
$ sudo chmod -R go-rw /opt/nexus-*
→ 「nexus-*」が「nexus nexus」に変更された事を確認
drwx--x--x.  3 nexus nexus  20 Apr 13 06:51 nexus-3.51.0-01

# 「sonatype-work」権限変更
$ sudo chown -R nexus:nexus /opt/sonatype-work
$ sudo chmod -R go-rw /opt/sonatype-work
→ 「sonatype-work」が「nexus nexus」に変更された事を確認
drwx--x--x.  3 nexus nexus  20 Apr 13 06:51 sonatype-work

6. シンボリックリンク作成

# Nexusのversionはinstallしたものに合わせる
$ sudo ln -s /opt/nexus-3.51.0-01 /opt/nexus
$ ls /opt/
→ 「nexus」が作られている事を確認
nexus  nexus-3.51.0-01  sonatype-work

7. nexus service登録

# viコマンドで「nexus.service」fileの編集
$ sudo vi /etc/systemd/system/nexus.service

# fileの中に下記の内容を張り付ける
# シンボリックリンクを作成していない場合はExecStartとExecStopの箇所のディレクトリが変わるので注意

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target


8. systemdファイルリロード

# どっちのコマンドでもよい
$ sudo systemctl daemon-reload
$ sudo systemctl restart nexus

9. 自動起動設定

$ sudo systemctl enable nexus.service

10. プロセス起動

$ sudo systemctl start nexus.service

11. プロセスのステータス確認

EC2で試している場合は、インスタンスタイプが
t2.medium以上じゃあないとメモリ不足でエラーになるので要注意

$ sudo systemctl status nexus.service

→ active (running) である事を確認
nexus.service - nexus service
     Loaded: loaded (/etc/systemd/system/nexus.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2023-05-01 05:14:27 UTC; 1h 11min ago
    Process: 698 ExecStart=/opt/nexus/bin/nexus start (code=exited, status=0/SUCCESS)
   Main PID: 976 (java)
      Tasks: 91 (limit: 24517)
     Memory: 2.4G
        CPU: 1min 46.863s     CGroup: /system.slice/nexus.service

※ SELinuxを無効化

Red Hat系でプロセスがうまく動かなかった場合はSELinuxを無効化を行って
みてください。

※検証で試したAWS上のEC2では必要な設定だったが、
物理サーバーのRockyでは設定をいれなくてもNexusのプロセスが起動したりと
各環境によって必要な設定は変わるようです。

# SELinuxの確認
$ ls -dZ /opt/nexus/bin/nexus
→ _tで終わるがプロセスが「admin_t」になっている事を確認
system_u:object_r:admin_home_t:s0 /opt/nexus//bin/nexus

# ディレクトリのSELinuxを永続的に無効化
$ restorecon -R /opt/nexus-3.51.0-01/bin/
→ _tで終わるがプロセスが「bin_t」になった事を確認
system_u:object_r:bin_t:s0 /opt/nexus-3.51.0-01/bin/nexus

# ディレクトリのSELinuxを永続的に無効化
$ restorecon -R /opt/nexus-3.51.0-01/bin/nexus
→ _tで終わるがプロセスが「bin_t」になった事を確認
system_u:object_r:bin_t:s0 /opt/nexus-3.51.0-01/bin/

12. Fire Wallの設定

Nexusはデフォルトのポートが「8081」なので、
こちらのポート解放の設定が必要です。

AWS上のEC2では、セキュリティグループで設定が必要。

物理サーバーのRockyでは、下記のfirewall-cmdで設定が必要。

・ポート追加(解放したいポートを設定)
sudo firewall-cmd --permanent --add-port=8081/tcp

・リロード(しないと追加のコマンドが反映されない)
sudo firewall-cmd --reload

・設定されたか確認
sudo firewall-cmd --list-all


後はブラウザ上で、「http://IPアドレス:8081」
でアクセスできることを確認する。

※企業のネットワークだと、セキュリティ面でネットワークACLの設定が
ポートの80と443しか解放されていない事があるので、もしかしたら、
GUIの画面が表示されないかもしれません。

その場合は、クラウド上ならALBを作成してかましてあげればなんとでもなりますが、
そうでない場合は、自己証明書を発行して443のポートでアクセスできるように
してあげないといけません。
OpenJDKは、デフォルトでkeytoolコマンドが使用できるので
これを使って自己証明書を発行するのが一番簡単だと思います。

自己証明書の発行の仕方は下記を参照ください。
https://qiita.com/k-yasuhiro/items/c501a12b8bad14d10588

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0