设为首页 收藏本站
查看: 939|回复: 0

[经验分享] [老文] tomcat 部署指南

[复制链接]

尚未签到

发表于 2015-8-7 12:34:07 | 显示全部楼层 |阅读模式
  

下载与安装

  • 个人建议不要使用发行版带的版本, 始终从主页来下载安装, 下载地址位于[1], 安装方法很简单, 直接解压即可, 建议解压到 /usr/local/ 目录, 再链接到 /usr/local/tomcat 目录


  • 创建目录 /data/apps/tomcat, 删除 $TOMCAT_HOME/webapps, 将 /data/apps/tomcat 软链接到 $TOMCAT_HOME/webapps
  • 创建目录 /data/logs/tomcat,  删除 $TOMCAT_HOME/logs, 将 /data/logs/tomcat 软链接到 $TOMCAT_HOME/logs
  • 如果 tomcat 无须监听 80 端口, 那么就没有必要使用 root 权限来跑, 那么就需要建立 tomcat 用户和 tomcat 用户组(tomcat 用户属于 tomcat 用户组), 再把 /usr/local/tomcat 下的文件owner 改为 tomcat.
  • 安装后的目录结构如[2]所示。
  [1] http://tomcat.apache.org/download-60.cgi
  [2] 目录结构示意图
/usr/local
|-- apache-tomcat-6.0.24
|   |-- LICENSE
|   |-- NOTICE
|   |-- RELEASE-NOTES
|   |-- RUNNING.txt
|   |-- bin
|   |-- conf
|   |-- lib
|   |-- logs -> /data/logs/tomcat
|   |-- temp
|   |-- webapps -> /data/apps/tomcat
|   `-- work
`-- tomcat -> apache-tomcat-6.0.24/
  
配置
  
基础配置
  一般安装后需要调整如下的几个文件:

  • conf/server.xml: 主要是调整端口, URI 编码, 自动部署, 访问日志配置
    需要修改的部分已在下面红色的部分标明, 自动部署会带来一些麻烦, 比如 "OutOfMemoryError: PermGen Space", 访问日志部分(AccessLogValve)本来就在文件中, 不过被注释了, 去掉注释就可以了

...

  

  


  • bin/setenv.sh
    需要创建该文件,加入一些环境配置(比如修改内存设置), 如下所示
    CATALINA_OPTS="-XX:MaxPermSize=256M"
  
虚拟主机
  虚拟主机也是在 server.xml 中配置, 范例如下

...
   
        jxphone.com
        
   
   
               
  每个虚拟主机用一个  来配置, 其中  是虚拟主机的别名, 可以有多个, Engine  的 defaultHost 属性表示使用 ip 地址直接访问时使用哪个主机, 也可以不设置 defaultHost 属性。
https
  
首先是要生成 keystore, 生成过程另文叙述, 然后把 keystore 拷贝到 conf 目录, 修改 server.xml 如下所示



  PS. https 没有虚拟主机的概念, 所有的虚拟主机必须共享同一份 https 配置, 因为 https 协商加密在前, 传入 Host 参数在后。


apache
  
