Nexus installation and use

1 Introduction

Recent projects need to build maven PW, the latter to facilitate the management team members to upload their own package, so we decided to use the nexus PW to build, to build a good nexus address .

2. Preparation

Ali cloud server ECS a 1 core CPU 2G memory (note: a minimum of 2G, or run error)

clipboard.png

3, start the installation

3.1 install java

java installation online articles a lot, but I wrote it myself shell files are installed, as follows:

#!/bin/bash

# jdk install
# 请将下载的jdk-xxx-linux-xxx.tar.gz包与此脚本放置到同一目录
# 授予此脚本可执行权限(chmod +x install_jdk.sh)
# 在终端执行此脚本开始安装(./文件名) # 注意:不可有多个版本的jdk包! # 为了使配置的环境变量生效,安装完成后你应该重新登陆。 jvmpath=/usr/local/java # 不存在 if [ ! -d "$jvmpath" ]; then echo "正在创建$jvmpath目录" sudo mkdir $jvmpath echo "目录$jvmpath创建成功" fi jdkfile=$(ls | grep jdk-*-linux-*.gz) jdkdirname="jdk1.8.0_201" if [ ! -f "$jdkfile" ]; then echo "正在下载jdk请稍等..." wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz" fi jdkfile=$(ls | grep jdk-*-linux-*.gz) if [ -f "$jdkfile" ]; then sudo tar -zxvf $jdkfile -C /usr/local/java/ echo "安装JDK成功" echo "配置环境变量" mv ~/.bashrc ~/.bashrc.backup.java cat ~/.bashrc.backup.java >> ~/.bashrc echo "PATH=\"$PATH:$jvmpath/$jdkdirname/bin\"" >> ~/.bashrc echo "JAVA_HOME=$jvmpath/$jdkdirname" >> ~/.bashrc echo "CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar" >> ~/.bashrc source ~/.bashrc echo "配置环境成功" echo "测试是否安装成功" java -version echo "安装成功" fi

Implementation of the shell document, as follows:

clipboard.png

3.2 installation maven

maven install shell file I also write your own, if you do not want to use my can go online to find articles to see it, here is my shell file:

#!/bin/bash

# maven install

mvnpath=/usr/local/maven
# 不存在
if [ ! -d "$mvnpath" ]; then echo "正在创建$mvnpath目录" sudo mkdir $mvnpath echo "目录$mvnpath创建成功" fi #apache-maven-3.6 echo "正在下载maven安装包,请稍等..." wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://211.162.31.136/files/71480000031E20AE/mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz" mvnfile=$(ls | grep apache*maven-*.gz) if [ -f "$mvnfile" ]; then #这个名字其实就是mvn .tar.gz解压之后的文件夹的名字 mvndirname="apache-maven-3.6.0" #不能加 用'zxvf' 加了 z 就创建了包里面的apace* 文件夹,而我们只要把apace*文件夹下的文件全部解压到 mvnpath里面就好 tar zxvf $mvnfile -C $mvnpath echo "安装maven成功" echo "配置环境变量" mv ~/.bashrc ~/.bashrc.backup.mvn cat ~/.bashrc.backup.mvn >> ~/.bashrc echo "PATH=\"$PATH:$mvnpath/$mvndirname/bin\"" >> ~/.bashrc echo "MAVEN_HOME=$mvnpath/$mvndirname" >> ~/.bashrc source ~/.bashrc echo "配置环境成功" echo "测试是否安装成功" mvn -v echo "安装成功" else echo "没有找到maven文件" fi 

Implementation of the shell document, as follows:

clipboard.png

3.3 Installation nexus

nexus although I also use shell file installed, but we still have to manually configure some settings, the following is the installation shell file:

