1/24 Tomcat Tomcat 它是一套用来运行java web应用程序的服务环境。java web应用程序的源码文件通常是*.jsp。JSP的服务 环境由jdk和tomcat两个软件组成。 软件的部署很简单,因为只需要将下载好的jdk和tomcat软件包解压到系统中指定的目录下,并配置环境变 量文件,启动tomcat的服务就可以了。后期的重点是在于如何用tomcat去发布jsp网站应用程序。其发布 网站的方法跟apache和nginx有点相似。 Tomcat 被称作JAVA容器,WEB容器,WEB中间件 Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)

访问web应用的流程: 客户端浏览器 ---〉 web服务器(apache/nginx/tomcat)---〉网站文件

容器:用来容纳(装)东西(信息)的器具。 nginx(apache) 80 | web中间件 | 网站 1.有没有用过web容器? 2.你用过什么web容器 ? 3.你上家公司有没有用tomcat? 4.什么是web容器(web中间件) 5.nginx、apache、tomcat的区别? tomcat官网: http://tomcat.apache.org/ jdk官网: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(单机部署): Tomcat 方案二(动静分离集群): Nginx+Tomcat 实现动静分离,即html静态网页由apache或nginx处理,jsp动 态网页由tomcat服务处理 方案三:用nginx实现tomcat群集的负载均衡 Nginx | +-----------------------------+ | | | Tomcat1 Tomcat2 Tomcat3 2000 物理机器的配置 2/24 几台机器 建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序 方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实 例 静态元素 html css js 各种图片

动态元素 php java python 能跟数据库和服务器进行数据交互的代码 一、Tomcat Http Server jdk的包有两种:

  1. .gz .bz2 .zip 直接解压 放到安装位置 就能用

  2. .bin 直接执行 会解压出来一个目录 放到安装位置 就能用 一般放到/usr/local/下面 改环境变量

  3. 部署JAVA环境

tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 将jdk解压到/usr/local目录

方式1(首选):

ln -s /usr/local/jdk1.8.0_91 /usr/local/java

方式2(备选):

mv /usr/local/jdk1.8.0_91 /usr/local/java

修改环境变量: 方式1(首选):自己创建一个启动脚本

vim /etc/profile.d/jdk.sh

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 方式2(备选):写到系统自带的启动脚本内

vim /etc/profile

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 使上设置的脚本立即生效: source /etc/profile.d/jdk.sh 或 source /etc/profile echo $PATH 测试java环境:

env |grep JAVA 选做,查看的结果如下

JAVA_HOME=/usr/local/java

java -version 必做,只要看到如下信息,就说明jdk已经配置好了

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) 3/24 ----- 可以直接把openjdk删除 #yum erase $(rpm -qa | grep jdk) -y 2. 安装Tomcat:(和jdk的方式1一模一样,解压改名就能用) 首先,解压tomcat到指定的目录中。

tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/

ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat

然后,定义Tomcat所需环境变量:

vim /etc/profile.d/tomcat.sh //定义Tomcat环境变量

CATALINA_HOME=/usr/local/tomcat //Tomcat安装目录(基准、工作) export CATALINA_HOME

加载环境变量文件

source /etc/profile.d/tomcat.sh

启动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端口:8080 8005 8009 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以 及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:   第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用 时,使用的就是这个连接器。     第二个连接器监听8009端口,负责和其他的HTTP(apache)服务器建立连接。在把Tomcat与其他 HTTP服务器集成时,就需要用到这个连接器。 8005是tomcat本身的端口 3. 测试 http://192.168.2.251:8080/ tomcat目录结构: [root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 说明:-L 是level等级的缩写 /usr/local/tomcat/ #tomcat的工作目录 ├── bin #启动关闭命令 ├── conf #配置文件 ├── lib ├── LICENSE ├── logs #日志 catalina.out 4/24 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp ├── webapps #存网站(project--目录)的目录 默认网站为ROOT └── work 随堂练习:在/usr/local/tomcat/webapps/ROOT目录中生成一个a.html的静态网页。 echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/ tomcat/webapps/ROOT/b.html echo "当前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html win7/10浏览器访问测试:192.168.11.11:8080/a.html

