Nexusは、ソフトウェア開発ライフサイクル全体を保護するプラットフォームを提供するリポジトリ管理です。これにより、依存関係を収集および管理でき、ソフトウェアの配布が容易になります。これは、すべてのコンポーネント、バイナリ、およびビルドアーティファクトの単一のソースです。 Gradle、Ant、Maven、Ivyをサポートし、開発者がバイナリ、コンテナ、アセンブリ、完成品を通じてコンポーネントを管理できるようにします。 Nexusを、LDAPやAtlassianCrowdなどの既存のユーザーおよび認証システムと統合することもできます。
このチュートリアルでは、Ubuntu20.04にNexusリポジトリマネージャーをインストールする方法を示します。
- Ubuntu20.04を実行しているサーバー。
- ルートパスワードがサーバーに設定されます。
開始する前に、システムパッケージを最新バージョンに更新する必要があります。次のコマンドを使用して更新できます:
apt-get update -y
サーバーが更新されたら、次のステップに進むことができます。
Javaのインストール
NexusはJavaに基づいているため、システムにJavaバージョン8をインストールする必要があります。次のコマンドでインストールできます:
apt-get install openjdk-8-jdk -y
Javaがインストールされると、次のコマンドを使用して、インストールされているJavaのバージョンを確認できます。
java -version
次の出力が得られるはずです:
openjdk version "1.8.0_282" OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08) OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
Javaがインストールされたら、次のステップに進むことができます。
Nexusをインストールする
開始する前に、Nexusを実行するための別のユーザーを作成する必要があります。次のコマンドを実行して作成できます:
useradd -M -d /opt/nexus -s /bin/bash -r nexus
次に、nexusユーザーがパスワードなしでsudoを使用してすべてのユーザーを実行できるようにします。次のコマンドを実行して、次のコマンドを実行できます。
echo "nexus ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nexus
次に、Nexusのディレクトリを作成し、次のコマンドを使用して最新バージョンのNexusをダウンロードします。
mkdir /opt/nexus
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz
ダウンロードが完了したら、次のコマンドを実行して、ダウンロードしたファイルを/ opt/nexusディレクトリに抽出します。
tar xzf nexus-3.29.2-02-unix.tar.gz -C /opt/nexus --strip-components=1
次に、次のコマンドを実行して、nexusディレクトリに適切な所有権を設定します。
chown -R nexus:nexus /opt/nexus
次に、 nexus.vmoptionsを編集します 構成ファイルと最大メモリサイズの定義:
nano /opt/nexus/bin/nexus.vmoptions
Javaの最大メモリサイズを設定し、「../sonatype-work」を「./sonatype-work」に置き換えました:
-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -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
ファイルを保存して閉じ、nexus.rcファイルを編集して、実行をユーザーとして定義します。
nano /opt/nexus/bin/nexus.rc
コメントを外し、nexususerで次の行を変更します。
run_as_user="nexus"
ファイルを保存して閉じてから、次のコマンドでNexxusサービスを開始します。
sudo -u nexus /opt/nexus/bin/nexus start
次に、次のコマンドでNexusを確認します。
tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log
次の出力が得られるはずです:
2021-02-23 12:20:51,839+0000 INFO [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Servlet GLOBAL configuration: registryConfiguratorClass= 2021-02-23 12:20:51,853+0000 INFO [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Creating source files for APIs... 2021-02-23 12:20:52,582+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sona[email protected]649a69ca 2021-02-23 12:20:52,611+0000 INFO [jetty-main-1] *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory 2021-02-23 12:20:53,811+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized 2021-02-23 12:20:53,817+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized 2021-02-23 12:20:53,852+0000 INFO [jetty-main-1] *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started [email protected]{Sonatype Nexus,/,file:///opt/nexus/public/,AVAILABLE} 2021-02-23 12:20:53,883+0000 INFO [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started [email protected]{HTTP/1.1, (http/1.1)}{0.0.0.0:8081} 2021-02-23 12:20:53,884+0000 INFO [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @37529ms 2021-02-23 12:20:53,884+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - ------------------------------------------------- Started Sonatype Nexus OSS 3.29.2-02 -------------------------------------------------
この時点で、Nexusが起動し、ポート8081でリッスンしています。次のコマンドで確認できます。
ss -altnp | grep 8081
次の出力が得られるはずです:
LISTEN 0 50 0.0.0.0:8081 0.0.0.0:* users:(("java",pid=5548,fd=795))
次に、次のコマンドでNexusサービスを停止します。
/opt/nexus/bin/nexus stop
Nexus用のSystemdサービスファイルを作成する
次に、Nexusサービスを管理するためのsystemdサービスファイルを作成する必要があります。次のコマンドで作成できます:
nano /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
ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、Nexusサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start nexus
systemctl enable nexus
次のコマンドを使用して、Nexusサービスのステータスを確認することもできます。
systemctl status nexus
次の出力が得られるはずです:
? nexus.service - nexus service Loaded: loaded (/etc/systemd/system/nexus.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2021-02-23 12:22:49 UTC; 15s ago Process: 6181 ExecStart=/opt/nexus/bin/nexus start (code=exited, status=0/SUCCESS) Main PID: 6368 (java) Tasks: 40 (limit: 4691) Memory: 642.9M CGroup: /system.slice/nexus.service ??6368 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-8-openjdk-amd64/jre -Dexe4j.mo> Feb 23 12:22:49 ubuntu2004 systemd[1]: Starting nexus service... Feb 23 12:22:49 ubuntu2004 nexus[6181]: Starting nexus Feb 23 12:22:49 ubuntu2004 systemd[1]: Started nexus service. lines 1-13/13 (END)
終了したら、次のステップに進むことができます。
NginxをNexusのリバースプロキシとして構成する
次に、Nginxをインストールし、Nginxをリバースプロキシとして構成する必要があります。まず、次のコマンドを使用してNginxパッケージをインストールします。
apt-get install nginx -y
Nginxがインストールされたら、次のコマンドを使用してNginx仮想ホスト構成ファイルを作成します。
nano /etc/nginx/conf.d/nexus.conf
次の行を追加します:
upstream backend { server 127.0.0.1:8081; } server { listen 80; server_name nexus.example.com; location / { proxy_pass http://backend/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
ファイルを保存して閉じ、次のコマンドでNginx構成ファイルを確認します。
nginx -t
次の出力が得られるはずです:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
最後に、Nginxサービスを再起動して、変更を適用します。
systemctl restart nginx
次のコマンドを使用して、Nginxのステータスを確認することもできます。
systemctl status nginx
次の出力が得られるはずです:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-02-23 12:24:57 UTC; 4s ago Docs: man:nginx(8) Process: 7106 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 7107 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 7123 (nginx) Tasks: 3 (limit: 4691) Memory: 3.5M CGroup: /system.slice/nginx.service ??7123 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??7124 nginx: worker process ??7125 nginx: worker process Feb 23 12:24:57 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server... Feb 23 12:24:57 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.
Nexus Web UIにアクセスする前に、次のコマンドを使用してNexus管理者パスワードを印刷します。
cat /opt/nexus/sonatype-work/nexus3/admin.password
次の出力が得られるはずです:
b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e
次に、Webブラウザーを開き、URL http://nexus.example.comを使用してNexusWebUIにアクセスします。 。次のページにリダイレクトされます:
次に、ログインをクリックします ボタン。 Nexusログインページにリダイレクトされます:
管理者のユーザー名とパスワードを入力し、サインインをクリックします ボタン。 Nexusのセットアップページが表示されます:
次へをクリックします ボタンをクリックして続行します。次のページが表示されます:
新しいパスワードを設定し、次へをクリックします ボタン。次のページが表示されます:
[匿名アクセスを有効にする]オプションを選択し、次へをクリックします ボタン。次のページが表示されます:
完了をクリックします ボタンをクリックしてセットアップを完了し、ギアの設定をクリックします アイコン。 Nexusリポジトリダッシュボードが表示されます:
おめでとう!これで、Ubuntu20.04サーバーにリバースプロキシとしてNginxを使用してNexusリポジトリマネージャーが正常にインストールされました。ご不明な点がございましたら、お気軽にお問い合わせください。