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

[经验分享] 使用脚本为tomcat 构建chroot non

[复制链接]

尚未签到

发表于 2018-11-30 08:28:34 | 显示全部楼层 |阅读模式
  最近为线上tomcat 构建chroot non-root环境,看了官方文档后,操作步骤还是不少。整个脚本以便批量创建,在这里对我当前的环境做个说明。关于脚本在使用过程中出现问题,请直接回复!
  具体环境:  tomcat 6.0.3x+apr+apr-util+apr-iconv+jdk1.6+cronolog
  根据官方的建议,对jbchroot.c进行编译,获得jbchroot的可执行文件. 使用的好处是,它能够在chroot环境下,使用非root权限进行运行。在于lib64里库文件复制,可以参照物我的。我根据自己当前环境,添加了一下相应的文件。如 cp /usr/local/sbin/cronolog  usr/local/sbin
  脚本使用方法:   ./scriptname 后,输入chroot目录路径,以及tomcat解压后的目录环境。
  脚本会根据你当前的系统环境变量进行jdk1.6目录复制。
  关于脚本中提到的jbchroot.c 在这里可以复制保存并上传到/tmp目录下!
  http://my.safaribooksonline.com/book/programming/java/0596003188/jbchrootdotc/tomcat-app-c


  • #!/bin/bash -x
  • #used for create tomcat chroot
  • #myhat.blog.运维网.com
  • JAVA_HOME=/usr/local/jdk1.6

  • while true
  • do
  •     read -p "please input your chroot directory :"  CHROOT
  •     read -p "please input tomcat direcotry :" TOM_PATH
  •     if [ "$CHROOT" = "" ];then
  •         echo "Your must input chroot directory"
  •         exit 1
  •     else
  •             test -e $CHROOT || mkdir $CHROOT
  •         if [ "$TOM_PATH" = "" ];then
  •             echo "Your must input tomcat directory"
  •             exit 1
  •         else
  •             test -e $TOM_PATH || mkdir $TOM_PATH
  •         fi
  •     fi
  •     break
  • done
  •      
  •      
  • #mkdir base dir
  • mkdir -p $CHROOT/chroot/usr/local/sbin/
  • mkdir -p $CHROOT/chroot/{lib,lib64,etc,tmp,dev,usr,proc,bin}

  • cd $CHROOT/chroot/
  • chmod 755 etc dev usr  
  • chmod 1777 tmp
  • #copy base file
  • cp -af /etc/hosts etc/
  • cp -af /etc/resolv.conf etc/
  • cp -af /etc/nsswitch.conf etc/

  • #command file  
  • cp /bin/uname bin/
  • mkdir -p usr/bin/
  • mkdir -p usr/local/
  • cp -f /usr/bin/dirname usr/bin/
  • cp -f /usr/bin/tty usr/bin/
  • cp -f /bin/touch bin/
  • cp -f /bin/bash bin/
  • ln -s /bin/bash bin/sh
  • cp /usr/local/sbin/cronolog  usr/local/sbin
  • #make dir and copy libs
  • cp -rva $JAVA_HOME $CHROOT/chroot/$JAVA_HOME
  • cd /lib64
  • for i in libpthread.so.0 ld-linux-x86-64.so.2  libc.so.6  libdl.so.2 libm.so.6 libnsl.so.1 libnss_dns.so.2 libnss_files.so.2  libresolv.so.2 librt.so.1 libtermcap.so.2
  • do
  • cp -p  $i  $CHROOT/chroot/lib64
  • done

  • #make dev
  • mkdir -p $CHROOT/chroot/dev/pts
  • cd /dev
  • ./MAKEDEV -d $CHROOT/chroot/dev null random urandom zero loop* log console
  • cp -a MAKEDEV $CHROOT/chroot/dev
  • cp -a /dev/shm $CHROOT/chroot/dev
  • # make proc
  • mkdir -p $CHROOT/chroot/proc
  • mount -t proc proc $CHROOT/chroot/proc

  • # test
  • chroot $CHROOT/chroot  $JAVA_HOME/bin/java -version  && echo "tomcat chroot env is ok"

  • sleep 3
  • cp -r $TOM_PATH  $CHROOT/chroot/usr/local/
  • # create user
  • id tomcat || useradd -M -s /sbin/nologin tomcat
  • chown tomcat.tomcat -R $CHROOT/chroot/usr/local/tomcat6.0
  • chown 755  $CHROOT/chroot/usr/local/tomcat6.0
  • cd  $CHROOT/chroot/usr/local/tomcat6.0
  • chown -R tomcat logs/ temp/ work/ webapps/ conf/

  • gcc -O /tmp/jbchroot.c -o  /usr/local/bin/jbchroot
  • chmod 755  /usr/local/bin/jbchroot  
  • chown root.root /usr/local/bin/jbchroot  

  在这里有一个地方需要注意:就是挂载proc文件,有时候机器发生重启,如果直接启动会导致tomcat 启动失败,并且在启动过程中不会有任何提示。如果有重启系统,请记得挂载proc文件。
  在此写一个小脚本做备用:假定我使用的chroot目录为 /opt/chroot ,我的tomcat路径为/usr/local/tomcat6.0


  • #!/bin/bash  
  • case $1 in
  • start)
  •     mount | grep /opt/chroot
  •     if [ "$?" != "0" ];then
  •         mount -t proc proc /opt/chroot/proc
  •     fi
  •     sleep 3
  •         /usr/local/bin/jbchroot -U tomcat -- /opt/chroot/ /bin/bash /usr/local/tomcat6.0/bin/startup.sh  
  • ;;

  • stop)
  •     if [ "$?" = "0" ];then
  •         umount /opt/chroot/proc
  •     fi
  •     kill -9 `ps aux | grep java| grep -v grep | awk '{print $2}'`
  • ;;
  • *)
  •     echo "USAGE:  {start|stop}"
  • ;;
  • esac

  以上脚本均经过测试,修改后可以正常使用。


  • 使用以上脚本在建立完chroot环境后,运行很正常,但是面临另外一个问题:
  • a、tomcat 的输出日志里面有中文,会乱码;里面项目日志也同样会乱码!
  • 具体方法:修改tomcat配置
  • # vim /opt/chroot/usr/local/tomcat6.0/bin/catalina.sh  
  • JAVA_OPTS="-Xms1536m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
  • JAVA_OPTS="$JAVA_OPTS -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN"
  • export JAVA_OPTS;
  • //解决了catalina.out里面的中文乱码

  • 如果在项目里的中文乱码:
  • # cat /opt/chroot/usr/local/tomcat6.0/webapps/ccc/WEB-INF/classes/log4j.properties  
  • log4j.appender.ROLLING_FILE.encoding=UTF-8

  # ps aux |grep java
tomcat    6581 17.6 22.0 2392632 668824 pts/2  Sl   09:15   2:33 /usr/local/jdk1.6/bin/java -Djava.util.logging.config.file=/usr/local/tomcat6.0/conf/logging.properties -Xms1536m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat6.0/endorsed -classpath /usr/local/tomcat6.0/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat6.0 -Dcatalina.home=/usr/local/tomcat6.0 -Djava.io.tmpdir=/usr/local/tomcat6.0/temp org.apache.catalina.startup.Bootstrap start


附件:http://down.运维网.com/data/2362007


运维网声明 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-641373-1-1.html 上篇帖子: 为tomcat6批量生成安全证书 下篇帖子: Redhat5.2 安装jdk6和tomcat7
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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