以下是部署jsp带数据库的网站应用程序jspgou。 二、安装MySQL(略) #yum install mariadb mariadb-server -y #systemctl start mariadb && systemctl enable mariadb 三、部署jspgou

ls /usr/local/tomcat/webapps/ //默认网站的基目录base

docs examples host-manager manager ROOT

ls /usr/local/tomcat/webapps/ROOT //默认网站的主目录

1.创建数据库: 在mysql数据库中创建jspgou数据库(推荐使用此数据库名,否则参照第三条修改对应的数据库链接信息), 字符集为utf-8 mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;' 2.更改数据库链接: wget http://bbs.jeecms.com/fabu/62873.jhtml unzip jspgouV6-ROOT.zip ls ROOT DB \cp -Rv ROOT /usr/local/tomcat/webapps/ Q:jdbc是什么?ODBC是什么? A:jdbc是java数据库连接(java database connection)的缩写。是用java访问数据库的接口驱动程序。 odbc是开放数据库连接(open database connection)的缩写。odbc的配置在win7/10系统控制面板的"管 理工具"中的"数据源(odbc)"功能里面有。odbc中的驱动程序通常是用户在系统中安装了数据库软件的服务 器或客户端软件自动生成的。 程序包内ROOT/WEB-INF/config/jdbc.properties文件第20行左右 vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下内容 jdbc.url=jdbc:mysql://127.0.0.1:3306/创建好的数据库名?characterEncoding=UTF-8 jdbc.username=root #在生产环境中必须用普通账户 jdbc.password=123 3.导入数据: 将压缩包内 DB文件中jspgou.sql文件导入至创建好的jspgou数据库中,如导入中出现执行sql语句过长问 题,请修改mysql配置文件my.cnf中max_allowed_packet参数为64m,默认为1m 5/24 导入数据库时如果报错:把所有datetime类型的字段默认值改成CURRENT_TIMESTAMP 注意:如果用Mariadb数据库不会出现如上错误,可以直接导入 [root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql 4.部署网站: 将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:\Tomcat7 \webapps\),启动tomcat 输入以下地址,如能正常显示,即表示部署成功 系统管理后台登录:http://192.168.11.11:8080/jeeadmin/jspgou/index.do 用户名:admin 密 码:123456 点击上图右上角浏览器图标访问网站首页: 6/24 tomcat部署 Tomcat 它是一套用来运行java web应用程序的服务环境。java web应用程序的源码文件通常是*.jsp。JSP的服务 环境由jdk和tomcat两个软件组成。 软件的部署很简单,因为只需要将下载好的jdk和tomcat软件包解压到系统中指定的目录下,并配置环境变 量文件,启动tomcat的服务就可以了。后期的重点是在于如何用tomcat去发布jsp网站应用程序。其发布 网站的方法跟apache和nginx有点相似。 Tomcat 被称作JAVA容器,WEB容器,WEB中间件 Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)

访问web应用的流程: 客户端浏览器 ---〉 web服务器(apache/nginx/tomcat)---〉网站文件

容器:用来容纳(装)东西(信息)的器具。 nginx(apache) 80 | web中间件 | 网站 1.有没有用过web容器? 2.你用过什么web容器 ? 3.你上家公司有没有用tomcat? 4.什么是web容器(web中间件) 5.nginx、apache、tomcat的区别? tomcat官网: http://tomcat.apache.org/ jdk官网: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(单机部署): Tomcat 方案二(动静分离集群): Nginx+Tomcat 实现动静分离,即html静态网页由apache或nginx处理,jsp动 态网页由tomcat服务处理 方案三:用nginx实现tomcat群集的负载均衡 Nginx | +-----------------------------+ | | | Tomcat1 Tomcat2 Tomcat3 2000 物理机器的配置 7/24 几台机器 建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序 方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实 例 静态元素 html css js 各种图片

