`
foquanlin
  • 浏览: 19978 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux nexus 独立安装及配置

阅读更多

1.下载nexus工具
http://download.sonatype.com/nexus/oss/nexus-2.7.2-03-bundle.tar.gz
2.解压
tar -zxvf nexus-2.7.2-03-bundle.tar.gz
3.移动到/usr/local/
mv nexus-2.7.2-03-bundle /usr/local/nexus2.7




以下是脚本配置

#! /bin/sh

#
# Copyright (c) 1999, 2006 Tanuki Software Inc.
#
# Java Service Wrapper sh script.  Suitable for starting and stopping
#  wrapped Java applications on UNIX platforms.
#

#-----------------------------------------------------------------------------
# These settings can be modified to fit the needs of your application

# Set this to the root of the Nexus installation
#设置安装路径
#NEXUS_HOME=".."
NEXUS_HOME="/usr/local/nexus2.7"


# If specified, the Wrapper will be run as the specified user.

# IMPORTANT - Make sure that the user has the required privileges to write into the Nexus installation directory.

# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or
#  port needs to be allocated prior to the user being changed.
#设置启动用户
RUN_AS_USER=root

# Application
APP_NAME="nexus"
APP_LONG_NAME="Nexus OSS"

# Priority at which to run the wrapper.  See "man nice" for valid priorities.
#  nice is only used if a priority is specified.
PRIORITY=

# Location of the pid file.
#PIDDIR="."

# If uncommented, causes the Wrapper to be shutdown using an anchor file.
#  When launched with the 'start' command, it will also ignore all INT and
#  TERM signals.
#IGNORE_SIGNALS=true

# The following two lines are used by the chkconfig command. Change as is
#  appropriate for your application.  They should remain commented.
# chkconfig: 2345 20 80
# description: Test Wrapper Sample Application

# Do not modify anything beyond this point
#-----------------------------------------------------------------------------

# Get the fully qualified path to the script
case $0 in
    /*)
        SCRIPT="$0"
        ;;
    *)
        PWD=`pwd`
        SCRIPT="$PWD/$0"
        ;;
esac

# Resolve the true real path without any sym links.
CHANGED=true
while [ "X$CHANGED" != "X" ]
do
    # Change spaces to ":" so the tokens can be parsed.
    SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
    # Get the real path to this script, resolving any symbolic links
    TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'`
    REALPATH=
    for C in $TOKENS; do
        # Change any ":" in the token back to a space.
        C=`echo $C | sed -e 's;:; ;g'`
        REALPATH="$REALPATH/$C"
        # If REALPATH is a sym link, resolve it.  Loop for nested links.
        while [ -h "$REALPATH" ] ; do
            LS="`ls -ld "$REALPATH"`"
            LINK="`expr "$LS" : '.*-> \(.*\)$'`"
            if expr "$LINK" : '/.*' > /dev/null; then
                # LINK is absolute.
                REALPATH="$LINK"
            else
                # LINK is relative.
                REALPATH="`dirname "$REALPATH"`""/$LINK"
            fi
        done
    done

    if [ "$REALPATH" = "$SCRIPT" ]
    then
        CHANGED=""
    else
        SCRIPT="$REALPATH"
    fi
done

# Change the current directory to the location of the script
cd "`dirname "$REALPATH"`"
REALDIR=`pwd`

# Resolve the location of the 'ps' command
PSEXE="/usr/bin/ps"
if [ ! -x "$PSEXE" ]
then
    PSEXE="/bin/ps"
    if [ ! -x "$PSEXE" ]
    then
        echo "Unable to locate 'ps'."
        echo "Please report this message along with the location of the command on your system."
        exit 1
    fi
fi

# Resolve the os
DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
case "$DIST_OS" in
    'sunos')
        DIST_OS="solaris"
        PSEXE="/usr/ucb/ps"
        ;;
    'hp-ux' | 'hp-ux64')
        DIST_OS="hpux"
        ;;
    'darwin')
        DIST_OS="macosx"
        ;;
    'unix_sv')
        DIST_OS="unixware"
        ;;
esac

# Resolve the architecture
DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]`
DIST_BITS=32
if [ "$DIST_ARCH" = "unknown" ]
then
    DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]`
