博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows搭建Tomcat开发环境
阅读量:4088 次
发布时间:2019-05-25

本文共 4085 字,大约阅读时间需要 13 分钟。

安装 tomcat

下载

进入 ,找到 Tomcat9 ,点击 64-bit Windows zip (pgp, md5, sha1, sha512) ,下载后的文件名为:apache-tomcat-9.0.2-windows-x64.zip ,将文件夹解压本地目录:C:\Users\SY\Desktop\GIT\Software\apache

打开

双击 bin/startup.bat 文件,在浏览器输入 http://localhost:8080 就可以访问 Tomcat 网站。

这里写图片描述

我们点击 Server Status 时,弹出登录对话框,需要输入用户名和密码,随便输入后,进入一个页面

403 Access DeniedYou are not authorized to view this page.If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.For example, to add the manager-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above.

参考上面:

conf/tomcat-users.xml

修改完成,双击 shutdown.bat ,再双击 startup.bat ,输入用户名和密码后,可以正常登录进入。

连接到 Apache

对于 Tomcat 来说,本身已经可以作为一个 http 服务器来用,但是处理静态内容没有 Apache 强劲,因此最好的方式是静态 http 文件由 Apache 处理,动态的内容通过 Apache 转发给 Tomcat 处理。

目前使用最多的连接方式是 JK :在 官网下载 jk 插件,点击 tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip ,将解压后的文件拷贝到 apache 的目录:/Apache24/modules

文档

查看 ,重点关注

配置

打开 Apache 配置文件:

/conf/httpd.conf

### 配置 mod_jkLoadModule jk_module modules/mod_jk.soJkWorkersFile conf/workers.propertiesJkMountFile conf/uriworkersmap.propertiesJkLogFile logs/mod_jk.logJkLogLevel info

jk_module :加载 jk 模块

JkWorkersFile :配置 tomcat 服务器

JkMountFile :配置 apache 将什么类型的 url 转发给 JK 模块

JkLogFile :日志文件

JkLogLevel :日志等级

创建文件:

/conf/workers.properties

#server 列表worker.list = controller,jkstatus #========tomcat1========    worker.tomcat1.port=8009       #ajp13 端口号,在tomcat下server.xml配置,默认8009    worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址    worker.tomcat1.type=ajp13    worker.tomcat1.lbfactor=1    #server的加权比重,值越高,分得的请求越多  #========tomcat2========worker.tomcat2.port=9009worker.tomcat2.host=localhostworker.tomcat2.type=ajp13worker.tomcat2.lbfactor=1#========controller,负载均衡控制器========#负载均衡控制器类型,lbfactor是负载平衡因数(LoadBalance Factor)worker.controller.type=lb#指定负载的worker列表,用逗号分隔  worker.controller.balance_workers=tomcat1 #粘性session(默认是打开的) 当该属性值=true(或1)时,代表session是粘性的,即同一session在集群中的同一个节点上处理,session不跨越节点。在集群环境中,一般将该值设置为false#worker.controller.sticky_session=false#设置用于负载均衡的server的session可否共享#worker.controller.sticky_session_force=1#========状态配置=========================worker.jkstatus.type=status

上述表示,我们使用 8009 端口,AJP/1.3 协议,将 apachetomcat 关联起来。目前只配置一个 tomcat 服务器,如果需要负载均衡的话,可以在 worker.controller.balance_workers 后面添加服务器。

注意: 上述的端口和服务器的名称需要与 tomcat 的配置文件一致!如:8009tomcat1

创建文件:

/conf/uriworkersmap.properties

/*.jsp=controller/jkstatus=jkstatus

表示 Apache 需要将 .jsp 文件转发给 tomcat 处理。

注意: 如果是 windows 平台,必须保存为 GBK 文件格式,不能是 UTF-8

上述配置完成后,我们还需要配置 tomcat ,打开文件:

apache-tomcat-9.0.2/conf/server.xml

测试

apache-tomcat-9.0.2/webapps/ROOT 目录新建文件:

test.jsp

<%      out.println("Who i am?");  %>

打开浏览器,默认 tomcat 端口为 8080 ,我们先测试直接使用 tomcat 服务器能不能正常打开

输入:http://localhost:8080/test.jsp

Who i am?

说明 tomcat 可以正常解析,而 apache 工作在 80 端口。

输入:http://localhost/test.jsp

Who i am?

ok! 说明 apache 正常转发了该请求!

问题

打开文件:

/Apache24/logs/mod_jk.log

[Sun Jan 21 17:19:09.709 2018] [19720:19904] [error] uri_worker_map_add::jk_uri_worker_map.c (875): invalid context '/*': does not begin with '/'[Sun Jan 21 17:19:09.709 2018] [19720:19904] [error] uri_worker_map_load::jk_uri_worker_map.c (1270): invalid mapping rule /*->controller[Sun Jan 21 17:19:09.710 2018] [19720:19904] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized

查看此时文件:

/conf/uriworkersmap.properties

/*=controller/jkstatus=jkstatus

并没有什么问题啊,而且别人都这样配置,猜想肯定是文件格式问题,查看编码格式为 UTF-8 ,由于当前的 Apache 运行在 Windows 下面,因此需要转换文件格式为 GBK ,重启 Apache 后测试:

[Sun Jan 21 17:31:54.466 2018] [19720:19904] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized[Sun Jan 21 17:31:54.734 2018] [20960:21280] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized[Sun Jan 21 17:31:54.822 2018] [20960:21280] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized

没有报错了!

参考

你可能感兴趣的文章
TBUS的一些信息
查看>>
PX4+激光雷达在gazebo中仿真实现(古月居)
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
查看>>
现在来看,做个普罗米修斯的docker镜像对我而言并不难,对PX4仿真环境配置也熟悉了。
查看>>
删除docker容器和镜像的命令
查看>>
VINS-Fusion Intel® RealSense™ Depth Camera D435i
查看>>
使用Realsense D435i运行VINS-Fusion并建图
查看>>
gazebo似乎就是在装ROS的时候一起装了,装ROS的时候选择的是ros-melodic-desktop-full的话。
查看>>
React + TypeScript 实现泛型组件
查看>>
TypeScript 完全手册
查看>>
React Native之原理浅析
查看>>
Git操作清单
查看>>
基础算法
查看>>
前端面试
查看>>