我们常常站点中会提供给用户上传文件、图片、视频或者诸如为了提高性能生成的静态文件等存储在站点应用中。但如果静态资源文件和项目文件在同一个目录下,当我们重新部署文件时,war重新解压会导致静态资源文件的丢失。如果通过提前备份这些静态文件,一来添加了不少麻烦,而来随着上传的数据文件的增加,文件数和文件大小的增加,增加了部署的时间。那么如何解决这个问题?

通过编写bash脚本实现指定目录解压

由于我的服务器是linux服务器,应用服务器是tomcat。因此要使用bash脚本进行解压的,并规定哪些目录是可以替换的,哪些目录必须保留不能删除和覆盖。

在解压和覆盖之前先进行备份相关应用程序和资源文件。要想通过自定义的解压更新,必须关闭tomcat的自解压功能。在server.xml中不能设置该应用的context的节点属性    reloadable="true".以下是自解压脚本代码。假设站点名称为site

# site deploy script

WEB_APP_DIR="/home/webapps/site"
WEB_DEPLOY_DIR="/home/deploy/site"
BACKUP_DIR="/home/backup/site"
WAR_FILENAME="site.war" #stop tomcat service
cd $TOMCAT_HOME/bin
./shutdown.sh mkdir $WEB_DEPLOY_DIR
#backup file
cp -R $WEB_APP_DIR $BACKUP_DIR/site_$(date -d today +%Y%m%d%H%M%S)
cp $WEB_APP_DIR/WEB-INF/classes/setup/applicationContext.xml $WEB_DEPLOY_DIR/applicationContext.xml #copy apps
cd $WEB_DEPLOY_DIR
cp /ftpupload/$WAR_FILENAME $WAR_FILENAME jar -xf $WAR_FILENAME rm -r $WEB_APP_DIR/WEB-INF
cp -R WEB-INF $WEB_APP_DIR rm -r $WEB_APP_DIR/ckeditor
cp -R ckeditor $WEB_APP_DIR rm -r $WEB_APP_DIR/css
cp -R css $WEB_APP_DIR rm -r $WEB_APP_DIR/js
cp -R js $WEB_APP_DIR rm -r $WEB_APP_DIR/images
cp -R images $WEB_APP_DIR rm -r $WEB_APP_DIR/META-INF
cp -R META-INF $WEB_APP_DIR rm -r $WEB_APP_DIR/about
cp -R about $WEB_APP_DIR rm -r $WEB_APP_DIR/ueditor
cp -R ueditor $WEB_APP_DIR rm -r $WEB_APP_DIR/upload
cp -R upload $WEB_APP_DIR cp index.jsp $WEB_APP_DIR #recover config file
cp applicationContext.xml $WEB_APP_DIR/WEB-INF/classes/setup/
echo $WEB_DEPLOY_DIR
#remove all deploy files
rm -rf $WEB_DEPLOY_DIR #start tomcat service
cd $TOMCAT_HOME/bin
./startup.sh

将以上内容保存为site_deploy.sh,并对该bash文件进行授权

chmod +x site_deploy.sh

通过给tomcat配置虚拟目录

假设站点名称为site,我们在server.xml中添加一个带有虚拟路径的site的站点配置

      <Host name="site.com" appBase="/home/tomcat/webapps/" unpackWARs="true" autoDeploy="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/home/logs/tomcat/site"
prefix="site." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="/home/webapps/site" reloadable="true" crossContext="true"/>
<Context path="/html" docBase="/home/apache2/htdocs/site" reloadable="true" crossContext="true"/>
</Host>
  • /home/webapps/site为站点主应用程序的部署路径。
  • /html为站点的虚拟路径,/home/apache2/htdocs/site为静态资源存储绝对路径。

通过以上便可以解决上面所说的问题。应用程序的部署不影响到用户上传的数据文件以及程序生成的静态数据文件。

如果有通过apache部署负载均衡的,需要在httpd.conf设定虚拟路径的别名才能正常访问静态资源文件。

    Alias /html /home/apache2/htdocs/moral