#!/bin/bash
#判断是否是roo用户
if [ $(id -u) != "0" ]; then echo "Error:You must be root to run this script" fi #每次使用只需修改自定义内容即可 #自定义用户名和组 Group_Name="nexus" User_Name="nexus" #自定义nginx变量 Install_Path="/usr/local/nexus" Version="nexus-3.15.0-01" Package_Type=".tar.gz" Package=$Version$Package_Type #创建/usr/local/nexus目录 #mkdir /usr/local/nexus if [ -e $Install_Path ] then echo " $Install_Path 目录已经存在." echo " $Install_Path Directory Already Exists." else echo " $Install_Path 目录正在创建." mkdir $Install_Path fi #下载nexus 文件 Setup_path="/root/" cd $Setup_path wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.15.0-01-unix.tar.gz Group_User(){ egrep "^$Group_Name" /etc/group >& /dev/null if [ $? -ne 0 ] then echo "nexus 用户组正在添加." groupadd $Group_Name else echo " The $Group_Name user group already exists." echo "nexus 用户组已经添加." fi #判断nexus用户是否存在 egrep "^$User_Name" /etc/passwd >& /dev/null if [ $? -ne 0 ] then echo "nexus 用户正在添加." useradd -g $Group_Name $User_Name else echo "nexus 用户已经添加." echo " The $User_Name user already exists." fi } Group_User # 设置/usr/local/nexus 目录所属组和用户是nexus chown -R nexus:nexus $Install_Path #判断文件是否存在 if [ -e $Setup_path$Version$Package_Type ] then echo "$Package The Package exists." else echo "$Package The package does not exist." fi cd $Setup_path #解压nexus包到/usr/local/nexus tar -zxvf $Package -C $Install_Path echo '设置环境变量' mv ~/.bashrc ~/.bashrc.backup.nexus cat ~/.bashrc.backup.nexus >> ~/.bashrc echo "NEXUS_HOME=$Install_Path/$Version" >> ~/.bashrc echo "PATH=\"$PATH:$NEXUS_HOME/bin\"" >> ~/.bashrc # 切换nexus用户 su nexus echo '接下来配置:1、vim bin/nexus.rc run_as_user="nexus"'

After the installation is complete, we have to modify the nexus file directory under /usr/local/nexus/nexus-3.15.0-01/bin

# 设置本地jdk目录
INSTALL4J_JAVA_HOME_OVERRIDE="/usr/local/java/jdk1.8.0_201"

Then, we have the same directory nexus.rc file, as follows

# 指定用户是nexus而不是root,如果是root会出现警告!
run_as_user="nexus"

Okay, so now installed, we visit the next website, note that the default port is 8081, account number: admin, password: admin123

clipboard.png

3.4 Free application cloud Ali SSL Certificates

clipboard.png

After successful purchase, configure domain names I have here is: nexus.awbeci.com, set up after waiting for an audit, and select nginx version after a successful download the certificate

clipboard.png

clipboard.png

After the download is complete is a .zip archive, we uploaded to the server, use the following command:

scp your-cert.zip root@your-server-ip:/your-server-directory

After the upload was successful we are waiting for the next step.

3.5 and install nginx proxy nexus 8081 port, configure access https

Because access to the site when the port is 8081, so I want to use port 80 access, we will use nginx 80 port agent 8081, and set the https access

We install nginx or through the shell to install the file, as follows

