Tomcat安装

通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了。其中最大的一个问题就是Tomcat执行权限。普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了。而通过编译或在线(例如redhat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务中,一但某一个网站出问题导致tomcat服务被卡死,则服务器上所有的网站都打不开了,无法满足各网站程序独享tomcat的需求。为了解决这些问题,我们需要配置Tomcat以指定的身份运行,且一台服务器上可以安装任意多个tomcat服务。


测试机器环境:

VMware Workstation 10 虚拟机

内存:1G

Linux版本:CentOS MinimalCD 6.5

JAVA:JAVA_HOME=/opt/jdk


一、先在 Linux系统上配置好JDK环境(CentOS学习笔记--JDK安装)

假设您已经在Linux系统上正确安装了JDK开发环境,且JDK安装的位置在: /opt/jdk/

二、下载并解压最新版本的Tomcat,http://tomcat.apache.org,将其下载下来(我下到的是apache-tomcat-6.0.41.tar.gz)放到Linux系统的/opt/目录下,运行命令解压(并将解压出来的目录更名为tomcat):

tar xzvf apache-tomcat-6.0.41.tar.gz
mv apache-tomcat-6.0.41 /opt/tomcat

三、编译安装tomcat daemon服务守候程序:

cd /opt/tomcat/bin/
tar xvzf commons-daemon-native.tar.gz

1、解压后会生成一个commons-daemon-1.0.15-native-src目录,cd到这个目录的Linux子目录:

cd commons-daemon-1.0.10-native-src/unix

2、注释:安装gcc(默认Mini版本没有安装gcc)

yum -y install gcc

3、执行编译配置

./configure  #(注意:需要先安装好make,gcc等编译工具)
./configure --with-java=/opt/jdk 如果提示没有jdk,使用这个命令。主要是java目录未写入系统目录

4、运行完成后会提示如下信息说明操作成功:

...
*** All done ***
Now you can issue "make"

5、执行make:

make

6、执行make后会生成一个jsvc的文件,将其复制到tomcat的bin目录。

cp jsvc /opt/tomcat/bin/

7、在tomcat/bin目录里面有一个daemon.sh 这个文件就是启动和关闭tomcat的服务守候程序。

注意:之前的一些tomcat版本,例如tomcat 6.0.x, 可能没有这个文件, 其实这个文件就是放在commons-daemon-x.x.x-native-src/unix/samples/Tomcat7.sh这儿的(此目录还有一个Tomcat5.sh),只不过新版本的tomcat把它移动到了bin目录下,并取名为daemon.sh了。所以,如果您使用的是tomcat 6,那就把这个Tomcat7.sh文件复制到bin目录下,并取名为daemon.sh即可。

8、修改daemon环境变量 :

用文本编辑器(vi或emacs等)编辑它,找到类似下面这样配置段:

test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
# Set JAVA_HOME to working JDK or JRE
# JAVA_HOME=/opt/jdk-1.6.0.22

9、修改TOMCAT_USER=tomcat为您要指定身份运行的linux账号用户名,此处指定用户名为tomcat。

并把JAVA_HOME=...前面的注释(即“#”号)去掉,并设置为jdk的安装目录路径,最后,修改好后的配置段变成如下:

test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
# Set JAVA_HOME to working JDK or JRE
JAVA_HOME=/opt/jdk

10、现在修改/opt/tomcat目录的所有者为tomcat(即您要指定身份运行的linux帐号):

useradd -M tomcat #创建没有主目录的tomcat用户
chsh tomcat -s /sbin/nologin #禁止tomcat登陆操作,类似于windows的系统账户
chown -R tomcat /opt/tomcat #将/opt/tomcat下的所有档案与子目录进行相同的拥有者变更为tomcat用户

11、为tomcat/bin/目录下的*.sh添加相应的x权限位:

chmod +x /opt/tomcat/bin/*.sh

12、现在,可以测试一下daemon是否可以启动运行,启动方式如下:

/opt/tomcat/bin/daemon.sh  start
curl http://localhost:8080 #测试一下是否启动

(如果出错,重点查验tomcat的bin目录下的*.sh是否有x可执行权限、linux帐号是否有tomcat目录的读写权限,是否有tomcat/logs日志目录的写权限等等。)如无错误,则tomcat的daemon守候程序已经设置成功了。

13、这时本机可以访问tomcat了,远程机器访问不了,是防火墙的问题,在 /etc/sysconfig/iptables添加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT   #8080是tomcat的访问端口

重启iptable

service iptables restart

这样就可以访问了。

14、停止tomcat, 对应的命令为:

/opt/tomcat/bin/daemon.sh  stop

15、添加tomcat为Linux的服务,这时就简单了,只需要创建一个软链到/etc/init.d/目录中即可

ln  -s  /opt/tomcat/bin/daemon.sh  /etc/init.d/tomcat

16、现在就可以用它启动/关闭tomcat了:

/etc/init.d/tomcat  start #启动tomcat
service tomcat start #启动tomcat
/etc/init.d/tomcat stop #关闭tomcat
service tomcat stop #关闭tomcat

17、设置tomcat服务开机启动,需要在daemon.sh中增加以下的语句:

#!/bin/sh      #这句是原文件里有的,下面的2句是要添加的
# chkconfig: 2345 90 15
# description: Tomcat-en Manager

18、再运行 chkconfig命令增加tomcat服务,而达到自启动:

chkconfig --add  tomcat

重启机器,测试一下。

四、如果想再创建一个tomcat服务,只需要将/opt/tomcat这个目录复制一份,例如:

cp /opt/tomcat /opt/tomcat1

再修改一下tomcat1的端口号(/opt/tomcat/opt/tomcat1/conf/server.xml中的端口号不能与其它的服务重复)。最后从上面所述第8步开始,创建另一个服务即可。

通过这种方式,您就可以为一台Linux服务器创建任意多个tomcat服务了。最后只需要安装一个前端服务器(例如Nginx或Apache),将不同域名的请求转发到不同的tomcat服务程序就可以了。

CentOS学习笔记--Tomcat安装的更多相关文章

  1. CentOS学习笔记--MySQL安装

    MySQL安装 Linux中使用最广泛的数据库就是MySQL,使用在线yum的方式安装的版本落后MySQL网站好几个小版本,本节亲自测试安装新版的MySQL. 测试机器环境: VMware Works ...

  2. CentOS学习笔记--JDK安装

    JDK安装 大部分的服务都离不开JAVA环境,CentOS里都是OpenJDK,显然我们还是使用JAVA的JDK好.(注:minimal版没有安装OpenJDK,其它版本需要删除这个.) JDK下载 ...

  3. 【Linux】CentOS 学习笔记之一(安装配制)

    如何打开命令窗口:应用程序>系统工具>终端 如何获取root 权限:在终端下,输入su 再输入密码(密码不显示在屏幕上) 如何将英文版转换成中文: [root@localhost ~]# ...

  4. CentOS学习笔记--SCSI 设备热插拔

    CentOS学习笔记--SCSI 设备热插拔 处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢? 首先需要查看一下设备: #cat /proc/s ...

  5. OracleDesigner学习笔记1――安装篇

    OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当 ...

  6. Linux学习4-阿里云服务器(CentOS)下使用 Tomcat安装 Jenkins

    前言 通常做自动化测试,需要用到jenkins来做持续集成,那么linux系统里面如何使用tomcat安装Jenkins环境呢? 前面一篇已经搭建好java和tomcat环境,接着直接下载jenkin ...

  7. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  8. CUBRID学习笔记 2 安装教程

    下载地址  http://www.cubrid.org/?mid=downloads&item=any&os=detect&cubrid=9.3.0 选择适合你的服务器版本 l ...

  9. nodejs学习笔记<一>安装及环境搭建

    零零散散学了几天nodejs,进度一直停滞不前,今天沉下心来好好看了下nodejs的介绍和代码.自己也试着玩了下,算是有点入门了. 这里来做个学习笔记. ——————————————————————— ...

随机推荐

  1. Protobuf从安装到配置整理帖

    新做的Mini项目计划使用Google的Protobuf来做,关于Protobuf是什么玩意能干什么请自己去看这里:http://code.google.com/p/protobuf/ 这里讲一下安装 ...

  2. iOS 热点、通话时候TabView的Frame调整

    - (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame{ ...

  3. 第十章 Vim程序编辑器学习(下)

    在试用vim编辑时,vim会在于被编辑的档案的目录下,再建立一个名为****.swp的档案,如果你的系统因为某些原因断线,你编辑的档案还没有存储,这个时候的****.swp就能够挥发救援的功能 1.在 ...

  4. Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码

    我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...

  5. lambda表达式、内置函数、进制和文件操作

    lambda表达式 定义函数(普通方式)def f1(): return 123 f2 = lambda : 123 def f3(a1,a2): return a1+a2 定义函数(lambda表达 ...

  6. (easy)LeetCode 263.Ugly Number

    Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers ...

  7. (easy)LeetCode 219.Contains Duplicate II

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...

  8. iOS中FMDB的使用【单例】

    DYDB.h Objective-C 12345678910111213141516 #import <Foundation/Foundation.h> #import <FMDB/ ...

  9. java网格布局管理器

    public class GirdLayoutPosition extends JFrame{    public GirdLayoutPosition()    {        Container ...

  10. Linux高级使用功能

    1.磁盘管理 LVM 对磁盘的管理,可以拉伸分区的大小而不用格式化 2.网络管理 Iptables 对网络的端口进行管理,放行禁用 3.服务器 apache.nigix html静态的服务器 nigi ...