技术标签: tomcat
[[email protected].com ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[[email protected].com ~]# uname -a
Linux test.com 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[[email protected].com ~]# getenforce
Disabled
[[email protected].com ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
2 、安装 JDK
1、命令集
[[email protected].com ~]# tar xf jdk-8u201-linux-x64.tar.gz -C /usr/local/
[[email protected].com ~]# cd /usr/local/
[[email protected].com local]# ln -s jdk1.8.0_201/ java
# 设置环境变量
[[email protected].com ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[[email protected].com ~]# source /etc/profile
2、测试jdk是否安装成功
[[email protected].com ~]# java -version
java version "jdk1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
3、安装Tomcat
[[email protected].com ~]# tar xf apache-tomcat-8.0.27.tar.gz -C /usr/local/
[[email protected].com ~]# cd /usr/local/
[[email protected].com ~]# ln -s /usr/laocal/apache-tomcat-8.0.27 /usr/local/tomcat
# 设置环境变量
[[email protected].com ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export TOMCAT_HOME=/usr/local/tomcat
export JRE_HOME=/usr/local/java/jre
export PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 注意授权,统一权限
[[email protected].com ~]# chown -R root.root /usr/local/jdk/ /usr/local/tomcat/
4、检查tomcat是否安装成功
[[email protected].com ~]# /usr/local/tomcat/bin/version.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.27
Server built: Sep 28 2015 08:17:25 UTC
Server number: 8.0.27.0
OS Name: Linux
OS Version: 3.10.0-693.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_60-b27
JVM Vendor: Oracle Corporation
3、Tomcat 的管理
# 启动程序/usr/local/tomcat/bin/startup.sh
# 关闭程序/usr/local/tomcat/bin/shutdown.sh
4、检查tomcat是否启动正常
[[email protected].com ~]# netstat -lntup |grep java
tcp6 0 0 :::8080 :::* LISTEN 30560/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 30560/java
tcp6 0 0 :::8009 :::* LISTEN 30560/java
5、Tomcat 日志说明
[[email protected].com ~]# tailf /usr/local/tomcat/logs/catalina.out
24-Nov-2017 15:09:51.654 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
24-Nov-2017 15:09:51.665 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
24-Nov-2017 15:09:51.670 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 60037 ms
上线的代码有两种方式:
1、直接部署 web 站点
[[email protected].com webapps]# pwd
/usr/local/tomcat/webapps
[[email protected].com webapps]#
[[email protected].com webapps]# cat /usr/local/tomcat/webapps/memtest/meminfo.jsp
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory:"+tm+"MB"+"<br>");
out.println("Free memory:"+fm+"MB"+"<br>");
out.println("Available memory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>
站点部署
[[email protected].com webapps]# ls
docs examples host-manager logs manager memtest memtest.war ROOT
2、自定义默认网站目录
方法一
方法二
[[email protected].com ~]# vim /usr/local/tomcat/conf/server.xml +125
…… #添加上这两行
<Context path="" docBase="/usr/local/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
<Context path="/40team" docBase="/usr/local/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
……
修改配置文件后,要重启服务
[[email protected].com ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected].com ~]# /usr/local/tomcat/bin/startup.sh
7、Tomcat 多实例配置
多虚拟主机:nginx 多个Server标签(域名,ip,端口) 进程数量固定 master+worker
多实例(多进程):同一个程序启动多次,分为两种情况:
第一种:一台机器跑多个站点;
第二种:一个机器跑一个站点多个实例,配合负载均衡
1、复制程序文件
[[email protected].com ~]# cd /usr/local/tools/
[[email protected].com ~]# tar xf apache-tomcat-8.0.27.tar.gz
[[email protected].com ~]# cp -a apache-tomcat-8.0.27 tomcat8_1
[[email protected].com ~]# cp -a apache-tomcat-8.0.27 tomcat8_2
2、修改端口,以启动多实例。多实例之间端口不能一致
[[email protected].com ~]# sed -i 's#8005#8011#;s#8080#8081#' tomcat8_1/conf/server.xml
[[email protected].com ~]# sed -i 's#8005#8012#;s#8080#8082#' tomcat8_2/conf/server.xml
[[email protected].com application]# diff tomcat8_1/conf/server.xml tomcat8_2/conf/server.xml
22c22
< <Server port="8011" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
67c67
< Define a non-SSL/TLS HTTP/1.1 Connector on port 8081
---
> Define a non-SSL/TLS HTTP/1.1 Connector on port 8082
69c69
< <Connector port="8081" protocol="HTTP/1.1"
---
> <Connector port="8082" protocol="HTTP/1.1"
75c75
< port="8081" protocol="HTTP/1.1"
---
> port="8082" protocol="HTTP/1.1"
3、将配置好的tomcat程序打包,以备之后使用
[[email protected].com ~]# tar zcf muti_tomcat8.tar.gz ./tomcat8_1 ./tomcat8_2
4、启动tomcat多实例
[[email protected].com ~]# /usr/local/tomcat8_1/bin/startup.sh
[[email protected].com ~]# /usr/local/tomcat8_2/bin/startup.sh
5、检查端口是否启动
[[email protected].com tomcat8_1]# netstat -lntup |grep java
tcp6 0 0 127.0.0.1:8011 :::* LISTEN 31906/java
tcp6 0 0 127.0.0.1:8012 :::* LISTEN 31932/java
tcp6 0 0 :::8080 :::* LISTEN 31812/java
tcp6 0 0 :::8081 :::* LISTEN 31906/java
tcp6 0 0 :::8082 :::* LISTEN 31932/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 31812/java
tcp6 0 0 :::8009 :::* LISTEN 31812/java
6、将每个实例的网页进行区分
[[email protected].com ~]# echo 8081 >>/usr/local/tomcat8_1/webapps/ROOT/index.jsp
[[email protected].com ~]# echo 8082 >>/usr/local/tomcat8_2/webapps/ROOT/index.jsp
7、在浏览器访问,进行测试
使用curl 命令进行测试,awk 进行关键字提取
[[email protected].com ~]# curl -s 10.0.0.5|awk 'END{print}'
8082
[[email protected].com ~]# curl -s 10.0.0.5|awk 'END{print}'
8081
Jmeter概述Jmerter简介Apache Jmeter是Apache组织的开源项目,是一个纯Java桌面应用,用于压力测试和性能测试。它最初设计用于Web应用测试后来扩展到其他测试领域。Jmeter功能能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。完全的可移植性和100%纯java。完全Swing(ja...
形如$2^{P}-1$的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果PPP是个素数,$2^{P}-1$不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。
基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人。我主要关注了下面这位大牛和他的学生:David M. BleiLDA的创始者,04年博士毕业。一篇关于Topic Model的博士论文充分体现其精深的数学概率功底;而其自己实现的LDA又可体现其不俗的编程能力。说人无用,有论文为证:J. Chang and D. B
在这个演示中,我展示了如何使用 HostVisual 和 VisualTarget 类来组合来自不同线程的 UI 片段。有一些限制:即工作线程拥有的 UI 不接收输入事件。在此过程中,我们还必须解决一些烦恼,但事实证明这些烦恼相当小。...
S3C2440A datasheet上关于这两条指令的说明如下: SINGLE DATA TRANSFER (LDR, STR), The single data transfer instructions are used to load or store single bytes or words of data. 简单的理解就是数据的传送/存储指令。 接下来是
为什么80%的码农都做不了架构师?>>> ...
程序员本来就很辛苦了,但看不懂英语文档更让一个程序员更加头疼。英语对一个程序员来说还是很重要的,英语的学习需要日积月累,不怕大家笑话,我初中时的英语还是杠杠的,记得中考,我英语一题没有错,就作文扣了两分,也许是初中的英语简单吧,也许是高中没有努力学习英语,不知道哪天,英语就突然间陨落了,就在也好不起来了,大学时考四级,还有点底子,一次性考过了,后来的六级就没有这么幸运了,考了5次都没有过,5次啊,...
一、写Mybatis程序错误错误1:xml的编码问题IDEA报错为:Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。错误1的解决方案:设置idea的默认编码和项目编码(建议使用)方法一:依次点击File–Settings–Editor–File Encodings进行如下配置:清除maven中的缓存后,然后重启idea,重新
knn基本概念knn把每个样例看做是空间上的一个点,给定一个测试样例,使用适当的邻近性度量算法,计算出该点与训练集中其他点的邻近度。选择K个最相近的点。在选择出的K个样例中,比例最好的类就是测试样例的类。从以上描述中可以看出,如果k选择的太小,该算法容易受到噪声的影响,而产生过度拟合的影响,然而如果选择的过大,可能造成误分类。算法描述:k是最近邻数目,D是训练样例的
简单来说,Electron是用于桌面开发的框架。在安装环境前,先从github下载项目demo》https://github.com/electron/electron-api-demos环境配置过程比较冗长,请确保足够耐心。。Electron项目运行的前提环境1.node.js的安装首先进入node.js官网下载node.js,路径https://nodejs.or...
本文面向的读者:想写发明专利,但又不知道无从下手。文章目录第一步,凡事留个心眼第二步,构思解决方案第三部,查询类似方案第四部,撰写交底书第一步,凡事留个心眼生活和工作中,处处有让我们觉得不够方便甚至让我们恼火的地方,这些地方都有潜力成为我们的专利来源。用一个新方法解决了一个痛点,就能申请一项发明专利。以共享单车为例,我们有时会把雨伞、饮料之类的小物件遗忘在单车的车篮中。遇到这种事,一般人也...
6/11汉诺塔问题三根杆子ABC,A上有N个穿孔圆盘,圆盘尺寸由下到上依次变小,将所有圆盘移动到C盘并遵守如下规则:a每次只能移动一个圆盘;b始终保持大盘在下小盘再上。思想:分而治之:把一个富足的大规模问题分解成若干相似的小规模子问题,等问题规模足够小的时候就可以直接得到小规模问题的解再把小规模问题的解组合起来就是大规模问题的解。A盘上只有一个圆盘时,直接起始杆到目标杆(A-C)A盘上有两个圆盘时,把最上面的一个圆盘搬运到辅助杆,再做步骤1,再把辅助杆上的第一个圆盘放到目标盘A盘上有