#!/bin/bash
#判断是否是roo用户
if [ $(id -u) != "0" ]; then echo "Error:You must be root to run this script" fi #每次使用只需修改自定义内容即可 #自定义用户名和组 Group_Name="nginx" User_Name="nginx" #自定义nginx变量 Install_Path="/usr/local/nginx" Package_Type=".tar.gz" Version="nginx-1.15.8" Package=$Version$Package_Type Setup_path="/root/" RPM="nginx" #创建/usr/local/nginx目录 #mkdir /usr/local/nginx if [ -e $Install_Path ] then echo " $Install_Path 目录已经存在." echo " $Install_Path Directory Already Exists." else echo " $Install_Path 目录正在创建." mkdir $Install_Path fi #下载nginx 文件 cd $Setup_path wget http://nginx.org/download/nginx-1.15.8.tar.gz #安装依赖关系 yum group install "Development Tools" "Server Platform Deveopment" yum install -y curl openssl-devel pcre-devel Group_User(){ egrep "^$Group_Name" /etc/group >& /dev/null if [ $? -ne 0 ] then echo "nginx 用户组正在添加." groupadd $Group_Name else echo " The $Group_Name user group already exists." echo "nginx 用户组已经添加." fi #判断nginx用户是否存在 egrep "^$User_Name" /etc/passwd >& /dev/null if [ $? -ne 0 ] then echo "nginx 用户正在添加." useradd -g $Group_Name $User_Name else echo "nginx 用户已经添加." echo " The $User_Name user already exists." fi } Group_User #判断文件是否存在 if [ -e $Setup_path$Version$Package_Type ] then echo "$Package The Package exists." else echo "$Package The package does not exist." fi #编译安装nginx cd $Setup_path #解压nginx包到/usr/local/nginx tar -zxvf $Package -C $Install_Path cd $Install_Path cd $Version configure_opts=( --prefix=$Install_Path --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module ) ./configure ${configure_opts[@]} if [[ $? -eq 0 ]] then make && make install else echo "编译失败,请重新编译" && exit 1 fi #添加Nginx命令到环境变量 cat >/etc/profile.d/nginx.sh <<EOF export PATH=/usr/local/nginx/sbin/:$PATH EOF source /etc/profile #启动服务 /usr/local/nginx/sbin/nginx ss -tnlp | grep nginx 

After a successful installation, we step upload .zip copy of the certificate to the /rootfolder, and extract, as follows:

# 创建ssl文件夹
mkdir -p /usr/local/nginx/cert

# 把上一步的.zip证书解压并复制到ssl文件夹下
unzip /root/your-cert-package.zip

# 解压之后应该是两个文件.pem和.key # 复制.crt和.key文件到ssl目录下 cp your-cert.crt your-cert.key /usr/local/nginx/cert

Once set up, then we have the configuration /usr/local/nginx/conf/nginx.conffile as follows:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; client_max_body_size 100m; client_header_timeout 1m; client_body_timeout 1m; proxy_connect_timeout 18000; ##修改成半个小时 proxy_send_timeout 18000; proxy_read_timeout 18000; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name nexus.awbeci.com; return 301 https://nexus.awbeci.com$request_uri; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8081; #代理8081端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } } # HTTPS server # server { listen 443 ssl; server_name nexus.awbeci.com; ssl_certificate /usr/local/nginx/cert/nexus.awbeci.com.pem; ssl_certificate_key /usr/local/nginx/cert/nexus.awbeci.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8081; #代理8081端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } } }

这样就成功的配置好了,现在我们重启下nginx,并访问nexus.awbeci.com网站看看

# 重启nginx
/usr/local/nginx/sbin/nginx -s reload

clipboard.png

4、开始使用Nexus

4.1 Nexus介绍

这里有一篇文章写得非常好,大家可以看看,我就不特别详细的写介绍了,主要还是告诉你们怎么结合项目使用。

4.2 创建Blob Stores

clipboard.png

4.3 创建User

clipboard.png

4.4 创建阿里云的代理仓库

clipboard.png

然后再public组里面将这个aliyun-proxy仓库加入,排在maven-central之前即可

clipboard.png

4.5 创建Host仓库 策略是release

clipboard.png

4.6 创建Host仓库 策略是snapshots

clipboard.png

创建好之后我们再来Public设置下优先顺序,把刚才加的两个仓库放到aliyun-proxy前面

clipboard.png

创建完仓库预览

clipboard.png

4.7 配置本地maven settings.xml

提示:两种配置方法,一种是直接配置maven目录下的conf下的settings.xml文件,另外一种是复制该文件到用户目录下的.m2目录,两种方法配置效果是一样的,看个人喜好了,加载顺序是.m2下的settings.xml目录接着是maven config目录下的settings.xml,配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <!--这里配置我们刚才创建的user用户所对应的releases--> <server> <id>releases</id> <username>user</username> <password>123456</password> </server> <!--这里配置我们刚才创建的user用户所对应的Snapshots--> <server> <id>Snapshots</id> <username>user</username> <password>123456</password> </server> </servers> <mirrors> <!-- <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> --> <!--这里配置我们线上的public仓库就好--> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>https://nexus.awbeci.com/repository/maven-public/</url> </mirror> </mirrors> </settings> 

