发表于: 2019-12-29 21:14:27

1 1199


项目部署

shell


#!/bin/bash

#############################################

# this script is Tomcat Management tool                                                                    #

#############################################

#

# functions这个脚本是给/etc/init.d里边的文件使用的。

# https://www.cnblogs.com/image-eye/archive/2011/10/26/2220405.html

. /etc/init.d/functions

# 通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。

# set env

export PATH=$PATH:/bin:/sbin:/usr/sbin

# 设置中文字符

export LANG="zh_CN.UTF-8"

# 设置tomcat启动脚本

export tomcatStart=/www/server/tomcat/bin/startup.sh

# 设置项目部署目录

DeployDir="/www/server/tomcat/webapps/taskTwo/"

# 设置当前目录绝对路径

work_path=$(dirname $(readlink -f $0))

# 监控日志路径

LogDir=/www/wwwlogs/liuhuan.ml.access.log

# 取日志文件名 cut 使用 / 将 LogDir 分割为4个域

LogName=$(echo "$LogDir" | cut -d '/' -f 4 )

# 系统版本

OS_NAME=$(cat /etc/system-release)

# 监控网口名

eth=eth0

# 部署

function deployDir(){

   echo "准备部署中..."

   if [ -d "$DeployDir" ]

       then

         echo "项目taskTwo已存在是否需要重新部署? (y/n) "

         # 接收输入的值 赋值给answer

         read -p "(默认: n):" answer

         # -z  如果string 为空

         [ -z ${answer} ] && answer="n"

         if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]

          then

            echo "开始清理原目录 ${DeployDir} ..."

            # 删除原始目录

            rm -rf ${DeployDir} >/dev/null 2>&1

            sleep 1

            action "原项目已清理完成"  /bin/true

else

             echo "已退出部署"

             exit 1

         fi

   fi

   #解压项目到本目录

   echo "解压项目到 ${work_path}/taskTwo 中 ..."

   unzip -oq taskTwo.war -d ${work_path}/taskTwo >/dev/null 2>&1

   # 防止解压未完成

   sleep 5

   if [ $? -ne 0 ]

       then

           action "taskTwo.war 解压失败!"  /bin/false

exit 1

   fi

   # 上面命令解压成功为 0

   if [ $? -eq 0 ]

       then

           action "解压完成"  /bin/true

echo "部署中 ..."

           mv ${work_path}/taskTwo ${DeployDir} >/dev/null 2>&1

   fi

   sleep 3

   if [ $? -eq 0 ]

       then

           action "部署完成 ..."  /bin/true

# 清理解压文件

           rm -rf ${work_path}/taskTwo >/dev/null 2>&1

           # 部署完成重启tomcat

           restart

           action "清理解压文件完成 ..."  /bin/true

exit 0

   else

       action "部署失败 ..."  /bin/false

# 清理解压文件

       rm -rf ${work_path}/taskTwo >/dev/null 2>&1

       action "清理解压文件完成 ..."  /bin/true

exit 1

   fi

}

还不理解 照着写的

#监控

