Cách cài đặt và cấu hình Nexus Repository Manager trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Nexus là một kho lưu trữ được quản lý cung cấp một nền tảng bảo vệ toàn bộ vòng đời phát triển phần mềm của bạn. Nó cho phép bạn thu thập và quản lý các phụ thuộc của mình và giúp phân phối phần mềm của bạn dễ dàng hơn. Đây là một nguồn duy nhất của tất cả các thành phần, tệp nhị phân và hiện vật xây dựng. Nó cung cấp hỗ trợ cho Gradle, Ant, Maven và Ivy, và cho phép dev quản lý các thành phần thông qua tệp nhị phân, vùng chứa, tập lệnh và hàng hóa hoàn thiện. Bạn cũng có thể tích hợp Nexus với các hệ thống xác thực và người dùng hiện có của mình như LDAP và Atlassian Crowd.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt trình quản lý kho lưu trữ Nexus trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Một máy chủ chạy Ubuntu 20.04.
  • Một mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
Mã:
apt-get update -y
Sau khi máy chủ của bạn được cập nhật, bạn có thể tiến hành bước tiếp theo.

Cài đặt Java​

Nexus dựa trên Java nên bạn sẽ cần cài đặt Java phiên bản 8 trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install openjdk-8-jdk -y
Sau khi Java được cài đặt, bạn có thể xác minh phiên bản Java đã cài đặt bằng lệnh sau:
Mã:
java -version
Bạn sẽ nhận được kết quả sau:
Mã:
openjdk version "1.8.0_282"Môi trường chạy thời gian thực OpenJDK (bản dựng 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 25.282-b08, chế độ hỗn hợp)
Sau khi Java được cài đặt, bạn có thể tiến hành bước tiếp theo.

Cài đặt Nexus​