动态元素 php java python 能跟数据库和服务器进行数据交互的代码 一、Tomcat Http Server jdk的包有两种:

  1. .gz .bz2 .zip 直接解压 放到安装位置 就能用

  2. .bin 直接执行 会解压出来一个目录 放到安装位置 就能用 一般放到/usr/local/下面 改环境变量

  3. 部署JAVA环境

tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 将jdk解压到/usr/local目录

方式1(首选):

ln -s /usr/local/jdk1.8.0_91 /usr/local/java

方式2(备选):

mv /usr/local/jdk1.8.0_91 /usr/local/java

修改环境变量: 方式1(首选):自己创建一个启动脚本

vim /etc/profile.d/jdk.sh

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 方式2(备选):写到系统自带的启动脚本内

vim /etc/profile

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 使上设置的脚本立即生效: source /etc/profile.d/jdk.sh 或 source /etc/profile echo $PATH 测试java环境:

env |grep JAVA 选做,查看的结果如下

JAVA_HOME=/usr/local/java

java -version 必做,只要看到如下信息,就说明jdk已经配置好了

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) 8/24 ----- 可以直接把openjdk删除 #yum erase $(rpm -qa | grep jdk) -y 2. 安装Tomcat:(和jdk的方式1一模一样,解压改名就能用) 首先,解压tomcat到指定的目录中。

tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/

ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat

然后,定义Tomcat所需环境变量:

vim /etc/profile.d/tomcat.sh //定义Tomcat环境变量

CATALINA_HOME=/usr/local/tomcat //Tomcat安装目录(基准、工作) export CATALINA_HOME

加载环境变量文件

source /etc/profile.d/tomcat.sh

启动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端口:8080 8005 8009 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以 及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:   第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用 时,使用的就是这个连接器。     第二个连接器监听8009端口,负责和其他的HTTP(apache)服务器建立连接。在把Tomcat与其他 HTTP服务器集成时,就需要用到这个连接器。 8005是tomcat本身的端口 3. 测试 http://192.168.2.251:8080/ tomcat目录结构: [root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 说明:-L 是level等级的缩写 /usr/local/tomcat/ #tomcat的工作目录 ├── bin #启动关闭命令 ├── conf #配置文件 ├── lib ├── LICENSE ├── logs #日志 catalina.out 9/24 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp ├── webapps #存网站(project--目录)的目录 默认网站为ROOT └── work 随堂练习:在/usr/local/tomcat/webapps/ROOT目录中生成一个a.html的静态网页。 echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/ tomcat/webapps/ROOT/b.html echo "当前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html win7/10浏览器访问测试:192.168.11.11:8080/a.html

以下是部署jsp带数据库的网站应用程序jspgou。 二、安装MySQL(略) #yum install mariadb mariadb-server -y #systemctl start mariadb && systemctl enable mariadb 三、部署jspgou

ls /usr/local/tomcat/webapps/ //默认网站的基目录base

docs examples host-manager manager ROOT

ls /usr/local/tomcat/webapps/ROOT //默认网站的主目录

