aliyun 本地nexus_阿里云 ECS服务器(CentOS 7)安装和使用Nexus教程

本文详细介绍了如何在阿里云ECS CentOS 7服务器上安装和配置Nexus,包括Java、Maven的安装,以及Nexus的下载、解压、设置环境变量和启动。最后通过Nginx配置代理实现80端口访问,并启用HTTPS。此外,还展示了如何在Nexus中创建仓库,配置本地Maven settings.xml,以及部署和测试第三方包。
摘要由CSDN通过智能技术生成

1、前言

最近项目需要搭建maven私服,方便管理后期团队成员使用上传自己的包,因此决定使用nexus来搭建私服,搭建好的nexus地址。

准备工作

阿里云服务器ECS一台 1核CPU 2G内存(注意:最低为2G,否则运行报错)

开始安装

安装java

java的安装网上的文章好多,不过我是自己写的shell文件安装的,如下:

#!/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

执行该shell文件,如下所示:

安装maven

maven安装我也是自己写的shell文件,如果你们不想用我的可以到网上找文章看看吧,下面是我的shell文件:

#!/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

执行该shell文件,如下所示:

安装nexus

nexus虽然我也是使用shell文件安装,但有些配置我们还是要手动设置,下面是安装shell文件:

#!/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"'

安装完成之后,我们到/usr/local/nexus/nexus-3.15.0-01/bin目录下修改nexus文件

# 设置本地jdk目录

INSTALL4J_JAVA_HOME_OVERRIDE="/usr/local/java/jdk1.8.0_201"

接着,我们相同目录下nexus.rc文件,如下

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

run_as_user="nexus"

好了,这样就安装好了,我们访问下网站,注意默认端口是8081,账号:admin,密码:admin123

免费申请阿里云SSL证书

购买成功之后,配置好域名,我这里的域名是: nexus.awbeci.com,设置好之后等待审核,审核成功之后选择nginx版本并下载证书

下载完成之后是个.zip的压缩包,我们上传到服务器上,使用下面命令:

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

上传成功之后我们等待下一步操作。

安装nginx并代理nexus 8081端口,同时配置https访问

因为访问网站的时候端口是8081,所以想要使用80端口访问的话,我们就用nginx 80端口代理8081,同时设置https访问

安装nginx 我们还是通过shell文件来安装,如下

#!/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 <

export PATH=/usr/local/nginx/sbin/:$PATH

EOF

source /etc/profile

#启动服务

/usr/local/nginx/sbin/nginx

ss -tnlp | grep nginx

安装成功后,我们把一步上传的证书.zip复制到/root文件夹下,并解压缩,如下:

# 创建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

设置好之后,接下来我们配置/usr/local/nginx/conf/nginx.conf文件,如下所示:

#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

开始使用Nexus

Nexus介绍

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

创建Blob Stores

创建User

创建阿里云的代理仓库

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

创建Host仓库 策略是release

创建Host仓库 策略是snapshots

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

创建完仓库预览

配置本地maven settings.xml

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

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">

releases

user

123456

Snapshots

user

123456

nexus

*

https://nexus.awbeci.com/repository/maven-public/

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

jar

releases

https://nexus.awbeci.com/repository/awbeci/

Snapshots

https://nexus.awbeci.com/repository/awbeci-snapshots/

org.apache.maven.plugins

maven-compiler-plugin

3.6.1

1.8

1.8

UTF-8

org.apache.maven.plugins

maven-deploy-plugin

2.8.2

deploy

deploy

deploy

编辑并发布jar包

mvn clean && mvn deploy -DskipTests=true

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

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

测试发布的包

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

com.awbeci

awbeci-core

1.0.8-SNAPSHOT

执行该代码,如下所示:

测试成功!!!

上传第三方包

有两种方式,一种是命令

mvn deploy:deploy-file \

-DgroupId= \

-DartifactId= \

-Dversion= \

-Dpackaging= \

-Dfile= \

-DrepositoryId= \

-Durl=

另外一种是使用Nexus上传

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

总结

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

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

值得注意的是不能把端口直接改成80,这样你就不能启动nexus,所以我们是通过nginx 80端口代理8081端口了。

nexus 配置内存是在 /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

最好自己创建nexus用户,不要使用root用户启动nexus否则会出现警告

WARNING: ************************************************************

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

WARNING: ************************************************************

Starting nexus

启动nexus:

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

引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值