fi
case "$DIST_ARCH" in
    'athlon' | 'ia32' | 'i386' | 'i486' | 'i586' | 'i686')
        DIST_ARCH="x86"
        ;;
    'amd64' | 'x86_64' | 'ia64')
        DIST_ARCH="x86"
        DIST_BITS=64
        ;;
    'ip27')
        DIST_ARCH="mips"
        ;;
    'power' | 'powerpc' | 'power_pc')
        DIST_ARCH="ppc"
        ;;
    'ppc64')
        DIST_ARCH="ppc"
        DIST_BITS=64
        ;;
    'pa_risc' | 'pa-risc')
        DIST_ARCH="parisc"
        ;;
    'sun4u' | 'sparcv9')
        DIST_ARCH="sparc"
        ;;
    '9000/800')
        DIST_ARCH="parisc"
        ;;
esac

# Extra architecture detection
case "$DIST_OS" in
    'macosx')
        if [ `sysctl hw.cpu64bit_capable | awk '{ print $2 }'` = '1' ]; then
            DIST_BITS=64
        fi
        DIST_ARCH='universal'
        ;;
    'aix')
        DIST_BITS=`getconf KERNEL_BITMODE`
        ;;
esac

outputFile() {
    if [ -f "$1" ]
    then
        echo "  $1 (Found but not executable.)";
    else
        echo "  $1"
    fi
}

# Test if NEXUS_HOME is relative (does not start with /). If relative it should be relative to this script location
FIRST_CHAR=`echo $NEXUS_HOME | cut -c1,1`
if [ "$FIRST_CHAR" != "/" ]
then
    NEXUS_HOME=$REALDIR/$NEXUS_HOME
fi

# Default PIDDIR to os/arch/bits directory
if [ "X$PIDDIR" = "X" ]
then
    PIDDIR="bin/jsw/$DIST_OS-$DIST_ARCH-$DIST_BITS"
fi

# If the PIDDIR is relative, set its value relative to the full NEXUS_HOME to avoid problems if
#  the working directory is later changed.
FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
if [ "$FIRST_CHAR" != "/" ]
then
    PIDDIR=$NEXUS_HOME/$PIDDIR
fi

# Process ID
ANCHORFILE="$PIDDIR/$APP_NAME.anchor"
PIDFILE="$PIDDIR/$APP_NAME.pid"
LOCKDIR="/var/lock/subsys"
LOCKFILE="$LOCKDIR/$APP_NAME"
pid=""

WRAPPER_CMD="$NEXUS_HOME/bin/jsw/$DIST_OS-$DIST_ARCH-$DIST_BITS/wrapper"
if [ ! -x "$WRAPPER_CMD" ]; then
    echo "Missing platform binary: $WRAPPER_CMD"
    exit 1
fi

WRAPPER_CONF="$NEXUS_HOME/bin/jsw/conf/wrapper.conf"

# Build the nice clause
if [ "X$PRIORITY" = "X" ]
then
    CMDNICE=""
else
    CMDNICE="nice -$PRIORITY"
fi

# Build the anchor file clause.
if [ "X$IGNORE_SIGNALS" = "X" ]
then
   ANCHORPROP=
   IGNOREPROP=
else
   ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\"
   IGNOREPROP=wrapper.ignore_signals=TRUE
fi

# Build the lock file clause.  Only create a lock file if the lock directory exists on this platform.
LOCKPROP=
if [ -d $LOCKDIR ]
then
    if [ -w $LOCKDIR ]
    then
        LOCKPROP=wrapper.lockfile=\"$LOCKFILE\"
    fi
fi