4.8 配置要上传到nexus项目pom.xml文件

    <packaging>jar</packaging>
    <distributionManagement> <!--配置线上releases仓库地址,只要是正式版本都会上传到该地址(注意要和settings.xml文件里面的配置名称相同)--> <repository> <id>releases</id> <url>https://nexus.awbeci.com/repository/awbeci/</url> </repository> <!--配置线上Snapshots仓库地址,只要是快照版本都会上传到该地址(注意要和settings.xml文件里面的配置名称相同)--> <snapshotRepository> <id>Snapshots</id> <url>https://nexus.awbeci.com/repository/awbeci-snapshots/</url> </snapshotRepository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <executions> <execution> <id>deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> 

4.9 编辑并发布jar包

mvn clean && mvn deploy -DskipTests=true

执行完成后,我们到线上看看是否上传成功

clipboard.png

clipboard.png

可以看到不管是release版本还是snapshot版本都上传并发布成功

4.10 测试发布的包

自己新建一个maven项目,然后引入我们刚才发布的release包

<dependency>
    <groupId>com.awbeci</groupId> <artifactId>awbeci-core</artifactId> <version>1.0.8-SNAPSHOT</version> </dependency>

clipboard.png
执行该代码,如下所示:

clipboard.png

测试成功!!!

4.10 上传第三方包

有两种方式,一种是命令

mvn deploy:deploy-file \
    -DgroupId=<group-id> \
    -DartifactId=<artifact-id> \
    -Dversion=<version> \
    -Dpackaging=<type-of-packaging> \
    -Dfile=<path-to-file> \
    -DrepositoryId=<server-id-settings.xml> \
    -Durl=<url-of-the-repository-to-deploy>

另外一种是使用Nexus上传

clipboard.png

两种方式结果都是一样,就看你偏向哪种了。

5、总结

1)服务器内存刚开始配置是1CPU 1G 内存,nexus start运行之后报错,升级服务器为2G内存之后就没问题了

2)nexus 默认是8081端口,我们可以修改文件/usr/local/nexus/nexus-3.15.0-01/etc/nexus-default.properties

## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
# 设置成自己想要的端口
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml nexus-context-path=/ # Nexus section nexus-edition=nexus-pro-edition nexus-features=\ nexus-pro-feature

It is noteworthy that can not be put directly into the port 80, so you can not start nexus, so we nginx proxy port 80 through the 8081 port.

3) nexus memory configuration is in /usr/local/nexus/nexus-3.15.0-01/bin/nexus.vmoptions

-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=2G
-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=../sonatype-work/nexus3 -Djava.io.tmpdir=../sonatype-work/nexus3/tmp -Dkaraf.startLocalConsole=false

4) The best nexus users to create their own, do not use the root user to start nexus otherwise there will be a warning

WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ Starting nexus

5) Start nexus:

/usr/local/nexus/nexus-3.15.0-01/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

6, reference

  1. Maven PW recording operation environment construction Nexus3.x
  2. Nexus 3.x Linux environment to build (hands-on) pit row tour
  3. Centos7.3 mounting nexus-3.14.0-04
  4. Build nexus3 version of the maven PW (Centos7 environment)
  5. Gitlab + Nexus Maven deployment
  6. Linux uses Nexus3.x build Maven PW Guide
  7. build and use maven PW nexus3.x
  8. centos7 build a nexus maven PW
  9. centos7 build a nexus maven PW
  10. Maven Nexus
  11. Nexus Integration with Maven build a private warehouse
  12. Nexus max file descriptors
  13. maven PW nexus3.x environment configuration
  14. Build Maven PW -Nexus

Guess you like

Origin www.cnblogs.com/grimm/p/11404862.html