ヒトリ歩き

愚痴とかいろいろ書きます

リポジトリマネージャーをインストールする

Nexus Repository Manager 2をインストールしたことがありましたが、Nexus Repository Manager 3をインストールしたことがなかったので、インストールしてみました

Nexus Repository Managerとは

Javaアプリケーションを複数のチームで開発する場合に、Aチームが作成したライブラリをBチームが依存していたり、 Cチームが作成しているライブラリをAチームが依存していたり、各ライブラリの依存が複雑になる傾向があります。
そのため、開発プロジェクトではライブラリの依存性を自動で解決する必要があります。 ライブラリの依存をパッケージリポジトリを使用することで解決することができます。 Nexus Repository Managerはパッケージリポジトリなどの機能を提供しています。

インストール環境

OSとMWのバージョンは以下の通りです。

OS / MW Version
CentOS 7
Java 1.8.0_252

インストール手順

rootユーザで作業をします。

nexusユーザを作成

Nexus Repository Manager3はrootユーザでの起動が推奨されていないためnexusユーザを作成します。

useradd nexus

ファイルディスクリプタを拡張

echo "nexus - nofile 65536" >> /etc/security/limits.conf

Nexus Repository Manager 3 をダウンロード

wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

/opt配下にTARファイルを解凍する

2020/9/27時点のバージョンが3.27.0-03のため、バージョンが異なる場合はバージョンを読み替えてください。

cd /opt
tar xvzf /root/latest-unix.tar.gz
mv nexus-3.27.0-03 nexus
chown nexus:nexus -R nexus
chown nexus:nexus -R sonatype-work

Nexus Repository Manager 3 の起動

cd ./nexus/bin/
su nexus
 ./nexus run

下記のメッセージが出力されれば起動は完了です。 http://IPアドレスorFQDN/8081 にブラウザから開いてNexus Repository Manager 3 の画面が表示されればOK。

-------------------------------------------------

Started Sonatype Nexus OSS 3.27.0-03

-------------------------------------------------

サービスに登録する

手動起動だとサーバ再起動後に起動を忘れたりするのでサービスに登録しておきましょう。

vi /etc/systemd/system/nexus.service

下記の内容を記入し保存する

[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

自動起動に登録する。

enable nexus.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nexus.service to /etc/systemd/system/nexus.service.

推奨スペックを確認しましょう

CPUやメモリの推奨スペックを確認してください。 メモリやCPUや低いと起動時に時間がかかります。

help.sonatype.com

help.sonatype.com

リポジトリ数によってメモリの推奨サイズが違うので、ここが一番注意が必要かと思います。メモリには十分に注意してください。

help.sonatype.com

感想

マシンのスペックが低かったため起動に時間がかかっていることに気づかずに原因を調べるのに手間取ってしまった。 実際のプロジェクトではリポジトリマネージャを活用できていないのでNexusを触り慣れておいてプロジェクトで導入できるように準備しておきたいと思う。