1.创建数据库: 在mysql数据库中创建jspgou数据库(推荐使用此数据库名,否则参照第三条修改对应的数据库链接信息), 字符集为utf-8 mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;' 2.更改数据库链接: wget http://bbs.jeecms.com/fabu/62873.jhtml unzip jspgouV6-ROOT.zip ls ROOT DB \cp -Rv ROOT /usr/local/tomcat/webapps/ Q:jdbc是什么?ODBC是什么? A:jdbc是java数据库连接(java database connection)的缩写。是用java访问数据库的接口驱动程序。 odbc是开放数据库连接(open database connection)的缩写。odbc的配置在win7/10系统控制面板的"管 理工具"中的"数据源(odbc)"功能里面有。odbc中的驱动程序通常是用户在系统中安装了数据库软件的服务 器或客户端软件自动生成的。 程序包内ROOT/WEB-INF/config/jdbc.properties文件第20行左右 vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下内容 jdbc.url=jdbc:mysql://127.0.0.1:3306/创建好的数据库名?characterEncoding=UTF-8 jdbc.username=root #在生产环境中必须用普通账户 jdbc.password=123 3.导入数据: 将压缩包内 DB文件中jspgou.sql文件导入至创建好的jspgou数据库中,如导入中出现执行sql语句过长问 题,请修改mysql配置文件my.cnf中max_allowed_packet参数为64m,默认为1m 10/24 导入数据库时如果报错:把所有datetime类型的字段默认值改成CURRENT_TIMESTAMP 注意:如果用Mariadb数据库不会出现如上错误,可以直接导入 [root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql 4.部署网站: 将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:\Tomcat7 \webapps\),启动tomcat 输入以下地址,如能正常显示,即表示部署成功 系统管理后台登录:http://192.168.11.11:8080/jeeadmin/jspgou/index.do 用户名:admin 密 码:123456 点击上图右上角浏览器图标访问网站首页: Tomcat 它是一套用来运行java web应用程序的服务环境。java web应用程序的源码文件通常是*.jsp。JSP的服务 环境由jdk和tomcat两个软件组成。 11/24 软件的部署很简单,因为只需要将下载好的jdk和tomcat软件包解压到系统中指定的目录下,并配置环境变 量文件,启动tomcat的服务就可以了。后期的重点是在于如何用tomcat去发布jsp网站应用程序。其发布 网站的方法跟apache和nginx有点相似。 Tomcat 被称作JAVA容器,WEB容器,WEB中间件 Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)

访问web应用的流程: 客户端浏览器 ---〉 web服务器(apache/nginx/tomcat)---〉网站文件

容器:用来容纳(装)东西(信息)的器具。 nginx(apache) 80 | web中间件 | 网站 1.有没有用过web容器? 2.你用过什么web容器 ? 3.你上家公司有没有用tomcat? 4.什么是web容器(web中间件) 5.nginx、apache、tomcat的区别? tomcat官网: http://tomcat.apache.org/ jdk官网: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(单机部署): Tomcat 方案二(动静分离集群): Nginx+Tomcat 实现动静分离,即html静态网页由apache或nginx处理,jsp动 态网页由tomcat服务处理 方案三:用nginx实现tomcat群集的负载均衡 Nginx | +-----------------------------+ | | | Tomcat1 Tomcat2 Tomcat3 2000 物理机器的配置 几台机器 建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序 方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实 例 12/24 静态元素 html css js 各种图片

动态元素 php java python 能跟数据库和服务器进行数据交互的代码 一、Tomcat Http Server jdk的包有两种:

  1. .gz .bz2 .zip 直接解压 放到安装位置 就能用

  2. .bin 直接执行 会解压出来一个目录 放到安装位置 就能用 一般放到/usr/local/下面 改环境变量

  3. 部署JAVA环境

tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 将jdk解压到/usr/local目录

方式1(首选):

ln -s /usr/local/jdk1.8.0_91 /usr/local/java

方式2(备选):

mv /usr/local/jdk1.8.0_91 /usr/local/java

修改环境变量: 方式1(首选):自己创建一个启动脚本

vim /etc/profile.d/jdk.sh

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 方式2(备选):写到系统自带的启动脚本内

vim /etc/profile

JAVA_HOME=/usr/local/java PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 使上设置的脚本立即生效: source /etc/profile.d/jdk.sh 或 source /etc/profile echo $PATH 测试java环境:

env |grep JAVA 选做,查看的结果如下

JAVA_HOME=/usr/local/java