通过配置tomcat虚拟路径配置站点的静态资源的更多相关文章

  1. 【IDEA】IDEA中配置tomcat虚拟路径的两种方法

    首先要确保使用的是本地的tomcat服务器,而不是maven插件. -------------------------第一种:使用IDEA工具自动配置(推荐这种)------------------- ...

  2. TOMCAT虚拟路径配置

    在tomcat安装好后,只要把你的web项目copy到%TOMCAT_HOME%webapp下面就可以是使用啦!!其实还有种方法就是设定虚拟目录,即把项目的目录映射到tomcat中.这样做即可以不用重 ...

  3. 配置tomcat虚拟路径

    这个问题其实很简单,首先找到你安装的tomcat的路径然后,在Tomcat6.0/conf/Catalina路径下创建localhost文件夹,如果有,就不用创建,然后在该文件夹下创建一个xml文件, ...

  4. Linux下设置Tomcat虚拟路径

    问题描述:我在上传图片的位置不在Tomcat服务器下,用户无法访问 解决方案:配置Tomcat虚拟路径使用户可以访问图片 配置Tomcat # cd /usr/local/apache-tomcat- ...

  5. IDEA 设置 TOMCAT 虚拟路径

    今天在使用 IDEA 配置 TOMCAT 虚拟路径时一直报错,最终解决方式整理如下: 一.使用 Tomcat 自己的虚拟路径 1.在 Tomcat9\conf 目录下找到 server.xml 文件, ...

  6. IDEA 启动项目,tomcat中配置的虚拟路径无法使用

    有时候,使用idea启动项目,非动静分离项目,直接根据图片url地址显示图片,会发现图片无法显示,tomcat中配置的虚拟路径无法使用,这时候需要配置idea.选择路径,然后给与一个访问名就行了.

  7. 关于tomcat配置了虚拟路径,但是在Idea中无法生效的问题

    1. 确认 tomcat 的server.xml 文件中配置的虚拟路径是否正确 其中,path表示访问的虚拟路径,docBase表示真实路径 2. Idea 服务器配置中是否勾选 “Deploy ap ...

  8. Tomcat虚拟目录配置方法及原理

    tomcat 安装好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了.这样会使webapps越来越大就需要设置虚拟目录: 1.单个应用设置: 在<Host ...

  9. 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志

    配置Tomcat监听80端口 • vim /usr/local/tomcat/conf/server.xml Connector port=" protocol="HTTP/1.1 ...

随机推荐

  1. 7 个面向Web开发者的实用CSS3教程推荐

    通过CSS来创建精细.复杂的效果,成为了Web前端开发的未来趋势.世界各地的设计师认为CSS3是一项非常具有潜力的技术,未来将会创造更多不可思议的美妙设计. 本文为Web开发者带来了一些与CSS3相关 ...

  2. 【Android】Android程序保护与破解浅析

    此文源自组内成员分享的PPT,其他成员的文档由于没有得到授权,暂不公开. 本文命令如果没有特殊注明,均为windows 7环境. 本文只涉及大概的知识点,不涉及具体的细节,需要注意. 反编译 apkt ...

  3. 通过Java SE 7自带的监控服务(WatchService API)实现类似.NET FileWatcher的功能

    Java SE 7 Tutorial中增加了一个监控目录变更情况的示例,用于介绍其新发布的WatchService API. 但对于用惯了.NET FileWatcher的用户而言,如果用于项目我认为 ...

  4. [King.yue]VS2012 无法启动IIS Express Web服务器的解决方案

    打开VS2012解决方案资源管理器 -> 点选 Web 项目选择 -> 属性 -> Web -> 选择“使用 Visual Studio 开发服务器” -> 选中“自动分 ...

  5. 【转】Getting xrdp to work on CentOS 6.4

    vi /etc/selinux/config SELINUX=disabled reboot Step 1: #rpm -Uvh http://pkgs.repoforge.org/rpmforge- ...

  6. Asm Shader Reference --- Shader Model 1 part

    ps部分 ps_1_1,ps_1_2,ps_1_3,ps_1_4 总览                   Instruction Set                               ...

  7. linux 已有目录挂载磁盘

    1.查看当前硬盘使用状况: [root@gluster_node1 ~]# df -h Filesystem            Size  Used Avail Use% Mounted on / ...

  8. (转载)链表环中的入口点 编程之美 leecode 学习

    http://www.cnblogs.com/hiddenfox/p/3408931.html 说的很细 /** * Definition for singly-linked list. * clas ...

  9. LCD驱动(FrameBuffer)实例开发讲解

    一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 ...

  10. wuzhicms后台菜单的添加

    红色部分都是从菜单管理处添加而来.只有少数是自定义的. 开发一个模块,首先就是菜单的管理.而,不需要的功能也可以在在菜单管理处隐藏或删除. 添加菜单: