5.3.1. 快速部署
快速部署在开发程序的时候是默认的部署方式,因为快速部署的构建用时最少,能自动安装并且启动应用服务。生产环境也可以用这种方式部署。
快速部署是指在 Studio 中运行/调试应用程序或者点击主菜单的 CUBA > Build Tasks > Deploy。其实底层机制是 Studio 执行 deploy Gradle 任务,该任务在 build.gradle 文件中,分别为 core 和 web 模块做了任务声明。在第一次执行 deploy 前,它还会运行 setupTomcat 任务安装和初始化本地的 Tomcat 服务。也可以不使用 Studio 手动运行这些任务。
|
需要确保系统环境没有 |
快速部署会在 deploy 目录创建如下目录结构(只列出重要的文件和目录):
deploy/
app_home/
app/
conf/
temp/
work/
app-core/
conf/
temp/
work/
logs/
app.log
local.app.properties
logback.xml
tomcat/
bin/
setenv.bat, setenv.sh
startup.bat, startup.sh
debug.bat, debug.sh
shutdown.bat, shutdown.sh
conf/
catalina.properties
server.xml
logging.properties
Catalina/
localhost/
lib/
hsqldb-2.4.1.jar
logs/
shared/
lib/
webapps/
app/
app-core/
-
deploy/app_home- 应用程序主目录。 -
deploy/tomcat- 本地 Tomcat 目录。-
bin– 包含配置、启动和停止 Tomcat 服务的脚本:-
setenv.bat,setenv.sh– 这两个脚本用来设置环境变量。这些脚本可以用来设置 JVM 内存参数、配置访问 JMX,以及连接调试器的参数。如果在 Linux 虚拟机(VPS)中,Tomcat 启动的很慢,可以尝试在
setenv.sh里给 JVM 配置非阻塞熵源(non-blocking entropy source):CATALINA_OPTS="$CATALINA_OPTS -Djava.security.egd=file:/dev/./urandom" -
startup.bat,startup.sh– 启动 Tomcat 服务的脚本。在 Windows 环境,Tomcat 会在一个单独的终端窗口启动,但是在类 Unix 系列的系统服务会在后台启动。需要在当前终端窗口启动服务,使用以下命令代替
startup.*:> catalina.bat run$ ./catalina.sh run -
debug.bat,debug.sh– 跟startup.*类似,但是会启动能连接调试器的 Tomcat 服务。这些脚本会在执行构建脚本中的 start 任务的时候使用。 -
shutdown.bat,shutdown.sh– 停止 Tomcat 服务。
-
-
conf– 包含 Tomcat 的配置文件。-
catalina.properties– Tomcat 属性文件。如果需要从shared/lib目录加载共享库(参阅下文),这个文件需要配置下面这行:shared.loader=${catalina.home}/shared/lib/*.jar -
server.xml– Tomcat 配置文件。 -
logging.properties– Tomcat 服务日志配置文件。 -
Catalina/localhost– 这个目录下可以放置 context.xml 应用程序部署描述文件。这个目录下放置的描述文件会比META-INF目录下的描述文件优先级高。这种机制可以用在生产环境。比如,通过这种机制可以配置跟应用程序本身不同的数据库连接参数,从而达到生产环境连接不同数据库的要求。针对不同服务的描述文件需要有不同服务的应用程序名称和
.xml扩展名。所以,如果是为app-core创建部署描述文件,需要拷贝webapps/app-core/META-INF/context.xml文件成conf/Catalina/localhost/app-core.xml文件,然后通过修改conf/Catalina/localhost/app-core.xml内容覆盖设置。
-
-
lib– 服务的 通用类加载器(common classloader) 加载类库的目录。这些类库可以被这个 Tomcat 服务和所有部署在其中的 web 应用程序加载。还有,这个目录应该有数据库的 JDBC 驱动(hsqldb-XYZ.jar,postgresql-XYZ.jar等)。 -
logs– Tomcat 日志目录。 -
shared/lib– 所有部署的应用可访问的类库目录。服务的 共享类加载器(shared classloader) 会加载这些类库。使用这个目录的方法在上面conf/catalina.properties文件中提到过。构建脚本的 deploy 任务会拷贝所有不在
jarNames参数列举的类库到这个目录。 -
webapps– web 应用程序目录。每个应用程序在它自己的子目录里,子目录按照 展开成文件夹的 WAR(exploded WAR) 形式命名。构建脚本的 deploy 任务会按照
appName参数来创建应用程序子目录,除了其它的文件之外,还会拷贝列在jarNames参数的类库到每个应用程序的WEB-INF/lib目录。
-
可以在 build.gradle 里指定 Tomcat 的路径和应用程序主目录的路径,分别使用 cuba.tomcat.dir 和 cuba.appHome 属性,示例:
cuba {
// ...
tomcat {
dir = "$project.rootDir/some_path/tomcat"
}
appHome = "$project.rootDir/some_path/app_home"
}