java -version 必做,只要看到如下信息,就说明jdk已经配置好了

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) ----- 可以直接把openjdk删除 #yum erase $(rpm -qa | grep jdk) -y 2. 安装Tomcat:(和jdk的方式1一模一样,解压改名就能用) 首先,解压tomcat到指定的目录中。 13/24

tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/

ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat

然后,定义Tomcat所需环境变量:

vim /etc/profile.d/tomcat.sh //定义Tomcat环境变量

CATALINA_HOME=/usr/local/tomcat //Tomcat安装目录(基准、工作) export CATALINA_HOME

加载环境变量文件

source /etc/profile.d/tomcat.sh

启动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端口:8080 8005 8009 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以 及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:   第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用 时,使用的就是这个连接器。     第二个连接器监听8009端口,负责和其他的HTTP(apache)服务器建立连接。在把Tomcat与其他 HTTP服务器集成时,就需要用到这个连接器。 8005是tomcat本身的端口 3. 测试 http://192.168.2.251:8080/ tomcat目录结构: [root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 说明:-L 是level等级的缩写 /usr/local/tomcat/ #tomcat的工作目录 ├── bin #启动关闭命令 ├── conf #配置文件 ├── lib ├── LICENSE ├── logs #日志 catalina.out ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp ├── webapps #存网站(project--目录)的目录 默认网站为ROOT 14/24 └── work 随堂练习:在/usr/local/tomcat/webapps/ROOT目录中生成一个a.html的静态网页。 echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/ tomcat/webapps/ROOT/b.html echo "当前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html win7/10浏览器访问测试:192.168.11.11:8080/a.html

以下是部署jsp带数据库的网站应用程序jspgou。 二、安装MySQL(略) #yum install mariadb mariadb-server -y #systemctl start mariadb && systemctl enable mariadb 三、部署jspgou

ls /usr/local/tomcat/webapps/ //默认网站的基目录base

docs examples host-manager manager ROOT

ls /usr/local/tomcat/webapps/ROOT //默认网站的主目录