如果需要把 java 的网站和 php 的网站联合部署在同一台机器上,则一般使用 apache 作为前端, 用 mod_jk 连接 tomcat

  • 首先需要安装 libapache2-mod-jk, 并在 apache 中激活, (Debian 下直接使用 "sudo apt-get install libapache2-mod-jk; sudo a2enmod jk" 即可, 其他系统还未试过)


  • 在 $TOMCAT_HOME/conf/server.xml 中修改 AJP connector 的配置: "", 注意 URIEncoding 一定记得加, redirectPort 是指转向 https 时所用的端口


  • 配置 /etc/libapache2-mod-jk/workers.properties, 根据注释填入全部数据即可


  • 新建文件 /etc/apache2/sites-available/tomcat, 输入如下的内容

    ServerName www.jxphone.com
    JkMount /* ajp13_worker


    ServerName bar.jxphone.com
    JkMount /* ajp13_worker


  • 重启 apache (或者重新加载 apache 配置)即可
  另: apache 的访问日志比 tomcat 自带的好用, 如果全部使用 mod_jk 来访问, 那么可以去掉 server.xml 中AccessLogValve相关的配置, 缺省日志位置在 /var/log/apache2/other_vhosts_access.log

日志
  tomcat 运行在安全模式下时,  能只读 war 包里面的文件, 能读写 workDir 里面的文件, 其他文件就需要在 $TOMCAT_HOME/conf/catalina.policy 里面申请
简单的应用日志直接输送到终端即可, 比如按如下文件来配置 log4j.properties

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=www.jxphone.com: %d{ABSOLUTE} %5p %c:%L - %m%n
log4j.rootLogger=info, CONSOLE
  在 ConversionPattern 中加入一个前缀, 方便分离日志。
日志的缺省位置在 $TOMCAT_HOME/logs/catalina.out
复杂的应用仍需要使用独立的日志的系统
自动启动
  将如下的文件放到 /etc/init.d/tomcat, 并链接到 /etc/rc2.d/S80tomcat

#!/bin/sh
TOMCAT_HOME=/usr/local/tomcat
case "$1" in
start)
    echo $"Starting Tomcat"
    /bin/su tomcat $TOMCAT_HOME/bin/startup.sh
    ;;
stop)
    echo $"Stopping Tomcat"
    /bin/su tomcat $TOMCAT_HOME/bin/catalina.sh stop
    ;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart|help)"
esac
监控

  • 修改 $TOMCAT_HOME/bin/setenv.sh, 加入如下一行
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9012 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"


  • 建立 $HOME/projects/utils/build.xml, 如下所示

   
   
   
   
   
   
   
   
   
    http://moshop.stat.jxphone.com/spdc/?param=s=0400000002|k1=${k1}|k2=${k2}|k3=${k3}|t=${t}|d=${d}"
   
   

   
        
      
      
   
   
   
        
        
   
   
        
        
   
   
        
        
   
   
        
        
   
   
        
        
   
   
        
        
   
   
        
        
   
   
        
        
   
   



  • 运行 crontab -e, 加入如下两行
  
ANT_HOME=/usr/local/share/ant
55 23 * * * $ANT_HOME/bin/ant -f $HOME/projects/utils/build.xml >> $HOME/cron.log
部署
  
部署 war 包, 以及配置 context.xml

  • 把 war 包拷贝到虚拟主机配 置中 appBase 属性所指定的目录, 比如 webapps/www.jxphone.com, 如果要部署到根目录("/"), 则命名为 ROOT.war, 如果要部署到 /api 目录, 则命名为 api.war, 如果要部署到深层次目录, 比如 /api/v1 目录, 则命名为 api#v1.war
  • 停止 tomcat 服务
  • 删除war包对应的已经展开的目录, 只保留 war 包
  • 如 果需要配置 context.xml, 则把 war 包里面的 META-INF/context.xml 拷贝到配置目录的对应位置, 比如 www.jxphone.com 的 api.war 的对应位置为 conf/Catalina/www.jxphone.com/api.xml (其中 Catalina 为 Engine 的名字, www.jxphone.com 为 Host 的名字, api.xml 的名字与 war 包的名字对应 (比如根目录用 ROOT.xml, /api/v1 目录用 api#v1.war)
  • 编辑 api.xml, 修改里边的相关参数
  • 如果 api.xml 有保密数据,比如数据库密码, 则关掉 api.xml 的所有用户可读权限, 比如 "chmod 640 api.xml"
  • 重启 tomcat 服务
  
参考文献:

  • Apache Tomcat Configuration Reference: Environment Entries, Resource Definitions
  • JNDI Datasource HOW-TO
  
还未涉及到的内容
  

  • 同时使用 apache 和 https

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-95191-1-1.html 上篇帖子: Tomcat服务器部署 下篇帖子: redhat5.5上安装nginx1-1.2.3+tomcat(集群)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表