checkUser() {
    # $1 touchLock flag
    # $2 command

    # Resolve the location of the 'id' command
    IDEXE="/usr/xpg4/bin/id"
    if [ ! -x "$IDEXE" ]
    then
        IDEXE="/usr/bin/id"
        if [ ! -x "$IDEXE" ]
        then
            echo "Unable to locate 'id'."
            echo "Please report this message along with the location of the command on your system."
            exit 1
        fi
    fi

    # Check the configured user.  If necessary rerun this script as the desired user.
    if [ "X$RUN_AS_USER" != "X" ]
    then
        if [ "`$IDEXE -u -n`" != "$RUN_AS_USER" ]
        then
            # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
            # able to create the lock file.  The Wrapper will be able to update this file once it
            # is created but will not be able to delete it on shutdown.  If $2 is defined then
            # the lock file should be created for the current command
            if [ "X$LOCKPROP" != "X" ]
            then
                if [ "X$1" != "X" ]
                then
                    # Resolve the primary group
                    RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
                    if [ "X$RUN_AS_GROUP" = "X" ]
                    then
                        RUN_AS_GROUP=$RUN_AS_USER
                    fi
                    touch $LOCKFILE
                    chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
                fi
            fi
    
            # Still want to change users, recurse.  This means that the user will only be
            #  prompted for a password once. Variables shifted by 1
            su - $RUN_AS_USER -c "\"$REALPATH\" $2"
    
            # Now that we are the original user again, we may need to clean up the lock file.
            if [ "X$LOCKPROP" != "X" ]
            then
                getpid
                if [ "X$pid" = "X" ]
                then
                    # Wrapper is not running so make sure the lock file is deleted.
                    if [ -f "$LOCKFILE" ]
                    then
                        rm "$LOCKFILE"
                    fi
                fi
            fi
    
            exit 0
        fi
    fi

    # Check that script is not run as root
    LUID=`$IDEXE -u`
    if [ $LUID -eq 0 ]
    then
        echo "****************************************"
        echo "WARNING - NOT RECOMMENDED TO RUN AS ROOT"
        echo "****************************************"
        if [ ! "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
        then
            echo "If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script."
            exit 1
        fi
    fi
}

getpid() {
    if [ -f "$PIDFILE" ]
    then
        if [ -r "$PIDFILE" ]
        then
            pid=`cat "$PIDFILE"`
            if [ "X$pid" != "X" ]
            then
                # It is possible that 'a' process with the pid exists but that it is not the
                #  correct process.  This can happen in a number of cases, but the most
                #  common is during system startup after an unclean shutdown.
                # The ps statement below looks for the specific wrapper command running as
                #  the pid.  If it is not found then the pid file is considered to be stale.
                case "$DIST_OS" in
                    'macosx')
                        pidtest=`$PSEXE -ww -p $pid -o command | grep "wrapper.pidfile" | tail -1`
                        ;;
                    'solaris')
                        pidtest=`$PSEXE ww $pid | grep "wrapper.pidfile" | tail -1`
                        ;;
                    *)
                        pidtest=`$PSEXE -p $pid -o args | grep "wrapper.pidfile" | tail -1`
                        ;;
                esac
                if [ "X$pidtest" = "X" ]
                then
                    # This is a stale pid file.
                    rm -f "$PIDFILE"
                    echo "Removed stale pid file: $PIDFILE"
                    pid=""
                fi
            fi
        else
            echo "Cannot read $PIDFILE."
            exit 1
        fi
    fi
}

