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]"的提示信息,并返回选择结果
网友评论