今天在 linux 下安装了 tomcat,中间也是一路波折,最终安装好了。感觉应该有不少伙伴跟我一样都会踩到这些坑,打算记录下来。使用的是通用(ubantu,debian, centos 均可)的安装方式,安装也可以灵活一点。

下载

打开链接

https://tomcat.apache.org/download-80.cgi

选择如下的方式进行下载

我下载的是这个版本:apache-tomcat-8.5.28.tar.gz

安装

step1 解压

tar -zvxf apache-tomcat-8.5.28.tar.gz

解压完之后,得到【apache-tomcat-8.5.28/】这个文件夹。

step2 移动文件夹

mv apache-tomcat-8.5.28/ /opt/apache-tomcat-8.5.28

step3 创建连接

ln -s apache-tomcat-8.5.28/ tomcat8

此时已经安装完毕了,现在可以启动测试一下。

测试

step1 启动

/opt/tomcat8/bin/startup.sh

step2 测试

http://ip:8080/

将以上的ip换成你自己机器的ip,如:本地访问则是 127.0.0.1 或 localhost。

注意:如果久未反应,则等待一段时间在试。(此处是我遇到的问题,待会说明)

OK, 如果不出意外的话此时应该可以出现以下的页面了。如果没成功就要检查自己的安装步骤,JDK/JRE 的安装路径等问题了。

开机自启动

  1. 打开 /etc/rc.local 文件

vim /etc/rc.local

该文件是给用户自定义启动时需要执行的文件。

  1. 添加 tomcat 路径

/opt/tomcat8/bin/startup.sh

在 exit 0 之前添加。

至此,安装基本已经结束了,但有一个启动慢的问题需要解决。

tomcat启动慢问题

问题

这个问题是我在启动时访问 http://ip:8080/ 没反应,于是我就想着去关闭,但发现关闭不了,甚是奇怪。当时的报错情况是这样子的:

但是,我在访问启动页面时,过了很久再次访问,差不多有两分钟吧,页面还是访问成功了。所以,以上的问题应该就是 tomcat 没有完全启动就去关闭,当然就关闭不了了。

解决方法

解决的方法也简单,去网上搜了一下:

  1. 打开 java 配置文件 java.security

文件路径: $JAVA_HOME/lib/security/java.security

如果不知道你的 JDK/JRE 安装路径,就使用一下的命令进行查询。

echo $JAVA_HOME

  1. 搜索 securerandom,找到一下信息,并将其修改
securerandom.source=file:/dev/urandom或securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/./random
  1. 保存,退出

  2. 启动 tomcat,速度就上来了。

原因(抄的)

Tomcat 7/8 都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类SecureRandom的实例作为会话ID,这里花去了62秒,也即接近1分钟,当然有时花费时间更长,达到5-10分钟。

SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。

在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。

1)如果Java.security.egd属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。

2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。

这就是为什么我们设置值为”file:///dev/urandom”或者值为”file:/./dev/random”都会起作用的原因。

在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非 常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。

当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。

那么什么是环境噪声?

随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。

linux下tomcat 8的安装以及tomcat启动慢问题的更多相关文章

  1. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  2. Linux下的网络远程安装

    Linux下的网络远程安装 1.用RHEL6.5光盘安装第一台服务器 2.在第一台服务器上配置YUM服务器 先创建一个挂载 #mount #umount /dev/cdrom #mkdir /mnt/ ...

  3. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  4. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  5. linux下.run文件的安装与卸载

    linux下.run文件的安装与卸载   .run文件的安装很简单,只需要为该文件增加可执行属性,即可执行安装 以 virtualbox 的安装文件 virtualbox-3.1.6-59338-Li ...

  6. Linux下rar unrar的安装

    Linux下rar unrar的安装: 以3.8.0版本为例,如果是64位平台,执行以下命令,也可以去官方网站:)下载最新版: wget http://www.rarlab.com/rar/rarli ...

  7. 【转】Linux下Android ADB驱动安装详解

    原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...

  8. Linux下的Oracle 11gr2安装完成的的自启动操作。

    Linux下的Oracle在安装结束后是处于运行状态的.重启机器后,Oracle不会像在Windows下那样将Oracle添加到Windows服务,在linux下需要手动启动Orcle服务 以orac ...

  9. Linux下查看MySQL的安装路径

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  10. ACE-6.1.0 linux 下的编译与安装步骤

    ACE-6.1.0 linux 下的编译与安装步骤  引用至http://www.cnblogs.com/liangxiaxu/archive/2013/03/07/2948417.html 1.从  ...

随机推荐

  1. 你所有不知的margin属性

    前言 致谢 本文总结于 张鑫旭老师的 CSS深入理解之margin课程,感谢张老师的辛苦付出! 难学的 CSS 作为前端狗的我们,每天都要和网页打交道.当 UI 将设计稿发给你时,CSS 的知识便显得 ...

  2. Java SocketChannel 读取ByteBuffer字节的处理模型

    在JAVA中的流分为字节流或字符流,一般来说采用字符流处理起来更加方便.字节流处理起来相对麻烦,SocketChannel中将数据读取到ByteBuffer中,如何取出完整的一行数据(使用CRLF分隔 ...

  3. wordpress安装五步法

    原文链接: 下载并解压缩WordPress程序安装包 在你的网页服务器上为WordPress创建一个数据库, 并且创建一个MySQL 拥有所有权限可以进入和修改的用户 重命名 wp-config-sa ...

  4. Java经典编程题50道之十

    一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下……求它在第10次落地时,共经过多少米?第10次反弹多高? public class Example10 {    public sta ...

  5. bzoj 1307/1318 玩具 线段树+记录时间戳

    玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 743  Solved: 404[Submit][Status][Discuss] Descrip ...

  6. Yii2 灵活加载js、css

    Yii2.0对于CSS/js 管理,使用AssetBundle资源包类. 视图如何按需加载CSS/JS ? 资源包定义: backend/assets/AppAsset.PHP <?php na ...

  7. Smarty3.1.3安装使用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana } span.s1 { } Smarty简介 Smarty是一个PHP的模板引 ...

  8. Centos下Sphinx中文分词编译安装测试---CoreSeek

    要支持中文分词,还需要下载Coreseek,可以去官方搜索下载,这里我用的4.1 百度云下载地址:      https://pan.baidu.com/s/1slNIyHf tar -zxvf co ...

  9. Qt 5.9.4 如何静态编译和部署?

    Qt 5.9.4 如何静态编译和部署? MSVC2015 x86 静态编译 Qt 部署静态库 VS2015 部署静态库 1. MSVC2015 x86 静态编译 1.1 Qt 官网下载最新源代码 立即 ...

  10. swap分区的扩展

    Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况.swap分区在非高内存的服务器上必不可少,但是s ...