tomcat 单实例 多实例

1.有没有用过web容器
2.你用过什么web容器
3.你上家公司有没有用过tomcat
4.什么是web容器
5.nginx apache tomcat的区别
都是web服务器 nginx(并发50000) apache(2000)解析动态页面 tomcat(单实例175并发)
解析jsp java 动态页面
=========================================================================
Tomcat,Resin,JBOSS,WebSphere,Weblogic
Tomcat官网    
http://tomcat.apache.org/
jdk官网
jdk的包有两种
1..gz .bz2 .zip 直接解压 放到安装位置 就能用
2. .bin 直接执行 会解压出一个目录 放到安装位置 就能用
一般放到/usr/local/下面 改环境变量
http://www.oracle.com/technetwork/java/javase/downloads/index.html
========================================================================
Tomcat
JAVA容器,WEB容器,WEB中间件
方案一:     Tomcat
方案二:  Nginx+Tomcat                                                      
方案三:  
                Nginx 
                    |
    +-----------------------------+
    |               |                    |      
Tomcat1   Tomcat2    Tomcat3

建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序
方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例                   

一、Tomcat Http Server

1. 部署JAVA环境
tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local
cd /usr/local
mv jdk-8u91-linux-x64 java或者
ln -s /usr/local/jdk1.8.0_91 /usr/local/java

方式1.vim /etc/bashrc or /etc/profile or /root/.bashrc
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
方式2.脚本方式
vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
生效配置
source /etc/profile
env |grep JAVA
JAVA_HOME=/usr/local/java
 java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

2. 安装Tomcat:
tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/
mv apache-tomcat-7.0.34 tomcat或者
ln -s /usr/local/jdk1.8.0_91 /usr/local/java
ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat

定义Tomcat所需环境变量:
vim /etc/profile            //定义Tomcat环境变量
CATALINA_HOME=/usr/local/tomcat     //Tomcat安装目录
export CATALINA_HOME
生效配置
source /etc/profile

启动Tomcat
# /usr/local/tomcat/bin/startup.sh      //启动tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_11
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

# netstat -tnlp |grep java
tcp        0      0 ::ffff:127.0.0.1:8005       :::*          LISTEN      6191/java           
tcp        0      0 :::8009                     :::*          LISTEN      6191/java           
tcp        0      0 :::8080                     :::*          LISTEN      6191/java  
      
# /usr/local/tomcat/bin/shutdown.sh //关闭tomcat

关于tomcat端口:
Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,
以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:
  第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat
服务器的Web应用时,使用的就是这个连接器。  
  第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服
务器(apache)集成时,就需要用到这个连接器。反向代理到这个端口

8005是tomcat本身的端口

3. 测试tomcat是否安装成功
http://192.168.44.48:8080/ (浏览器中测试)
[root@localhost tomcat]# tree -L 1
.
├── bin
├── conf
├── lib
├── LICENSE
├── logs
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps 存放网站代码
└── work

二、安装MySQL
yum -y install mariadb mariadb-server
systemctl restart mariadb
mysqladmin -uroot password 'root'
三、部署jspgou

1.创建数据库:
在mysql数据库中创建jspgou数据库(推荐使用此数据库名,否则参照第三条修改对应的数据库链接信息),
字符集为utf-8,
mysql -uroot -proot
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 
grant all privileges on jspgou.* to "alice"@"%" identified by 'root';
flush privileges; //刷新系统权限表
create database jspgou CHARACTER SET = utf8;

2.更改数据库链接:
yum -y install unzip
unzip jspgouV6-ROOT.zip
vim ROOT\WEB-INF\config\jdbc.properties
程序包内ROOT\WEB-INF\config\jdbc.properties文件第20行左右
        jdbc.url=jdbc:mysql://127.0.0.1:3306 characterEncoding=UTF-8
        jdbc.username=root   #在生产环境中必须用普通账户
        jdbc.password=root   #给一个普通用户的密码

3.导入数据:
将压缩包内DB文件中jspgou.sql文件导入至创建好的jspgou数据库中,如导入中出现执行sql语句过长问题,
请修改mysql配置文件my.cnf中max_allowed_packet参数为64m,默认为1m(db 解压后出现在当前目录)
    导入数据库时如果报错:把所有datetime类型的字段默认值改成CURRENT_TIMESTAMP
    注意:如果用Mariadb数据库不会出现如上错误,可以直接导入
[root@tomcat db]mysql -uroot -proot -D jspgou < jspgou.sql
4.部署网站:
将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下
 \cp -r ROOT /usr/local/tomcat/webapps
# ls /usr/local/tomcat/webapps/                 //默认网站的基目录base
docs  examples  host-manager  manager  ROOT
# ls /usr/local/tomcat/webapps/ROOT         //默认网站的主目录
启动tomcat
/usr/local/tomcat/bin/startup.sh 
输入以下地址,如能正常显示,即表示部署成功
前台:
http://192.168.44.48:8080/
系统管理后台登录:http://192.168.44.48:8080/jeeadmin/jspgou/index.do
用户名:admin
密  码:123456
+++++++++++++++++++++tomcat多实例++++++++++++++++++++++++++++++++++++++++++