1.创建数据库: 在mysql数据库中创建jspgou数据库(推荐使用此数据库名,否则参照第三条修改对应的数据库链接信息), 字符集为utf-8 mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;' 2.更改数据库链接: wget http://bbs.jeecms.com/fabu/62873.jhtml unzip jspgouV6-ROOT.zip ls ROOT DB \cp -Rv ROOT /usr/local/tomcat/webapps/ Q:jdbc是什么?ODBC是什么? A:jdbc是java数据库连接(java database connection)的缩写。是用java访问数据库的接口驱动程序。 odbc是开放数据库连接(open database connection)的缩写。odbc的配置在win7/10系统控制面板的"管 理工具"中的"数据源(odbc)"功能里面有。odbc中的驱动程序通常是用户在系统中安装了数据库软件的服务 器或客户端软件自动生成的。 程序包内ROOT/WEB-INF/config/jdbc.properties文件第20行左右 vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下内容 jdbc.url=jdbc:mysql://127.0.0.1:3306/创建好的数据库名?characterEncoding=UTF-8 jdbc.username=root #在生产环境中必须用普通账户 jdbc.password=123 3.导入数据: 将压缩包内 DB文件中jspgou.sql文件导入至创建好的jspgou数据库中,如导入中出现执行sql语句过长问 题,请修改mysql配置文件my.cnf中max_allowed_packet参数为64m,默认为1m 导入数据库时如果报错:把所有datetime类型的字段默认值改成CURRENT_TIMESTAMP 注意:如果用Mariadb数据库不会出现如上错误,可以直接导入 [root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql 4.部署网站: 15/24 将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:\Tomcat7 \webapps\),启动tomcat 输入以下地址,如能正常显示,即表示部署成功 系统管理后台登录:http://192.168.11.11:8080/jeeadmin/jspgou/index.do 用户名:admin 密 码:123456 点击上图右上角浏览器图标访问网站首页: tomcat多实例部署 Tomcat 一机多实例 多实例运行不同的应用(类似虚拟主机) 多实例运行相同的应用(实现负载均衡,支持高并发处理,session问题) 16/24 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 webapps: 拷贝原来单实例的webapps到/下 webapps/ROOT

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

  2. 配置多实例目录 分别创建目录instance1 instance2 instance3,拷贝原来的/usr/local/tomcat下的conf,log,temp,work到3 个目录下 mkdir -v /usr/local/tomcat/instance{1..3} cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance1/ cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance2/ cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance3/ 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 Q:什么是html?什么是xml? A:html是超文本标记语言(hyper text markup language)。xml是可扩展标记语言。tomcat的配置文件 通常是xml格式的文本。 [root@www ~]# vim /usr/local/tomcat/instance1/conf/server.xml <!-- 以!--开头的代码是注释内容 --> <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> <Server port="8091" shutdown="SHUTDOWN"> //修改8005(第22行) <Connector port="8081" protocol="HTTP/1.1" //删掉8080(第71行)和8009(第93行)的配置,添加此 配置 17/24 connectionTimeout="20000" redirectPort="8443" /> <Host name="localhost" appBase="/webapps" //修改网站基准目录(第125行),后期要将jsp项目的 ROOT目录复制到/webapps目录中 unpackWARs="true" autoDeploy="true"> ...... jsp网站项目的发布方法(必知): 方法一:将软件开发部给你的*.jar包复制到tomcat的webapps目录中,tomcat软件会自动发布这个jsp 项目。 方法二:将软件开发部给你的jsp的*.tar.gz或*.zip文件解压,将解压后的ROOT目录复制到webapps目 录中的某个子目录中。在访问这个jsp项目时,在网址中输入子目录的名称即可进入这个jsp的网站。

  4. 脚本内容 [root@www ~]# vim /usr/local/tomcat/instance1/ins1.sh export JAVA_OPTS='-Xms64m -Xmx128m' 手写脚本: vim /usr/local/tomcat/instance1/ins1.sh 脚本内容如下 #!/bin/bash . /etc/init.d/functions export CATALINA_BASE="/usr/local/tomcat/instance1" 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;; 18/24 esac export JAVA_OPTS='-Xms64m -Xmx128m' 添加可执行权限:chmod -v +x /usr/local/tomcat/instance1/ins1.sh 复制启动脚本: cp -av /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance1/ins2.sh 复制后请修改脚本 文件中的 CATALINA_BASE容器实例路径 cp -av /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance1/ins3.sh 同上

  5. 启动测试 [root@www ~]# /usr/local/tomcat/instance1/ins1.sh start 然后用netstat -atunlp| grep :80 [root@www ~]# /usr/local/tomcat/instance2/ins2.sh start [root@www ~]# /usr/local/tomcat/instance3/ins3.sh start [root@www ~]# ss -tnlp |grep :80 |column -t LISTEN 0 100 :::8081 :::* users:(("java",pid=7288,fd=48)) LISTEN 0 100 :::8082 :::* users:(("java",pid=7468,fd=48)) LISTEN 0 100 :::8083 :::* users:(("java",pid=7496,fd=48)) LISTEN 0 1 ::ffff:127.0.0.1:8091 :::* users:(("java",pid=7288,fd=61)) LISTEN 0 1 ::ffff:127.0.0.1:8092 :::* users:(("java",pid=7468,fd=61)) LISTEN 0 1 ::ffff:127.0.0.1:8093 :::* users:(("java",pid=7496,fd=61)) <Server port="8091" 管理实例端口 <Connector port="8081" protocol="HTTP/1.1 提供web服务端口 <Connector port="8009" protocol="AJP/1.3" 用于前端如Apache通过AJP方式连接tomcat的端口 19/24 tomcat负载均衡 Nginx配置 [root@www tengine-2.2.0]# ./configure && make && make install [root@www ~]# vim /usr/local/nginx/conf/nginx.conf http { upstream tomcat_pool { #ip_hash; server 192.168.122.105:8081 weight=1 max_fails=2 fail_timeout=2; server 192.168.122.105:8082 weight=1 max_fails=2 fail_timeout=2; server 192.168.122.105:8083 weight=1 max_fails=2 fail_timeout=2; server 192.168.122.105:8084 weight=1 max_fails=2 fail_timeout=2; } server { location / { proxy_pass http://tomcat_pool; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } session(会话)暂没有使用共享方式,目前采用的会话保持。即将同一个client的访问始终调度到同一后端实 例。 jvm基础知识 20/24 Class Loader: JVM通过模块将Class文件加载到JVM内存中。 Execution Engine: 执行引擎也叫解释器,负责解释命令,提交OS执行。