function Monitor() {

 # 判断网卡存在与否

 if [ ! -d /sys/class/net/$eth ];then

     echo -e "Network-Interface Not Found"

     echo -e "You system have network-interface:\n`ls /sys/class/net`"

 fi

 # 循环

 while [ "1" ]

 do

   # 查看访问数次超过100的ip

   TopIp10=$(cat "$LogDir" | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 10)

   # 查看访问最频繁的10个页面

   TopUrl5=$(grep -v "-" "$LogDir" | awk '{print $11}' | sort | uniq -c | sort -rn | head -n 5)

   # 每分钟请求数

   TopTime5=$(awk '{print $2}' "$LogDir"| cut -c 16-17 | sort | uniq -c | sort -nr | head -n 5)

   # 传输时间大于0.001秒的页面

   TopTime=$(grep -v "-" "$LogDir" | awk '{if($NF>0.001) print $11}' | sort | uniq -c | sort -rn  | head -n 5)

   # 内存

   # 空闲内存 NR>2{print p}{p=$1}:去掉最后一行和第一行

   FreeMem=$(free -m | awk -F : '{print $2}' |awk '{print $3}' | awk 'NR>2{print p}{p=$1}')

   # 空闲swap内存 END{print}: 取最后一行

   FreeSwap=$(free -m | awk -F : '{print $2}' |awk '{print $3}' |  awk 'END{print}')

   # 网卡状态

   STATUS="fine"

   # 获取当前时刻网口接收与发送的流量

   RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')

   TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')

   # 获取1秒后网口接收与发送的流量

   sleep 1

   RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')

   TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')

   clear

   # 获取这1秒钟实际的进出流量

   RX=$((${RXnext}-${RXpre}))

   TX=$((${TXnext}-${TXpre}))

   # 判断接收流量如果大于MB数量级则显示MB单位,否则显示KB数量级

   if [[ $RX -lt 1024 ]];then

     RX="${RX}B/s"

   elif [[ $RX -gt 1048576 ]];then

     RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')

     $STATUS="busy"

   else

     RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')

   fi

   # 判断发送流量如果大于MB数量级则显示MB单位,否则显示KB数量级

   if [[ $TX -lt 1024 ]];then

     TX="${TX}B/s"

     elif [[ $TX -gt 1048576 ]];then

     TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')

   else

     TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')

   fi

   # 打印信息

   echo -e "==================================="

   echo -e "TomCat 监控工具"

   echo -e "version 1.0"

   echo -e "==================================="

   echo -e "System: $OS_NAME"

   echo -e "DateTime:   `date +%F`  `date +%k:%M:%S`"

   echo -e "MemFree:${FreeMem}M SwapFree:${FreeSwap}M"

   echo -e "Status: $STATUS"

   status

   echo -e " \t     RX \tTX"

   echo "------------------------------"

   # 打印实时流量

   echo -e "$eth \t $RX   $TX "

   echo -e "- \t $LogName \t -"

   echo -e "\t Top10 ip"

   echo "访问次数 IP"

   echo "$TopIp10"

   echo "------------------------------"

   echo -e "\t Top5 页面"

   echo "访问次数 页面"

   echo "$TopUrl5"

   echo "------------------------------"

   echo -e "\t Top5 传输时间大于0.001秒的页面"

   echo "统计次数 页面"

   echo "$TopTime"

    echo "------------------------------"

   echo -e "\t Top5 并发(每分钟)"

   echo -e " 并发数 时间"

   echo "$TopTime5"

   echo "------------------------------"

   # 退出信息

   echo -e "Press 'Ctrl+C' to exit"

 done

}

</table>

</form>

</div>

<% try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn=DriverManager.getConnection("jdbc:odbc:a","root","database1");

Statement stmt = conn.createStatement(

ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

ResultSet rs = null;

String name =new String(request.getParameter("

UserName").getBytes(“8859_1”));

String passwd =new String(request.getParameter("

UserPassword").getBytes(“8859_1”));

if(String_sql==null)

{

out.println("登陆名不可以为空");

out.println(“<HR>”);

}

else{

String_sql="select * from student where name ="+name+" and password="+psword+;

rs=stmt.executeQuery(String_sql)

while(rs.next())

{ out.println("登陆成功!");

out.println("您的用户名是:"+name)

out.println("您的密码是:"+password);

rs.close();

stmt.close();

conn.close();}

}

Catch( Exception e )

{out.println(“<font color=red size=5><B>”);

out.println(“出错了!”);

out.println(“</B></font>”);

}%>

</body>

<ml>

注:jsp是嵌套在HTML中的,大家可以用MyEclipse或者eclipse或者dw都可以实现代码的调试。

新写一个JSP准备实现的登录模块



什么是Jetty

  Jetty是一个提供TTP服务器、HTTP客户端和javax.servlet容器的开源项目。它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。 

Jetty可以用来: 

◆一个传统的web 服务器来处理静态和动态网页; 

◆最为一个专用HTTP服务器的后台来处理动态网页,就像Apache使用mod_proxy; 

◆作为一个JAVA应用程序的内嵌组件。 

◆集成到JavaEE服务器作为web容器

 在Maven中获取Jetty

Maven坐标

Jetty从一开始就已经存在于Maven中心了,所以Maven的坐标在最近几年也发生了变化,当Jetty基于SourceForge管理时Maven的groupId是org.mortbay.jetty,当Jetty 7来到eclipse后groupId也改变了。

Jetty的POM坐标如下

那Jetty与Tomcat比较,有哪差异呢?

Jetty更轻量级。这是相对Tomcat而言的。 

由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。

jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。

然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。


问题:看不懂 照抄

明日计划 把上面的消化了。。



返回列表 返回列表
评论

    分享到