项目代码部署到Linux上并运行

4 篇文章 0 订阅

举例:java项目为cap-cbs-mgr,准备部署到开发环境的linux机器上。

1.本地项目的根目录下需要放入三个文件:package-upload.bat,PLINK.EXE,PSCP.EXE。

package-upload.bat的shell脚本内容如下:(本文中涉及账号密码就不方便显示了)

echo off

set "PROJECT_NAME=xxx"
set "HOST=xx.xx.xx.xx"
set "USER=xxx"
set "PWD=xxxx"
set "TOMCAT_HOME=/apps/svr/tomcat-cbs-mgr"
set "SCRIPT=/home/apps/tomcat-cbs-mgr"
set "ZOOKEEPER=xx.xx.xx.xx.xx:xxxx,xx.xx.xx.xx.xx:xxxx,..."

REM ---------------------------------------------
REM * package
REM ---------------------------------------------
call gradlew --refresh-dependencies clean war

REM ---------------------------------------------
REM * Stop remote tomcat and delete all files and 
REM * folders in tomcat webapps directory
REM ---------------------------------------------
plink -pw %PWD% %USER%@%HOST% "sh %SCRIPT% stop ; rm -rf %TOMCAT_HOME%/webapps/cap-cbs*"

REM ---------------------------------------------
REM * Copy war file to remote tomcat webapps directory
REM ---------------------------------------------
pscp -pw %PWD% %PROJECT_NAME%-webapp\build\libs\*.war %USER%@%HOST%:%TOMCAT_HOME%/webapps

REM ---------------------------------------------
REM * Start remote tomcat
REM * Show remote tomcat logs, press Ctrl + C to exit
REM ---------------------------------------------
plink -pw %PWD% %USER%@%HOST% "export VIP_CFGCENTER_ZK_CONNECTION=%ZOOKEEPER% ; source /etc/profile;  sh %SCRIPT% start ; sh %SCRIPT%"


PLINK.EXE和PSCP.EXE这两个打包和传输工具可以自行去网上下载。

Linux服务器上需要:安装tomcat【路径为/apps/svr/tomcat-cbs-mgr】,jdk【路径为/apps/svr/jdk7】,tomcat-cbs-mgr脚本【路径为/home/apps/tomcat-cbs-mgr】,环境变量的配置文件profile【路径为/etc/profile】。

tomcat-cbs-mgr的shell脚本内容如下:

#!/bin/bash

## language environment setting
export LANG=zh_CN.UTF-8

## Tomcat server base directory
TOMCAT_HOME=/apps/svr/tomcat-cbs-mgr

ENV=development

## Catalina base directory, the directory is same with $TOMCAT_HOME
CATALINA_HOME=$TOMCAT_HOME

## Tomcat server logs directory
TOMCAT_LOGS_DIR=$TOMCAT_HOME/logs

## Tomcat service process ID file
TOMCAT_PID_FILE=$TOMCAT_LOGS_DIR/server.pid

## Identify application that view process infomation using 'ps', 'top', etc. commands
APP_MAGIC_NUMBER=cap-cbs-mgr

## comment the line on online environment
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV"

## JVM parameters
JAVA_OPTS="$JAVA_OPTS -Dapp.name=$APP_MAGIC_NUMBER"
JAVA_OPTS="$JAVA_OPTS -Dwebapps.logs.dir=$TOMCAT_LOGS_DIR"
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx512m"

if [ -z $JAVA_HOME ]; then
  export JAVA_HOME=/apps/svr/jdk7
fi

if [ -z $VIP_CFGCENTER_ZK_CONNECTION ]; then
  export VIP_CFGCENTER_ZK_CONNECTION=xx.xx.xx.xx.xx:xxxx,xx.xx.xx.xx.xx:xxxx,...
fi


echo "======================================="
echo " JAVA_HOME   : $JAVA_HOME"
echo " TOMCAT_HOME : $TOMCAT_HOME"
echo " LOGS_DIR    : $TOMCAT_LOGS_DIR"
echo " PID_FILE    : $TOMCAT_PID_FILE"
echo " APP_MAGIC   : $APP_MAGIC_NUMBER"
echo " ENV         : $ENV"
echo "======================================="


