发表于: 2019-12-29 21:14:27
1 1192
项目部署
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便是更优的。
问题:看不懂 照抄
明日计划 把上面的消化了。。
评论