Tomcat 一机多实例
多实例运行不同的应用(类似虚拟主机)
多实例运行相同的应用(实现负载均衡,支持高并发处理,session问题)

tomcat单机多实例配置
CATALINA_BASE:
instance1: /usr/local/tomcat/instance1/{conf,logs,temp,work}       8081     8091
instance2: /usr/local/tomcat/instance2/{conf,logs,temp,work}       8082     8092
instance3: /usr/local/tomcat/instance3/{conf,logs,temp,work}       8083     8093

1. 以单实例为基础
[root@www ~]# /usr/local/tomcat/bin/shutdown.sh

2. 配置多实例目录
分别创建目录instance1 instance2 instance3,拷贝原来的conf,log,temp,work到3个目录下
cd /usr/local/tomcat
拷贝原来单实例的webapps到/下
cp -aR  /usr/local/tomcat/webapps  /
mkdir -R {instance1,instance2,instance3}
cp -aR {conf,logs,temp,work} instance1
cp -aR {conf,logs,temp,work} instance2
cp -aR {conf,logs,temp,work} instance3
[root@www ~]# tree -d -L 2 /usr/local/tomcat/
/usr/local/tomcat/
├── bin
├── instance1
│   ├── conf
│   ├── logs
│   ├── temp
│   └── work
├── instance2
│   ├── conf
│   ├── logs
│   ├── temp
│   └── work
├── instance3
│   ├── conf
│   ├── logs
│   ├── temp
│   └── work
└── lib

3. 配置实例server.xml
分别编辑instance{1'2'3}/conf/server.xml
[root@www ~]# vim /usr/local/tomcat/instance1/conf/server.xml

修改8005 为8091,8092,8093

1.png

修改8080 为8081,8082,8083


2.png

注释8009


3.png

定义网站在/webapps
4.png
4.脚本内容 (编写一样的脚本instance1/ins1.sh、instance2/ins2.sh、instance3/ins3.sh 没有权限的话要给权限)
注意环境变量的问题《《《《《
vim /usr/local/tomcat/instance2/ins2.sh
#!/bin/bash
#instance2
. /etc/init.d/functions
export CATALINA_BASE="/usr/local/tomcat/instance2"
case "$1" in
start)
    $CATALINA_HOME/bin/startup.sh
    ;;
stop)
    $CATALINA_HOME/bin/shutdown.sh
    ;;
restart)
    $CATALINA_HOME/bin/shutdown.sh
    sleep 5
    $CATALINA_HOME/bin/startup.sh
    ;;
esac
export JAVA_OPTS='-Xms64m -Xmx128m'

/etc/bashrc的环境如下:
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
5. 启动测试
[root@www ~]# /usr/local/tomcat/instance1/ins1.sh start
[root@www ~]# /usr/local/tomcat/instance2/ins2.sh start
[root@www ~]# /usr/local/tomcat/instance3/ins3.sh start

[root@localhost tomcat]# ss -tnlp |grep :80 |column -t
LISTEN  0  100  :::8081                :::*  users:(("java",pid=3760,fd=48))
LISTEN  0  100  :::8082                :::*  users:(("java",pid=4659,fd=48))
LISTEN  0  100  :::8083                :::*  users:(("java",pid=4801,fd=48))
LISTEN  0  1    ::ffff:127.0.0.1:8091  :::*  users:(("java",pid=3760,fd=58))
LISTEN  0  1    ::ffff:127.0.0.1:8092  :::*  users:(("java",pid=4659,fd=58))
LISTEN  0  1    ::ffff:127.0.0.1:8093  :::*  users:(("java",pid=4801,fd=58))
6.测试(浏览器)
192.168.44.48:8081
192.168.44.48:8082
192.168.44.48:8083
================Shell公共函数:/etc/init.d/functions详解  ==========
在学习Shell的时候看到很多脚本都会有. /etc/init.d/functions 这一句,在网上查询了此函数的作用,故收藏在博客中

functions这个脚本是给/etc/init.d里边的文件使用的。提供了一些基础的功能,看看里边究竟有些什么。首先会设置umask,path,还有语言环境,然后会设置success,failure,warning,normal几种情况下的字体颜色。下面再看看提供的重要方法:
checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录)
daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个
killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个
pidfileofproc:寻找某个进程的pid
pidofproc:类似上面的,只是还查找了pidof命令
status:返回一个服务的状态
echo_success,echo_failure,echo_passed,echo_warning分别输出各类信息
success,failure,passed,warning分别记录日志并调用相应的方法
action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
strstr:判断$1是否含有$2
confirm:显示 "Start service $1 (Y)es/(N)o/(C)ontinue? [Y]"的提示信息,并返回选择结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容