今天在 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. 删除apache注册表

    将Apache服务从系统服务中移除: 其实很多服务我们卸载软件后还会残留在服务列表里面,今天给大家提供个删除残留服务的方法注册表清除法. 1.在我的电脑上右键管理,找到看看那些服务是你不需要的,或是残 ...

  2. 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系

    上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  3. mysql有多条记录的单个字段想存为一个字段显示的方法

    SELECT po.id,(SELECT GROUP_CONCAT(mr.member_type) as memberTypeList FROM prod_offer_member_rel mr WH ...

  4. ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL

    ASP.NET CORE MVC 中,默认的 Route 模板是: /{controller}/{action}  .我们可以通过开启 URL 小写转换将 URL 变为小写,但此方式在 Control ...

  5. 用Git的hooks实现项目的自动部署

    https://segmentfault.com/a/1190000003836345?_ea=386770 http://blog.csdn.net/wsyw126/article/details/ ...

  6. Centos下安装Lamp和vsftpd、redis

    yum安装httpd和php.mysql服务 yum search httpd //搜索httpd开头的软件包 yum install httpd.x86_64 //找到apache 对应的软件包名 ...

  7. 百度前端技术学院js任务三

    任务地址:http://ife.baidu.com/course/detail/id/98 代码: <!DOCTYPE> <html> <head> <met ...

  8. C语言老司机学Python (二)

    标准数据类型: 共6种:Number(数字),String(字符串),List(列表),Tuple(元组),Sets(集合),Dictionary(字典) 本次学习主要是和数据类型混个脸熟,知道每样东 ...

  9. Shell 脚本实践

    1. 脚本判断命令输出是否为空 (1)判断字符串为空 if [ "$str" =  "" ]  if [ x"$str" = x ] if ...

  10. TCP协议—三次握手四次挥手的原理<转>

    三次握手四次挥手的原理   TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三 ...