Centos7 Tomcat9 安装笔记
我的原创地址:https://dongkelun.com/2018/10/23/tomcatConf/
前言
有两个月没更新博客,部分原因是这两月的工作一直没写Spark程序,而是在写前端,所以虽然期间一直想写但是没有想出从哪方面入手。后端框架用的SpringBoot,前端用的是JSP、BootStrap、Echarts等,前端主要做成了大屏的样子,之前写过一段时间前端,但是没有整理笔记,导致现在再写,有些东西还要去翻原来的代码,比较麻烦,所以一直想整理一些前端的笔记,但是由于不是专业的前端,不是写的很深入,只想把自己实现的的效果对应的代码总结一下,如果只写代码的话,看起来比较单调,所以我想能有写一些前端页面,在博客里放上连接,这样看起来会比较直观。现在的博客用的是hexo,代码托管在coding上,有些页面,比如菜单、整体布局的效果在这上面不太好展现,所以想在自己的服务器用SpringBoot搭一个完整的系统,那么就要从头开始,从搭建SpringBoot程序开始,虽然SpringBoot自身带了tomcat,但是我感觉自己安装的tomcat用起来会比较方便,这就是为什么先写tomcat的安装了。
之前用过也配置过tomcat,但是没有从头到尾的在服务器上配置,下面就记录一下我的安装过程及碰到的问题,方便后面我在其他的服务上部署。
1、前提
首先安装配置JDK,我这里用的是JDK1.8.0_45
2、下载
首先到官网http://tomcat.apache.org/下载安装包,我下载的是最新版的Tomcat9
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
3、解压并改名
tar -zxvf apache-tomcat-9.0.12.tar.gz mv apache-tomcat-9.0.12 tomcat
4、启动
cd tomcat/ bin/startup.sh
关闭tomcat命令
bin/shutdown.sh
5、验证
在浏览器里输入 ip:8080,如果出现下图所示的界面就代表启动成功了。
到这里其实就可以使用tomcat了,可以将应用程序的war包放到tomcat的webapps目录下,也可以自己写一个简单的页面进行测试,如:
mkdir webapps/test vim webapps/test/test.jsp
test tomcat
然后在浏览器里输入 ip:8080/test/test.jsp,就会看到如下页面
6、问题及解决
6.1 点击tomcat首页的Manager App进入管理页面,报没有权限的错误
bin/shutdown.sh vim webapps/manager/META-INF/context.xml
将Context里面的注释掉即可
<Context antiResourceLocking="false" privileged="true" > <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>--> </Context>
再启动,验证问题是否还存在。如果成功了,则会出现输入用户名、密码的验证弹出框
参考:https://blog.csdn.net/cai_eternal/article/details/76069314
6.2 增加管理界面的用户名、密码
tomcat默认应该是没有设置用户、密码的、那么需要我们自己改一下配置文件来添加用户名、密码
bin/shutdown.sh vim conf/tomcat-users.xml
在tomcat-users里添加
<user username="admin" password="1234" roles="manager-gui"/>
参考https://blog.csdn.net/txwtech/article/details/80013261
然后启动,就可以出入上面的设置,进入管理页面了
6.3 关闭tomcat时报错(jdk1.8.x的bug)
- 不确保每个jdk1.8版本或者在每个服务器上都有这个bug
错误如下:
bin/shutdown.sh Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TMPDIR: /opt/tomcat/temp Using JRE_HOME: /opt/jdk1.8.0_45/jre Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Oct 24, 2018 1:42:39 PM org.apache.catalina.startup.Catalina stopServer SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running. Oct 24, 2018 1:42:39 PM org.apache.catalina.startup.Catalina stopServer SEVERE: Catalina.stop: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:498) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:403) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497)
解决办法,例如我的jdk安装目录为:/opt/jdk1.8.0_45
vim /opt/jdk1.8.0_45/jre/lib/security/java.security
找到
securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/./urandom
然后关掉tomcat再重启就好了
参考:https://stackoverflow.com/questions/33868983/severe-could-not-contact-localhost8005-tomcat-may-not-be-running-error-while
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
NewLife.Redis 100亿小数据使用经验技巧分享
NewLife.Redis 100亿数据使用经验技巧分享 本文包括Redis入门,基础知识,NewLife.Redis使用,Redis使用技巧,100亿小数据使用经验技巧分享 介绍 NewLife.Redis主要作者及经验介绍来源:大石头 源码: https://github.com/NewLifeX/NewLife.Redis Nuget:NewLife.Redis NewLife.Redis是一个Redis客户端组件,以高性能处理大数据实时计算为目标。 Redis协议基础实现Redis/RedisClient位于X组件,包含基础字符串操作。完整实现由独立开源项目NewLife.Redis提供。NewLife.Redis为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。 采取连接池加同步阻塞架构,具有超低延迟(200~600us)以及超高吞吐量的特点。在物流行业大数据实时计算中广泛应有,经过日均100亿次调用量验证。 特性 在ZTO大数据实时计算广泛应用,200多个Redis实例稳定工作一年多,每天处理近1亿包裹数据,日均调用量80亿次 低延迟,Get/Set操作平均耗时200...
- 下一篇
JavaScript学习(十二)---正则表达式
目录 正则表达式基础 正则表达式的基本结构 正则表达式的作用 1.测试字符串的某个模式 2.替换文本 3.根据模式匹配从字符串中提取一个子字符串 正则表达式语法 模式匹配符 定义符与原义字符 (1)文本验证定位符 例子:匹配字符“^”的使用 匹配字符"$"的使用 用“\b”匹配一个自边界 限定符与选择匹配符 (1)限定符 (2)贪婪匹配与非贪婪匹配 (3)选择匹配符 实际应用 (1)普通字符匹配 (2)限制表单输入的内容 (3)去掉重复的字符 正则表达式基础 正则表达式描述了一种字符串匹配的模式,即可让用户通过使用一系列普通字符和特殊字符来构建能够明确描述文本字符串的匹配模式,可以用来检查一个字符串是否含有某种子字符串、将匹配的子字符串做替换或者从某个字符串中取出符合某个条件的子字符串等。 正则表达式的基本结构 一个正则表达式就是由普通字符(如字符a-z)以及特殊字符(称为元字符)组成的文字模式。 语法:/匹配对象的模式/ 其中,位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。 例如:在字符串abcd中查找匹配...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6