Java多层架构应用系统部署
Java应用服务器部署
Tomcat目录的作用
解压缩tomcat的安装文件后, 称为tomcat应用服务器软件. 其中各目录的作用如下:
-
bin目录中是启动和关闭tomcat的脚本文件
-
conf目录是tomcat的配置文件
-
lib目录是tomcat和web应用使用的jar包
-
logs目录是tomcat日志文件
-
temp目录用于tomcat存储临时文件
-
webapps目录是发布web应用的目录
-
work目录是存储由jsp生成的servlet文件的目录
Tomcat部署过程
-
安装JDK后, 确认Java版本为1.8
- 解压缩tomcat后, 到tomcat的bin目录, 运行startup.bat, 启动tomcat, 发现需要先设置环境变量JAVA_HOME
D:\workspace\apache-tomcat-8.5.51\bin>java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
D:\workspace\apache-tomcat-8.5.51\bin>startup.bat
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
D:\workspace\apache-tomcat-8.5.51\bin>
- 设置环境变量JAVA_HOME为JDK安装到的目录
- 在tomcat的bin目录, 运行startup.bat, 启动tomcat
D:\workspace\apache-tomcat-8.5.51\bin>set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_241
D:\workspace\apache-tomcat-8.5.51\bin>startup.bat
Using CATALINA_BASE: "D:\workspace\apache-tomcat-8.5.51"
Using CATALINA_HOME: "D:\workspace\apache-tomcat-8.5.51"
Using CATALINA_TMPDIR: "D:\workspace\apache-tomcat-8.5.51\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_241"
Using CLASSPATH: "D:\workspace\apache-tomcat-8.5.51\bin\bootstrap.jar;D:\workspace\apache-tomcat-8.5.51\bin\tomcat-juli.jar"
验证tomcat运行
打开浏览器输入网址http://localhost:8080/
可以看到Tomcat网站首页.
Derby数据库部署
Apache Derby目录的作用
解压缩derby的安装文件后, 称为derby数据库软件. 其中各目录的作用如下:
- bin目录中是启动和关闭derby服务器和运行derby客户端的脚本文件
- demo目录中是数据库配置和编程的示例
- docs目录是derby的文档
- javadoc目录是derby的编程API
- lib目录是derby的各种库. 其中derby客户端
derbyclient.jar
中含有jdbc驱动程序 - test目录是derby测试程序
Apache Derby的部署过程
-
解压缩derby安装文件, 成为derby数据库软件.
- 例如: 解压到D:\workspace中, 成为D:\workspace\db-derby-10.14.2.0-bin
-
建立一个目录作为存储数据库数据文件的目录
- 例如: 建立目录D:\workspace\db-derby-data.
-
然后把开发用的数据库OOPDB复制到D:\workspace\db-derby-data中.
-
打开命令行窗口cmd, 设置环境变量DERBY_HOME
- 设置临时(仅用于本次会话)的环境变量DERBY_HOME为derby数据库软件的目录. 其bin目录中有管理服务器的程序脚本.
- 在预计作为数据库的数据文件目录, 运行启动derby数据库服务的脚本startNetworkServer.bat
- 非常重要! 在哪里启动derby数据库服务, 就在哪里创建数据库.
完成上述步骤后, derby数据库就部署好了. 在cmd窗口中执行命令的过程如下:
D:\workspace\db-derby-data>set DERBY_HOME=D:\workspace\db-derby-10.14.2.0-bin
D:\workspace\db-derby-data>%DERBY_HOME%\bin\startNetworkServer.bat
Wed Mar 04 09:42:42 CST 2020 : 已使用基本服务器安全策略安装了 Security Manager。
Wed Mar 04 09:42:42 CST 2020 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 已启动并准备接受端口 1527 上的连接
运行Apache Derby客户端ij与服务器交互
- 打开另一个命令行窗口cmd, 在derby数据库软件的bin目录中, 运行derby客户端ij
- 连接数据库: connect jdbc连接串
- 例如:
connect 'jdbc:derby://localhost:1527/OOPDB;user=root;password=123456';
- 特别注意每条命令必须用
;
结尾 - 连接串的格式就是jdbc连接串的标准格式
- 创建数据库OOPDB00, 需要在连接串中增加
create=true;
表示如果不存在OOPDB00, 则创建数据库- 例如:
connect 'jdbc:derby://localhost:1527/OOPDB00;create=true;user=root;password=123456';
- 例如:
- 例如:
- 显示有哪些表:
show tables;
- 显示表结构: describe 表名
- 例如:
describe appuser;
- 例如:
- 执行SQL语句
- 例如:
select * from appuser;
- 例如:
- 连接数据库: connect jdbc连接串
在cmd窗口中执行命令的过程如下:
D:\workspace\db-derby-10.14.2.0-bin\bin>ij
ij 版本 10.14
ij> connect 'jdbc:derby://localhost:1527/OOPDB;user=root;password=123456';
ij> show tables;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
SYS |SYSCOLPERMS |
SYS |SYSCOLUMNS |
SYS |SYSCONGLOMERATES |
SYS |SYSCONSTRAINTS |
SYS |SYSDEPENDS |
SYS |SYSFILES |
SYS |SYSFOREIGNKEYS |
SYS |SYSKEYS |
SYS |SYSPERMS |
SYS |SYSROLES |
SYS |SYSROUTINEPERMS |
SYS |SYSSCHEMAS |
SYS |SYSSEQUENCES |
SYS |SYSSTATEMENTS |
SYS |SYSSTATISTICS |
SYS |SYSTABLEPERMS |
SYS |SYSTABLES |
SYS |SYSTRIGGERS |
SYS |SYSUSERS |
SYS |SYSVIEWS |
SYSIBM |SYSDUMMY1 |
ROOT |APPUSER |
ROOT |LOGIN_LOG |
ROOT |PERSON |
已选择 26 行
ij> describe appuser;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
USERNAME |VARCHAR |NULL|NULL|50 |NULL |100 |NO
PASSWORD |VARCHAR |NULL|NULL|50 |NULL |100 |YES
PIC |VARCHAR |NULL|NULL|100 |NULL |200 |YES
已选择 3 行
ij> select * from appuser;
USERNAME |PASSWORD |PIC
------------------------------------------------------------------------------
00 |123 |pic/00.jpg
01 |001 |NULL
02 |002 |pic/02.jpg
03 |003 |NULL
04 |004 |NULL
05 |005 |NULL
06 |006 |NULL
07 |007 |NULL
08 |008 |pic/08.jpg
09 |009 |pic/09.jpg
12 |000 |NULL
13 |013 |NULL
15 |015 |pic/15.jpg
16 |016 |pic/16.jpg
10 |123 |pic/10.jpg
已选择 15 行
ij>
创建应用程序要使用的表
有多种方式创建应用程序要使用的表. 推荐采用SQL脚本方式, 以获得最高的自动化和在不同数据库之间可移植性.
- 创建数据库后, 用SQL语句创建表, 并设置表中必要的初始数据.
- 在实际部署中推荐这种方式, 全部脚本化, 可以自动化执行. 并且不会带有测试用的混乱数据.
- 包括: 创建表的语句和插入初始数据的语句.
- 采用复制数据库的方式.
- 正式上面示例中采用的方式. 简单, 带有全部测试数据. 在多人共享数据库时, 很难确定以谁的数据库为准.
- 采用数据库迁移工具完成数据库表结构和表中数据的导入导出
应用程序部署
应用程序的基本部署过程
项目文件(.war)拷贝到webapps目录中, 即完成部署.
-
当服务器启动时, 会加载所有这个目录下的所有应用.
-
当有war包文件复制到webapps时, 服务器也会加载这个应用.
war包文件是一种特殊的jar文件, 压缩了一个web应用的全部程序和网页等内容.
当把一个war包放在webapps目录时, 服务器会自动解压缩这个war包, 生成一个同名的文件夹, 用于执行.
将web项目目录myweb打包成war包文件的命令: jar -cvf mywar.war myweb
使用Tomcat Web应用程序管理者
在tomcat的conf\tomcat-users.xml
文件中增加tomcat的管理账户, 增加内容如下.
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
修改后的conf\tomcat-users.xml
文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary. It is
strongly recommended that you do NOT use one of the users in the commented out
section below since they are intended for use with the examples web
application.
-->
<!--
NOTE: The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
</tomcat-users>
打开浏览器, 输入tomcat的URL: http://localhost:8080
选择右侧的按钮"Manager App"
输入用户名(tomcat)和口令(s3cret).
如果用户名和口令没有配置或者配置错误. 显示如下:
需要在tomcat的conf\tomcat-users.xml
文件中增加tomcat的管理账户.
如果验证通过
可以上传war文件后, 点击按钮"部署".
并且可以管理web应用的启动, 停止和卸载.
应用程序部署的资源规划
在<多层架构应用系统示例>中, 有一个用于存储上传图片文件的目录pic. 这个目录是不应当存在于war包中的. war包中应当是应用程序和静态的资源文件. 但是pic允许用户上传图片文件, 内容是动态变化的. 因此在有war包文件复制到webapps后, 到JEE2020-07-mla目录中增加一个目录pic用于存储上传图片文件, 并且这个目录可以被应用中的网页作为静态资源访问.
由于webapps所在的存储设备, 由于容量的原因, 可能不适合大规模存储上传文件, 所以采用建立目录的连接, 连接到其它存储设备上的目录.
建立到目录的连接的过程如下
D:\workspace\apache-tomcat-8.5.51\webapps\JEE2020-07-mla>mklink /j pic d:\workspace\pic
为 pic <<===>> d:\workspace\pic 创建的联接
D:\workspace\apache-tomcat-8.5.51\webapps\JEE2020-07-mla>dir
驱动器 D 中的卷是 3T
卷的序列号是 EAF8-B100
D:\workspace\apache-tomcat-8.5.51\webapps\JEE2020-07-mla 的目录
2020/03/04 17:54 <DIR> .
2020/03/04 17:54 <DIR> ..
2020/03/04 17:46 704 index.html
2020/03/04 17:52 <DIR> META-INF
2020/03/04 17:54 <JUNCTION> pic [d:\workspace\pic]
2020/03/04 17:52 <DIR> WEB-INF
1 个文件 704 字节
5 个目录 2,790,364,680,192 可用字节
D:\workspace\apache-tomcat-8.5.51\webapps\JEE2020-07-mla>
使用复制替换war文件部署和用del命令或者浏览器删除部webapps下的署应用目录, 不会删除链接目录中的文件.
- 删除应用的war文件, 会删除链接目录中的其它文件.
- 此时tomcat会清理这个应用的所有痕迹. 上面示例中
d:\workspace\pic
中的所有文件都会被删除.
- 此时tomcat会清理这个应用的所有痕迹. 上面示例中
- 复制替换war文件, 不会删除链接目录中的其它文件.
来源:CSDN
作者:我想写论文
链接:https://blog.csdn.net/dlutcat/article/details/104670641