Trước khi bắt đầu, bạn sẽ cần tạo một người dùng riêng để chạy Nexus. Bạn có thể tạo bằng cách chạy lệnh sau:
Mã:
useradd -M -d /opt/nexus -s /bin/bash -r nexus
Tiếp theo, cho phép người dùng nexus chạy tất cả người dùng với sudo mà không cần bất kỳ mật khẩu nào. Bạn có thể thực hiện bằng cách chạy lệnh sau:
Mã:
echo "nexus ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nexus
Tiếp theo, tạo một thư mục cho Nexus và tải xuống phiên bản Nexus mới nhất bằng lệnh sau:
Mã:
mkdir /opt/nexus
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống vào thư mục /opt/nexus bằng cách chạy lệnh sau:
Mã:
tar xzf nexus-3.29.2-02-unix.tar.gz -C /opt/nexus --strip-components=1
Tiếp theo, đặt quyền sở hữu thích hợp cho thư mục nexus bằng cách chạy lệnh sau:
Mã:
chown -R nexus:nexus /opt/nexus
Tiếp theo, chỉnh sửa tệp cấu hình nexus.vmoptions và xác định kích thước bộ nhớ tối đa:
Mã:
nano /opt/nexus/bin/nexus.vmoptions
Đặt kích thước bộ nhớ tối đa của Java và thay thế "../sonatype-work" bằng "./sonatype-work":
Mã:
-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
Lưu và đóng tệp sau đó chỉnh sửa tệp nexus.rc và định nghĩa chạy dưới dạng người dùng:
Mã:
nano /opt/nexus/bin/nexus.rc
Bỏ chú thích và thay đổi dòng sau bằng người dùng nexus:
Mã:
run_as_user="nexus"
Lưu và đóng tệp sau đó khởi động dịch vụ Nexxus bằng lệnh sau:
Mã:
sudo -u nexus /opt/nexus/bin/nexus bắt đầu
Tiếp theo, xác minh Nexus bằng lệnh sau:
Mã:
tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
2021-02-23 12:20:51,839+0000 THÔNG TIN [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Cấu hình Servlet TOÀN CẦU: registryConfiguratorClass=2021-02-23 12:20:51,853+0000 THÔNG TIN [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Tạo tệp nguồn cho API...2021-02-23 12:20:52,582+0000 THÔNG TIN [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@649a69ca2021-02-23 12:20:52,611+0000 THÔNG TIN [jetty-main-1] *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Không tìm thấy CDI hỗ trợ ValidatorFactory. Sử dụng ValidatorFactory mặc định2021-02-23 12:20:53,811+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Đã khởi tạo2021-02-23 12:20:53,817+0000 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Đã khởi tạo2021-02-23 12:20:53,852+0000 INFO [jetty-main-1] *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Đã khởi tạo o.e.j.w.WebAppContext@7a65358d{Sonatype Nexus,/,file:///opt/nexus/public/,AVAILABLE}2021-02-23 12:20:53,883+0000 THÔNG TIN [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Đã khởi động ServerConnector@764a4935{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}2021-02-23 12:20:53,884+0000 THÔNG TIN [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Đã khởi động @37529ms2021-02-23 12:20:53,884+0000 THÔNG TIN [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer -------------------------------------------------Đã khởi động Sonatype Nexus OSS 3.29.2-02-------------------------------------------------
Tại thời điểm này, Nexus đã được khởi động và lắng nghe trên cổng 8081. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
ss -altnp | grep 8081
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
LISTEN 0 50 0.0.0.0:8081 0.0.0.0:* users:(("java",pid=5548,fd=795))
Tiếp theo, dừng dịch vụ Nexus bằng lệnh sau:
Mã:
/opt/nexus/bin/nexus stop

Tạo tệp dịch vụ Systemd cho Nexus​

Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ Nexus. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/systemd/system/nexus.service
Thêm các dòng sau:
Mã:
[Unit]Description=nexus serviceAfter=network.target[Service]Type=forkingLimitNOFILE=65536ExecStart=/opt/nexus/bin/nexus startExecStop=/opt/nexus/bin/nexus stopUser=nexusRestart=on-abort[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ Nexus và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start nexus
systemctl enable nexus
Bạn cũng có thể xác minh trạng thái của dịch vụ Nexus bằng lệnh sau:
Mã:
systemctl status nexus
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? nexus.service - dịch vụ nexus Đã tải: đã tải (/etc/systemd/system/nexus.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Tue 2021-02-23 12:22:49 UTC; 15 giây trước Tiến trình: 6181 ExecStart=/opt/nexus/bin/nexus start (code=exited, status=0/SUCCESS) PID chính: 6368 (java) Nhiệm vụ: 40 (giới hạn: 4691) Bộ nhớ: 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>23/02 12:22:49 ubuntu2004 systemd[1]: Đang khởi động dịch vụ nexus...23/02 12:22:49 ubuntu2004 nexus[6181]: Đang khởi động nexus23/02 12:22:49 ubuntu2004 systemd[1]: Đã khởi động dịch vụ nexus.dòng 1-13/13 (KẾT THÚC)
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Nginx làm Proxy ngược cho Nexus​

Tiếp theo, bạn sẽ cần cài đặt Nginx và cấu hình Nginx làm proxy ngược. Trước tiên, hãy cài đặt các gói Nginx bằng lệnh sau:
Mã:
apt-get install nginx -y
Sau khi Nginx được cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/nexus.conf
Thêm các dòng sau:
Mã:
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 Nâng cấp $http_upgrade; proxy_set_header Kết nối "nâng cấp"; proxy_set_header Máy chủ $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 đúng; proxy_redirect tắt; }}
Lưu và đóng tệp, sau đó xác minh tệp cấu hình Nginx bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Mã:
systemctl restart nginx
Bạn cũng có thể xác minh trạng thái của Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) từ Tue 2021-02-23 12:24:57 UTC; 4 giây trước Tài liệu: man:nginx(8) Tiến trình: 7106 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 7107 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 7123 (nginx) Nhiệm vụ: 3 (giới hạn: 4691) Bộ nhớ: 3,5M CGroup: /system.slice/nginx.service ??7123 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??7124 nginx: tiến trình công nhân ??7125 nginx: tiến trình công nhân23/02 12:24:57 ubuntu2004 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...23/02 12:24:57 ubuntu2004 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.

Truy cập Giao diện web Nexus​

Trước khi truy cập Giao diện web Nexus, hãy in mật khẩu quản trị viên Nexus bằng lệnh sau:
Mã:
cat /opt/nexus/sonatype-work/nexus3/admin.password
Bạn sẽ nhận được kết quả sau:
Mã:
b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e
Bây giờ, hãy mở trình duyệt web của bạn và truy cập Giao diện người dùng web Nexus sử dụng URL http://nexus.example.com. Bạn sẽ được chuyển hướng đến trang sau:



Bây giờ, hãy nhấp vào nút Đăng nhập. Bạn sẽ được chuyển hướng đến trang đăng nhập Nexus:



Cung cấp tên người dùng quản trị, mật khẩu và nhấp vào nút Đăng nhập. Bạn sẽ thấy trang thiết lập Nexus:



Nhấp vào nút Tiếp theo để tiếp tục. Bạn sẽ thấy trang sau:



Đặt mật khẩu mới và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Chọn tùy chọn "Bật quyền truy cập ẩn danh" và nhấp vào nút Tiếp theo. Bạn sẽ thấy trang sau:



Nhấp vào nút Hoàn tất để hoàn tất thiết lập và nhấp vào biểu tượng Cài đặt bánh răng. Bạn sẽ thấy bảng điều khiển kho lưu trữ Nexus:


Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công trình quản lý kho lưu trữ Nexus với Nginx làm proxy ngược trên máy chủ Ubuntu 20.04. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên