1.JVM基本介绍

JAVA编译型 ---> 编译
C 编译型--->
linux --->编译一次
windows --->编译一次
macos
ubuntu
跨平台 移值型差 只需要将源代码进行一次编译 war,能够在多处运行。
jvm虚拟机 windows jvm --->war
linux jvm --->war
mac jvm --->war jvm 如何安装?
jvm 需要 jre java运行环境 环境:
jre: java运行环境 包含 jvm
jdk: java开发环境 包含 jre 只想运行java代码,只需要jre即可
既想要运行环境,开发环境 jdk

2.Tomcat与Nginx区别

tomcat
基于java开发一个web服务器软件, 和nginx类似.
tomcat能直接解析jsp代码,以及静态资源.
nginx + tomcat

3.Tomcat安装配置启动

	[root@web01 ~]# yum install java -y

二进制安装tomcat
[root@web01 ~]# mkdir /soft && cd /soft
[root@web01 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web01 soft]# /soft/tomcat/bin/startup.sh
[root@web01 soft]# netstat -lntp|grep java
tcp6 0 0 :::8009 :::* LISTEN 8500/java
tcp6 0 0 :::8080 :::* LISTEN 8500/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 8500/java

二进制:

	jdk使用二进制
​ tomcat使用二进制
​ [root@es-node1 ~]# mkdir /soft/
​ [root@es-node1 ~]# tar xf jdk-8u60-linux-x64.tar.gz -C /app/
​ [root@es-node1 ~]# ln -s /soft/jdk1.8.0_60 /soft/jdk
​ [root@es-node1 ~]# vim /etc/profile
​ #...最后面添加...
​ export JAVA_HOME=/app/jdk
​ export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
​ export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar [root@es-node1 ~]# tar xf apache-tomcat-9.0.26.tar.gz -C /soft
[root@es-node1 ~]# /soft/apache-tomcat-9.0.26/bin/startup.sh

4.Tomcat配置文件详解

	一个server表示一个tomcat实例
一个server中包含多个Connector连接器,Connector的主要功能是接受、响应用户请求。
service的作用是:将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念
<!--Tomcat默认站点-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> ​ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
​ prefix="localhost_access_log" suffix=".txt"
​ pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host>
<!--tomcat虚拟主机-->
<Host name="tomcat.old.com" appBase="/code1"
unpackWARs="true" autoDeploy="true"> ​ <!--类似于nginx的location path是访问的路径 ->映射 docBase是真实的路径-->
​ <Context docBase="/code1/admin" path="/test" reloadable="true"/> ​ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
​ prefix="tomcat1_access_log" suffix=".txt"
​ pattern="%h %l %u %t &quot;%r&quot; %s %b" />
​ </Host>
​ <!--zrlog站点-->
<Host name="zrlog.old.com" appBase="/code/zrlog"
​ unpackWARs="true" autoDeploy="true"> <Va0lve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="zrlog_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host> <!--Tomcat默认站点-->
<Host name="jpress.old.com" appBase="/code/jpress"
unpackWARs="true" autoDeploy="true"> ​ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
​ prefix="localhost_access_log" suffix=".txt"
​ pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host>
</Engine> </Service>

5.Tomcat配置虚拟主机 ---> 一台服务器运行多个站点

	<!--tomcat虚拟主机-->
​ <Host name="tomcat1.oldxu.com" appBase="/code1"
​ unpackWARs="true" autoDeploy="true"> <!--类似于nginx的location path是访问的路径 ->映射 docBase是真实的路径-->
<Context docBase="/code1/admin" path="/test" reloadable="true"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat1_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
无法启动:
1.替换配置文件: pkill java 然后在启动
2.配置文件写错
3.虚拟主机是添加,不要修改
4.context如果写了,一定要有对应的目录,不然整体就报错
/soft/tomcat/logs/catalina.out

6.Tomcat部署博客项目zrlog

域名: zrlog.oldxu.com:8080
站点目录: /code/zrlog <--ROOT 10.0.0.7 tomcat 端口 8080 10.0.0.51 mysql 端口 3306

1.配置server.xml文件 ,新增在 engline

[root@web01 ~]# vim /soft/tomcat/conf/server.xml
<!--zrlog站点-->
<Host name="zrlog.oldxu.com" appBase="/code/zrlog"
unpackWARs="true" autoDeploy="true"> <Va0lve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="zrlog_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host> 2.创建站点目录,上传zrlog的war包
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war <---这个是zrlog的war包,名称就叫ROOT 3.重启Tomcat服务
[root@web01 zrlog]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out 4.配置域名劫持

5.在172.16.1.51的数据库上,创建一个zrlog的库,配置授权访问用户

	[root@db01 ~]# mysql -uroot -poldxu.com
​ MariaDB [(none)]> create database zrlog charset utf8;
​ <---此前配置过all用户,可以复用
​ MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com'; ​
	jeesns  --社交
​ jpress --博客 (群里-->新增Host -->新增站点目录--->jpress.war修改为ROOT.war)
​ zrlog --博客 ​

源码包-->jar包--war包的关系?

	源码包  -->  由开发人员编写的

		maven

	jar     -->  源码包编译
无法独立运行, 需要被某个程序所依赖 mysql连接
可以独立运行, java -jar xx.jar 启动
https://gitee.com/chejiangyi/dingding-sonar war --> 源码包编译, 可以直接放在tomcat中进行部署 (这种类型居多) 源码-->maven编译-->jar或者war包
war包直接放入tomcat即可运行, war在运行过程中需要依赖 jar包
jar包 分为两种, 可独立运行(对外提供服务), 不可独立运行(被war依赖)

1.配置conf/server.xml 增加一个Host

    <!--jpress站点-->
​ <Host name="jpress.oldxu.com" appBase="/code/jpress"
​ unpackWARs="true" autoDeploy="true"> ​ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
​ prefix="jpress_access_log" suffix=".txt"
​ pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

2.上传代码

[root@web01 ~]# mkdir /code/jpress && cd /code/jpress
[root@web01 jpress]# rz jpress.war
[root@web01 jpress]# mv jpress.war ROOT.war

3.重启Tomcat

[root@web01 jpress]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

7.Tomcat配置基础认证 ---> 了解

如何开启 Server Status Host Manager页面

1.配置conf/tomcat-users.xml



2.如果访问还是403,是因为tomcat默认仅运行本地访问该管理页面,需要允许同网段主机访问
[root@web01 ~]# ll /soft/tomcat/webapps/manager/
[root@web01 ~]# ll /soft/tomcat/webapps/host-manager/ [root@es-node1 tomcat]# vim 项目目录下/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
#修改为
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />

3.启用zrlog的基础认证 ---> zrlog.oldxu.com/admin 了解 使用Nginx替代

[root@es-node1 tomcat]# vim /code/zrlog/ROOT/WEB-INF/web.xml

<web-app>
...
<security-constraint>
<web-resource-collection>
<web-resource-name>zrlog</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection> ​ <auth-constraint>
​ <role-name>zrlog_role</role-name>
​ </auth-constraint>
</security-constraint> <login-config>
<auth-method>BASIC</auth-method>
<realm-name>Default</realm-name>
</login-config> ...
</web-app>

#配置用户名密码,关联对应的角色(多个role不要使用相同用户)