Java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来 说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新的解析一次, 第二种,即时解析,也就是转载到内存的字节码会被解析成本地机器码,并缓存起来以提高重用性,但是 比较耗内存, 第三种,自适应优化解析,即将java将使用最频繁的代码编译成本地机器码,而使用不频繁的则保持字节 码不变,一个自适应的优化器可以使得java虚拟机在80%-90%的时间里执行优化过的本地代码,而只需要 执行10%-20%对性能有影响的代码。 第四种,一种能够利用本地方法直接解析java字节码的芯片。 JNI: Java Native Interface直接操纵机器硬件,如Java程序驱动打印机。 Stack: 栈是在线程创建时创建,线程结束栈内存也释放,不存在GC问题。栈内存存储局部变量、程序运行状 态、方法返回值等数据。栈中的数据以栈帧存在。栈帧是一个内存区块,是有关方法和运行期数据的数据 集。当一个方法fun1被调用就产生一个栈帧Frame1,压入栈中,fun1方法又调用 fun2方法,产生栈帧 Frame2压入栈。 Heap: 各条线程共享的运行时内存区域,所有类实例和数组对象分配内存的区域,由GC管理。堆可以划分为新 生区、养老区和永久区,如下图。 21/24 新生代: 类在这里产生和应用,最后被垃圾回收。所有的类在伊甸区被new出来,当伊甸区满了,GC会对该区不 用的对象销毁,剩余有用的转到幸存区。 老年代: 用于存放生成周期比较长的对象。 永久代: 存放JDK自带的class,interface。 注: allocation 美音 /ˌælə'keʃən/ 1.n. 配给, 分配, 拨出 2.分配额(或量)

native 美音 /'netɪv/ 1.adj. 本国的;土著的;与生俱来的;天然的;天赋的 2.n. 本地人;土产;当地居民 garbage 美音 /'ɡɑrbɪdʒ/ 22/24 n. 垃圾;废物 tomcat优化 内存溢出的处理办法(tomcat内存优化): Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh(在此文件 第一行开始添加新的设置即可)中设置 JAVA_OPTS 参数 JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ” -server 启用jdk 的 server 版; -Xms java虚拟机初始化时的初始堆大小; -Xmx java虚拟机可使用的最大堆大小; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域(老生代对象能占用内存的最大值) -XX:MaxNewSize=size 新生成对象能占用内存的最大值

注:要加“m”说明是MB,否则就是KB,在启动tomcat时会报内存不足。 注:永久保存区: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放 Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不 同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很 多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时 候。jvm的gc是不会清理PemGen space的,导致内存溢出

常见的内存溢出一般会有下面三种情况: 1.OutOfMemoryError: Java heap space //堆溢出,在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息 2.OutOfMemoryError: PermGen space //永久保存区域溢出 3.OutOfMemoryError: unable to create new native thread. //当JVM的heap size设置过大时, thread的创建数量便会减少 解决: 1.调整-Xms -Xmx参数可以解决第一种情况

64位操作系统对堆内存大小无限制 堆的大小可以使用 java -Xmx***M -version 命令来测试,***位置填写想设置的内存大小。支持的话 会出现jdk的版本号,不支持会报错。

-Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m 注意:java -Xmx***M version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的和,比如系统支持 最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是无法运行的

2.加大-XX:PermSize -XX:MaxPermSize来解决第二种情况 3.解决问题3方法如下: 1).如果程序中有bug,导致创建大量不需要的线程或者线程没有及时回收,那么必须解决这个bug,修 改参数是不能解决问题的。 2).如果程序确实需要大量的线程,现有的设置不能达到要求,那么可以通过修改MaxProcessMemory, 23/24 JVMMemory,ThreadStackSize这三个因素,来增加能创建的线程数: a, MaxProcessMemory 使用64位操作系统 b, JVMMemory 减少JVMMemory的分配 使用tomcat的catalina.sh这里配置,JAVA_OPTS=- Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m-XX:MaxPermSize=256m c, ThreadStackSize 减小单个线程的栈大小 这个异常问题本质原因是: 我们创建了太多的线程,而能创建的线程数是有限制的,导致了异常的发生。 能创建的线程数的具体计算公式如下: (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

MaxProcessMemory 指的是一个进程的最大内存 JVMMemory JVM内存 ReservedOsMemory 保留的操作系统内存 ThreadStackSize 线程栈的大小

在java语言里, 当你创建一个线程的时候,虚拟机会在JVM内存创建一个Thread对象同时创建一个操 作系统线程,而这个系统线程的内存用的不是JVMMemory,而是系统中剩下的内存(MaxProcessMemory - JVMMemory - ReservedOsMemory)。由公式得出结论:你给JVM内存越多,那么你能创建的线程越少,越 容易发生java.lang.OutOfMemoryError: unable to create new native thread。

MaxProcessMemory(Maximum Address Space Per Process): Operating System Maximum Address Space Per Process Redhat Linux 32 bit 2 GB Redhat Linux 64 bit 3 GB Windows 98/2000/NT/Me/XP 2 GB

JVMMemory: Heap + PermGen

-XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值(jdk1.5.0以后默认值为1M)

============================================================================== 线程池设置: 线程池指定Web请求负载的数量,因此,为获得更好的性能这部分应小心处理。可以通过调整连接器属 性“maxThreads”完成设置。maxThreads的值应该根据流量的大小,如果值过低,将有没有足够的线程来 处理所有的请求,请求将进入等待状态,只有当一个的处理线程释放后才被处理;如果设置的太大, Tomcat的启动将花费更多时间。因此它取决于我们给maxThreads设置一个正确的值。 #vim server.xml <Connector port="8080" protocol="HTTP/1.1" maxThreads="500" connectionTimeout="20000" redirectPort="8443" /> 在上述配置中,maxThreads值设定为“500”,这指定可以由服务器处理的并发请求的最大数量。如果没有 指定,这个属性的默认值为“200”。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请 求进程被释放。错误看起来如下, [ org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (500) are currently busy, waiting. Increase maxThread 最好使用“Tomcat集群”的多个实例。也就是说,如果有“1000”请求,两个Tomcat实例设 置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。

24/24 <Connector port="9027" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/> 参数说明: maxThreads 客户请求最大线程数 minSpareThreads Tomcat初始化时创建的 socket 线程数 maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于 maxSpareThreads ) connectionTimeout 连接超时 minProcessors 服务器创建时的最小处理线程数 maxProcessors 服务器同时最大处理线程数 URIEncoding URL统一编码

查看内存设置和使用信息: [root@nfs conf]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1903 root 46u IPv6 16003 0t0 TCP *:webcache (LISTEN) [root@nfs conf]# jmap -heap 1903

打war部署(扩展): 选中eclipse中的jeecms项目,右键->Export->WAR file,生成xxx.war 将xxx.war放入本机tomcat安装目录下的webapps文件夹中,确保webapps下不包含名为xxx的文件夹,启 动tomcat