zoukankan      html  css  js  c++  java
  • 跟我学习dubbo-在Linux操作系统上手工部署Dubbo服务(5)

    在Linux操作系统上手工部署Dubbo服务

    1、环境变量配置

     Java环境变量----只需要JRE

    vi /etc/profile

    ## java env

    export JAVA_HOME=/usr/local/java/jdk1.7.0_72

    export JRE_HOME=$JAVA_HOME/jre

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/li/tools.jar:$JRE_HOME/lib/rt.jar

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    source /etc/profile

    2、部署目录规范

    目的:便于管理,避免应用迁移时的命名冲突。

    我定义的目录结构如下(linux)下:

    --home   ----------linux home目录下

        --jeesml    -------------用户信息

            --jeesml  ------------项目类型

                  --app  ------------app应用

                        --app1  -------------app应用1

                        --app2...  -----------app应用2

                --service ----------服务应用

                        --service1  ----------服务1

                        --service2... ---------服务2

                --job  ------------定时调度应用

                    --job1...  ------------定时调度工程

                --web   ------------Web项目工程

                    --web1  ---------Web项目工程1

                    --web2... ---------Web项目工程2

    3、手工维护Dubbo服务 (不建议使用)

    执行命令:

    # java -jar edu-service-xxx.jar &

    检查一下有哪些java程序在运行:
    # ps -ef | grep java 

    kill PID 进程id

    kill -9 PID  强杀,不建议使用,可能会照成数据丢失

    4、自定义Dubbo服务维护的Shell脚本 (建议使用)

     脚本命名规范:

    /home/jeesml/jeesml/service/xxx/service-xxx.sh

    例如: /home/jeesml/jeesml/service/user/service-user.sh

    效果: cd /home/jeesml/jeesml/service/user

    . /service-user.sh start

    . /service-user.sh stop

    . /service-user.sh restart

    5、服务维护注意事项

    (1) 脚本规范---------尽可能通用

    (2) 守护进程

    (3) 内存调优设置-----按需调整

    (4) 日志处理---------只保留应用Log4j输出的日志

    (5) 避免服务冲突 ----进程名、端口

    (6) 避免进程误杀-----全匹配

    简单脚本实例:

    #!/bin/sh

    ## java env
    export JAVA_HOME=/usr/local/java/jdk1.7.0_72
    export JRE_HOME=$JAVA_HOME/jre

    ## service name
    APP_NAME=user

    SERVICE_DIR=/home/jeesml/jeesml/service/$APP_NAME
    SERVICE_NAME=edu-service-$APP_NAME
    JAR_NAME=$SERVICE_NAME.jar
    PID=$SERVICE_NAME.pid

    cd $SERVICE_DIR

    case "$1" in

        start)
            nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
            echo $! > $SERVICE_DIR/$PID
            echo "=== start $SERVICE_NAME"
            ;;

        stop)
            kill `cat $SERVICE_DIR/$PID`
            rm -rf $SERVICE_DIR/$PID
            echo "=== stop $SERVICE_NAME"

            sleep 5
            ##
            ## edu-service-aa.jar
            ## edu-service-aa-bb.jar
            P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
            if [ "$P_ID" == "" ]; then
                echo "=== $SERVICE_NAME process not exists or stop success"
            else
                echo "=== $SERVICE_NAME process pid is:$P_ID"
                echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
                kill -9 $P_ID
            fi
            ;;

        restart)
            $0 stop
            sleep 2
            $0 start
            echo "=== restart $SERVICE_NAME"
            ;;

        *)
            ## restart
            $0 stop
            sleep 2
            $0 start
            ;;

    esac
    exit 0

    脚本配置灵活高深,满足需求则可 可参考官方脚本样例,具体请到交流群(446855438)里面下载附件信息

    请各位持续关注《跟我学习dubbo-在Linux操作系统上手工部署Dubbo服务(5)》

    由于第一次写关于dubbo的博客,还希望大家加入dubbo学习交流群(446855438),一起学习。

  • 相关阅读:
    求数组中最大子数组的和(二维环)
    《梦断代码》读书笔记 第3篇
    求数组中最大子数组的和(1000)
    求数组中最大子数组的和(环)
    电梯调度1
    求数组中最大子数组的和(二维)
    读书笔记之反思篇
    二维数组求最大子数组
    结对开发~环形数组篇
    结对开发 ~挑战来了
  • 原文地址:https://www.cnblogs.com/jeesml/p/5111852.html
Copyright © 2011-2022 走看看