if [ "$1" == "" ]; then
  tail -F $TOMCAT_LOGS_DIR/*.log $TOMCAT_LOGS_DIR/catalina.out
  exit 0
fi

RUNNING_PID=$(ps -efww | grep $APP_MAGIC_NUMBER | grep -v grep | awk '{print $2}')

if [ "$1" == "start" ]; then

  if [ ! -z "$RUNNING_PID" ]; then
    echo "tomcat started, PID = $RUNNING_PID"
    exit 1
  fi

  rm -rf $TOMCAT_LOGS_DIR/* $TOMAT_HOME/work/*

  source $TOMCAT_HOME/bin/catalina.sh start "$@" &
  sleep 0.1s  
  PID=$(ps -efww | grep $APP_MAGIC_NUMBER | grep -v grep | awk '{print $2}')
  echo $PID > $TOMCAT_LOGS_DIR/server.pid
  echo "tomcat startup, PID = $PID, using $0 command tail start logging"
  exit 0
fi

if [ "$1" == "stop" ]; then

  if [ -z "$RUNNING_PID" ]; then
    echo "tomcat no start"
    if [ -f "$TOMCAT_PID_FILE" ]; then
      rm "$TOMCAT_PID_FILE"
    fi
    exit 2
  fi

  # source $TOMCAT_HOME/bin/catalina.sh stop "$@" &
  kill -9 $RUNNING_PID
  echo "tomcat stopping..., using $0 command tail stop log"
  rm "$TOMCAT_PID_FILE"
  exit 0
fi



当然了,有需要的朋友不能全盘照搬,需要根据自己项目和服务器的实际情况加以改动即可使用~~~ 微笑

                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
客户端,采用多线程。一个接收服务器消息,一个发送消息给服务器。 服务器,采用select()进行IO复用。 编译文件是Makefile。 (1)用户登录: 【1】client端接收用户名和密码->存于结构体中->将结构体发送给server端。 【2】server端接收client发送的结构体->打开存储用户名密码的文件->文件写入链表中->遍历链表验证用户信息。 【3】server端验证正确发送“登陆成功”消息,错误发回“登陆失败”消息。client端接收,“登陆成功”则进入聊天,“登陆失败”则跳出。 【4】若验证成功,server端产生一个新的套接字newfd,将它与用户名封装于同一个结构体中,存储在线用户的信息。 消息、存储在线用户信息结构体: typedef struct message { int type; //服务器用于判断该执行的功能 int fd; int mode; //标志位,表示用户的发言权限,1为正常,0为禁言 char name[NAMELEN]; char mima[NAMELEN]; char from[20]; char to[20]; //聊天时的收信人 char file_name[20]; //发送文件时的文件名 char mtext[100]; //聊天时发送的消息内容 struct message *next; }Mess; (2)一对多聊天: 【1】client端发送欲发送的信息给server端。 【2】server端遍历在线人信息链表,找到每个在线人的套接字描述符,将消息发送给链表中的每个人。 【3】可以通过输入“:)”, “:(”, “bye”来发送笑脸,悲伤脸和退出聊天;检测敏感词汇“fuck”、“shit”,禁止发送。 (3)一对一聊天: 【1】client端发送欲发送的信息和信息的接收者给server端。 【2】server端根据收到的接收者名字在在线人链表中查找该接收者的套接字描述符,找到后就将消息发送给该接收者。 【3】可以通过输入“:)”, “:(”, “bye”来发送笑脸,悲伤脸和退出聊天;检测敏感词汇“fuck”、“shit”,禁止发送。 (4)文件传输 【1】client端发送预发送的文件名和接收者名字到server端。 先打开(不存在则创建)一个文件,将文件内容读到缓冲区buffer,再将buffer的内容复制到结构体Mess中,最后将结构体发送给server端。 【2】server端先将接收到的文件重命名(因为相同文件目录下不能存在同名文件),再将收到的文件和新的文件名一同放入tab1中(并且在tab1开头写“#”)发送给client端。 【3】当client端收到以“#”开头的消息,执行文件接收,先创建一个文件,再写入相应内容。 (5)管理员模式 【1】禁言 【2】解禁

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值