tomcat-7.sh 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # http://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. Install_tomcat-7()
  11. {
  12. cd $oneinstack_dir/src
  13. . /etc/profile
  14. src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_7_version/apache-tomcat-$tomcat_7_version.tar.gz && Download_src
  15. src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_7_version/catalina-jmx-remote.jar && Download_src
  16. id -u $run_user >/dev/null 2>&1
  17. [ $? -ne 0 ] && useradd -M -s /bin/bash $run_user || { [ -z "`grep ^$run_user /etc/passwd | grep '/bin/bash'`" ] && usermod -s /bin/bash $run_user; }
  18. tar xzf apache-tomcat-$tomcat_7_version.tar.gz
  19. [ ! -d "$tomcat_install_dir" ] && mkdir -p $tomcat_install_dir
  20. /bin/cp -R apache-tomcat-$tomcat_7_version/* $tomcat_install_dir
  21. if [ -e "$tomcat_install_dir/conf/server.xml" ];then
  22. /bin/cp catalina-jmx-remote.jar $tomcat_install_dir/lib
  23. cd $tomcat_install_dir/lib
  24. [ ! -d "$tomcat_install_dir/lib/catalina" ] && mkdir $tomcat_install_dir/lib/catalina
  25. cd $tomcat_install_dir/lib/catalina
  26. jar xf ../catalina.jar
  27. sed -i 's@^server.info=.*@server.info=Tomcat@' org/apache/catalina/util/ServerInfo.properties
  28. sed -i 's@^server.number=.*@server.number=7@' org/apache/catalina/util/ServerInfo.properties
  29. sed -i "s@^server.built=.*@server.built=`date`@" org/apache/catalina/util/ServerInfo.properties
  30. jar cf ../catalina.jar ./*
  31. cd ../../bin
  32. rm -rf $tomcat_install_dir/lib/catalina
  33. OS_CentOS='yum -y install apr apr-devel'
  34. OS_Debian_Ubuntu='apt-get -y install libapr1-dev libaprutil1-dev'
  35. OS_command
  36. tar xzf tomcat-native.tar.gz
  37. cd tomcat-native-*-src/jni/native/
  38. rm -rf /usr/local/apr
  39. ./configure --with-apr=/usr/bin/apr-1-config
  40. make && make install
  41. if [ -d "/usr/local/apr/lib" ];then
  42. [ $Mem -le 768 ] && Xms_Mem=`expr $Mem / 3` || Xms_Mem=256
  43. cat > $tomcat_install_dir/bin/setenv.sh << EOF
  44. JAVA_OPTS='-server -Xms${Xms_Mem}m -Xmx`expr $Mem / 2`m'
  45. CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
  46. # -Djava.rmi.server.hostname=$IPADDR
  47. # -Dcom.sun.management.jmxremote.password.file=\$CATALINA_BASE/conf/jmxremote.password
  48. # -Dcom.sun.management.jmxremote.access.file=\$CATALINA_BASE/conf/jmxremote.access
  49. # -Dcom.sun.management.jmxremote.ssl=false"
  50. EOF
  51. cd ../../../;rm -rf tomcat-native-*
  52. chmod +x $tomcat_install_dir/bin/*.sh
  53. /bin/mv $tomcat_install_dir/conf/server.xml{,_bk}
  54. cd $oneinstack_dir/src
  55. /bin/cp ../config/server.xml $tomcat_install_dir/conf
  56. sed -i "s@/usr/local/tomcat@$tomcat_install_dir@g" $tomcat_install_dir/conf/server.xml
  57. if [ ! -e "$nginx_install_dir/sbin/nginx" -a ! -e "$tengine_install_dir/sbin/nginx" -a ! -e "$apache_install_dir/conf/httpd.conf" ];then
  58. if [ "$OS" == 'CentOS' ];then
  59. if [ -z "`grep -w '8080' /etc/sysconfig/iptables`" ];then
  60. iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
  61. fi
  62. elif [ $OS == 'Debian' -o $OS == 'Ubuntu' ];then
  63. if [ -z "`grep -w '8080' /etc/iptables.up.rules`" ];then
  64. iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
  65. fi
  66. fi
  67. OS_CentOS='service iptables save'
  68. OS_Debian_Ubuntu='iptables-save > /etc/iptables.up.rules'
  69. OS_command
  70. fi
  71. [ ! -d "$tomcat_install_dir/conf/vhost" ] && mkdir $tomcat_install_dir/conf/vhost
  72. cat > $tomcat_install_dir/conf/vhost/localhost.xml << EOF
  73. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
  74. <Context path="" docBase="$wwwroot_dir/default" debug="0" reloadable="false" crossContext="true"/>
  75. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  76. prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  77. </Host>
  78. EOF
  79. # logrotate tomcat catalina.out
  80. cat > /etc/logrotate.d/tomcat << EOF
  81. $tomcat_install_dir/logs/catalina.out {
  82. daily
  83. rotate 5
  84. missingok
  85. dateext
  86. compress
  87. notifempty
  88. copytruncate
  89. }
  90. EOF
  91. [ -z "`grep '<user username="admin" password=' $tomcat_install_dir/conf/tomcat-users.xml`" ] && sed -i "s@^</tomcat-users>@<role rolename=\"admin-gui\"/>\n<role rolename=\"admin-script\"/>\n<role rolename=\"manager-gui\"/>\n<role rolename=\"manager-script\"/>\n<user username=\"admin\" password=\"`cat /dev/urandom | head -1 | md5sum | head -c 10`\" roles=\"admin-gui,admin-script,manager-gui,manager-script\"/>\n</tomcat-users>@" $tomcat_install_dir/conf/tomcat-users.xml
  92. cat > $tomcat_install_dir/conf/jmxremote.access << EOF
  93. monitorRole readonly
  94. controlRole readwrite \
  95. create javax.management.monitor.*,javax.management.timer.* \
  96. unregister
  97. EOF
  98. cat > $tomcat_install_dir/conf/jmxremote.password << EOF
  99. monitorRole `cat /dev/urandom | head -1 | md5sum | head -c 8`
  100. # controlRole R&D
  101. EOF
  102. chown -R $run_user.$run_user $tomcat_install_dir
  103. /bin/cp ../init.d/Tomcat-init /etc/init.d/tomcat
  104. sed -i "s@JAVA_HOME=.*@JAVA_HOME=$JAVA_HOME@" /etc/init.d/tomcat
  105. sed -i "s@^CATALINA_HOME=.*@CATALINA_HOME=$tomcat_install_dir@" /etc/init.d/tomcat
  106. sed -i "s@^TOMCAT_USER=.*@TOMCAT_USER=$run_user@" /etc/init.d/tomcat
  107. OS_CentOS='chkconfig --add tomcat \n
  108. chkconfig tomcat on'
  109. OS_Debian_Ubuntu='update-rc.d tomcat defaults'
  110. OS_command
  111. echo "${CSUCCESS}Tomcat install successfully! ${CEND}"
  112. fi
  113. else
  114. rm -rf $tomcat_install_dir
  115. echo "${CFAILURE}Tomcat install failed, Please contact the author! ${CEND}"
  116. kill -9 $$
  117. fi
  118. service tomcat start
  119. cd ..
  120. }