[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml

<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>

#重启tomcat

[root@es-node1 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh

8.部署多节点Tomcat-->mysql

10.0.0.7   ---> 10.0.0.51

​	10.0.0.8   ---> 10.0.0.51
1.安装jdk
[root@web02 ~]# yum install java -y
2.安装tomcat  部署代码  (scp)
在web02上操作
[root@web02 soft]# rm -rf /soft/tomcat/
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web02 soft]# /soft/tomcat/bin/startup.sh

3.修改域名解析


8.部署多节点Tomcat-->NFS

10.0.0.7   ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
10.0.0.31

1.安装NFS

[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# systemctl restart nfs

2.找到图片资源 推送图片资源至NFS

[root@web01 ~]# scp -rp /code/zrlog/ROOT/attached/* root@172.16.1.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/ #重新授权

3.多节点挂载

mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/

4.生成密码htpasswd -b -c /etc/nginx/auth_conf baozexu 123

upstream old{
server 172.16.1.7:8080;
server 172.16.1.8:8080;
}
server {
listen 80;
server_name zrlog.old.com;
location / {
proxy_pass http://old;
proxy_set_header Host $http_host;
auth_basic "baozexu";
auth_basic_user_file "/etc/nginx/auth_conf"; } }

tomcat的基本应用的更多相关文章

  1. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  2. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  3. Tomcat shutdown执行后无法退出进程问题排查及解决

    问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事.而且我内心总觉得这可能是tomcat像nginx一 ...

  4. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  5. Linux CentOS 配置Tomcat环境

    一.下载Tomcat 下载Tomcat方式也有两种,可以参考我的前一篇博文Linux CentOS配置JDK环境,这边就不再赘述. 二.在Linux处理Tomcat包 1.创建tomcat文件夹 mk ...

  6. 在Linux虚拟机下配置tomcat

    1.到Apache官网下载tomcat http://tomcat.apache.org/download-80.cgi 博主我下载的是tomcat8 博主的jdk是1.8 如果你们的jdk是1.7或 ...

  7. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  8. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

    有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: PermGen space的错误, 我们知道可以通过jvm ...

  9. mac下安装及配置tomcat

    mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...

  10. 设置tomcat远程debug

    查看端口占用情况命令: netstat -tunlp |grep 8000 tomcat 启动远程debug: startup.sh 中的最后一行 exec "$PRGDIR"/& ...

随机推荐

  1. css布局技巧

    CSS用户界面样式 鼠标样式currsor li{ cursor:pointer: } 设置或检索在对象上移动鼠标指针采用何种系统预定义的光标形状 属性值 描述 default 默认 pointer ...

  2. 如何通过纯javascript实现表单提交

    通常,如果是POST方法,一般使用vuejs+axios,或使用Jquery实现表单提交.有些地方,我想使用纯JS实现,比方简单的登陆跳转.话不多说,看原代码, laravel中的HTML部分,如果不 ...

  3. iOS开发时获取第一响应者

    上篇中提到键盘相应时间中用到了获取当前第一响应者的方法是苹果的是有方法,无法上传到App Store,本文将介绍一种非常简单的且未用到私有API的方法来获取当前第一响应者. 实现思路:用到的iOS A ...

  4. Xcode修改工程文件名字

    http://stackoverflow.com/questions/8262613/renaming-xcode-4-project-and-the-actual-folder

  5. Discuz! 全局变量说明

    $_G 保存了 Discuz! 中所有的预处理数据 缓存能够很好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可. Discuz! 中所有的缓存保存在 $_G[c ...

  6. ElasticSearch安装及运行的坑

    一.确认centos系统是为64位的,x86的不可以安装 1. 下载elasticsearch包 2. 用 tar -zxvf 解压包 3. 增加一个elk用户,elasticsearch7不可用ro ...

  7. Could not resolve resource location pattern [classpath:com/****/mappers/*.xml]: class path resource [com/****/mappers/] cannot be resolved to URL because it does not exist的问题

    这里建议先去看看路径的问题,看看application.xml的里面的导入的相应的配置文件的路径有没有问题,如下: 再者看看相应的注解有没有加上,service和controller等的注解 如果再不 ...

  8. 4-8 pie与布局

    In [1]: %matplotlib inline import matplotlib.pyplot as plt   1.pie简单参数:plt.pie(x, explode=None, labe ...

  9. Hive 读书札记

    把数据从一个关系型数据库直接导入 Hive,使用 Sqoop.

  10. (day51)三、ORM、路由层、版本差异、流程图

    目录 一.ORM关系建立 (一)ForeignKey(一对多) (二)ManyToManyField(多对多) (三)OneToOneField(一对一) 二.django请求生命周期流程图 三.ur ...