testpid() {
    if [ "$DIST_OS" = "solaris" ]
    then
        pid=`$PSEXE ww $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
    else
        pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
    fi
    if [ "X$pid" = "X" ]
    then
        # Process is gone so remove the pid file.
        rm -f "$PIDFILE"
        pid=""
    fi
}

console() {
    echo "Running $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        # The string passed to eval must handles spaces in paths correctly.
        COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP"
        eval $COMMAND_LINE
    else
        echo "$APP_LONG_NAME is already running."
        exit 1
    fi
}
 
start() {
    echo "Starting $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        # The string passed to eval must handles spaces in paths correctly.
        COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP"
        eval $COMMAND_LINE
    else
        echo "$APP_LONG_NAME is already running."
        exit 1
    fi
    getpid
    if [ "X$pid" != "X" ]
    then
        echo "Started $APP_LONG_NAME."
    else
        echo "Failed to start $APP_LONG_NAME."
    fi    
}
 
stopit() {
    echo "Stopping $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        echo "$APP_LONG_NAME was not running."
    else
        if [ "X$IGNORE_SIGNALS" = "X" ]
        then
            # Running so try to stop it.
            kill $pid
            if [ $? -ne 0 ]
            then
                # An explanation for the failure should have been given
                echo "Unable to stop $APP_LONG_NAME."
                exit 1
            fi
        else
            rm -f "$ANCHORFILE"
            if [ -f "$ANCHORFILE" ]
            then
                # An explanation for the failure should have been given
                echo "Unable to stop $APP_LONG_NAME."
                exit 1
            fi
        fi

        # We can not predict how long it will take for the wrapper to
        #  actually stop as it depends on settings in wrapper.conf.
        #  Loop until it does.
        savepid=$pid
        CNT=0
        TOTCNT=0
        while [ "X$pid" != "X" ]
        do
            # Show a waiting message every 5 seconds.
            if [ "$CNT" -lt "5" ]
            then
                CNT=`expr $CNT + 1`
            else
                echo "Waiting for $APP_LONG_NAME to exit..."
                CNT=0
            fi
            TOTCNT=`expr $TOTCNT + 1`

            sleep 1

            testpid
        done

        pid=$savepid
        testpid
        if [ "X$pid" != "X" ]
        then
            echo "Failed to stop $APP_LONG_NAME."
            exit 1
        else
            echo "Stopped $APP_LONG_NAME."
        fi
    fi
}

status() {
    getpid
    if [ "X$pid" = "X" ]
    then
        echo "$APP_LONG_NAME is not running."
        exit 1
    else
        echo "$APP_LONG_NAME is running ($pid)."
        exit 0
    fi
}

dump() {
    echo "Dumping $APP_LONG_NAME..."
    getpid
    if [ "X$pid" = "X" ]
    then
        echo "$APP_LONG_NAME was not running."

    else
        kill -3 $pid

        if [ $? -ne 0 ]
        then
            echo "Failed to dump $APP_LONG_NAME."
            exit 1
        else
            echo "Dumped $APP_LONG_NAME."
        fi
    fi
}

case "$1" in

    'console')
        checkUser touchlock $1
        console
        ;;

    'start')
        checkUser touchlock $1
        start
        ;;

    'stop')
        checkUser "" $1
        stopit
        ;;

    'restart')
        checkUser touchlock $1
        stopit
        start
        ;;

    'status')
        checkUser "" $1
        status
        ;;

    'dump')
        checkUser "" $1
        dump
        ;;

    *)
        echo "Usage: $0 { console | start | stop | restart | status | dump }"
        exit 1
        ;;
esac

exit 0

分享到:
评论

相关推荐

    如何进行Linux安装配置maven以及搭建nexus服务器.docx

    在Linux环境中,构建Java开发的高效工具链通常包括安装配置Maven和搭建Nexus服务器。以下将详细讲解这两个过程。 **一、安装JDK** 在安装Maven之前,首先需要安装Java Development Kit(JDK)。从Oracle官方网站...

    Nexus2windows版Nexus3 Linux版

    Nexus3的Linux版本通常为`.tar.gz`格式,如`nexus-2.14.20-02-bundle.tar.gz`,适用于各种Linux发行版。 【安装与配置】 无论是Nexus2还是Nexus3,安装过程都相对简单,通常包括解压、设置环境变量和启动服务几个...

    nexus-3.18.0-01-unix.tar.gz

    安装和运行 Nexus 3.18.0-01 在 Unix/Linux 系统上的步骤通常如下: 1. 首先,使用 `tar -zxvf nexus-3.18.0-01-unix.tar.gz` 命令解压文件。 2. 创建一个独立的目录,例如 `/opt/nexus/sonatype-work`,用于存放 ...

    nexus-2.7.0-06

    安装与配置Nexus 2.7.0-06:** 1. 下载并解压"nexus-2.7.0-06"压缩包。 2. 修改`conf/nexus.properties`配置文件,根据需求设置Nexus的端口、数据存储路径等。 3. 根据操作系统,执行`bin/nexus start`(Linux/Mac...

    nexus-3.7双系统版本double.zip

    这个"nexus-3.7双系统版本double.zip"文件可能包含的是Nexus 3.7版本在Linux和Windows双操作系统下的安装和配置资源。 在Linux环境中,Nexus通常作为服务运行,以便持续提供对Maven、Gradle和其他构建工具的访问。...

    nexus-3.24.0-02-unix.tar.gz

    标题 "nexus-3.24.0-02-unix.tar.gz" 指的是 Nexus Repository Manager 的一个特定版本的Unix/Linux安装包。Nexus Repository Manager 是Sonatype公司开发的一款强大的软件仓库管理工具,广泛用于Java开发社区,尤其...

    nexus-unix.zip

    在安装和配置Nexus 3.30 Unix版本时,你需要了解以下关键知识点: 1. **Maven仓库体系**:Nexus作为Maven仓库,可以充当代理仓库、缓存远程仓库的内容,还可以作为内部的 Releases 和 Snapshots 仓库,便于团队内部...

    linux环境[64bit]sublime手动安装包及安装说明.zip

    此外,为了使Sublime Text在Linux系统中能够更好地集成,可以安装Winstep的`Nexus dock`或`Docky`等类似应用,这样Sublime Text的图标就会出现在系统任务栏上,方便快捷启动。 最后,为了保证Sublime Text能够接收...

    nexus2

    通过安装插件,Nexus2可以支持更多功能,如支持YAML格式的配置、添加新的存储库类型等。 11. **部署模式**: 可以作为独立服务器运行,也可以在集群环境中部署,实现高可用性和负载均衡。 总之,Nexus2是企业级...

    nexus-3.37.3-02-unix.tar.gz

    在安装过程中,通常会将 "sonatype-work" 配置为指向一个独立的目录,以便于备份、维护和隔离数据。 在部署 Nexus 3 的 Unix 版本时,你需要进行以下步骤: 1. 解压 `nexus-3.37.3-02-unix.tar.gz` 文件。 2. 选择...

    nexus5_drive

    1. **安装向导**:一个交互式程序,指导用户安装驱动程序,通常适用于 Windows 用户,因为 macOS 和 Linux 系统往往能自动识别 Nexus 5。 2. **INF 文件**:Windows 驱动程序的配置文件,包含设备的硬件标识符,用于...

    nexus-2.3.1-01-bundle.zip

    "nexus-2.3.1-01-bundle.zip"是一个包含Nexus 2.3.1-01版本的压缩包,它提供了一个独立的运行环境,使得用户无需额外配置服务器即可使用Nexus的功能。 Nexus的主要功能包括: 1. **中央仓库代理**:Nexus可以作为...

    NX-OS and Cisco Nexus Switching.pdf

    ### NX-OS与Cisco Nexus交换技术:下一代数据中心架构 #### 一、概述 《NX-OS and Cisco Nexus Switching: ...通过学习NX-OS和Cisco Nexus交换机的相关知识,读者将能够更好地应对当前及未来数据中心所面临的挑战。

    软件开发+Maven技术+Maven安装与配置+基础课程

    ### 软件开发+Maven技术+Maven安装与配置+基础课程 #### Maven基础知识与核心概念 Maven是一款非常流行的项目管理和构建工具,在Java项目中被广泛应用。它的核心特性之一是通过POM(Project Object Model)文件来...

    maven私服nuxus介绍和安装使用(和maven没有必然联系)

    ### Maven 私服 Nexus 介绍与安装...以上步骤完成了 Nexus 的基本安装配置,后续可以根据实际需求进一步定制 Nexus 的仓库策略和其他设置。通过 Nexus 私服,可以极大地提高 Maven 项目的构建效率和依赖管理的稳定性。

    maven第三方仓库配置

    为了能够有效地使用Maven进行项目管理,首先需要完成Maven核心程序的安装与配置。 ##### 1. 检查JAVA_HOME环境变量 Maven运行依赖于Java环境,因此在安装Maven之前,需要确认系统已经安装了Java,并且设置了`JAVA_...

    Nexus framework-开源

    1. **组件化编程**:Nexus采用面向组件的编程方式,使得开发者可以将复杂的功能分解为独立的、可重用的单元,这极大地提高了代码的模块化和灵活性。 2. **跨平台支持**:Nexus不仅支持Windows平台,还兼容Linux...

    maven window下安装包

    第2章:Maven的安装/2.2 Linux下的安装 第3章:Maven使用入门/3.1 编写POM 第3章:Maven使用入门/3.2 编写源代码 第3章:Maven使用入门/3.3 编写测试代码 第3章:Maven使用入门/3.4 打包 第3章:Maven使用入门/3.5 ...

    apache-maven-3.6.1.zip

    Apache Maven 是一个强大的项目管理工具,它...通过以上步骤,你将在Linux服务器上成功安装并配置Apache Maven 3.6.1,为Spring Boot项目的部署提供了基础。这将使得依赖管理变得轻松,极大地提高了开发和部署的效率。

Global site tag (gtag.js) - Google Analytics