收拾好心情,裝備上tomcat,搭乘nginx,出發之一: Tomcat

        初創公司,爲了節約成本,以及對於今後發展之路的不確定,通常都會選購雲服務來部署和開發項目。騰訊和阿里都有自己的雲服務。提供包括雲主機、數據庫、redis、圖片視頻、cdn、短信等等。有的時候,不變的是技術,變的是業務,以及日漸積累的思維方式。

        當老闆自信滿滿的帶着idea,帶着願景,懷揣着一打打的現金,意氣風發的講述着自己的牛逼往事,自己那點創業的衝動被誘導出來。人生便走入了一段不同。

        項目立項,從技術角度講,除了IDE和語言,nginx和tomcat是可以拋開具體業務去搞的,有一定技術和運維要求的通用功能。 所以在此對這塊進行詳述。

      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        首先記錄如何配置與配置Tomcat

        可以說tomcat就是我的大學同學。從那時一起相識,從未離開過。甚至比最親的大學同學都親。然而線上環境的莊嚴,使得我們對tomcat並不會侷限與簡單的啓動、配置8080端口。

        入正題。 tomcat配置需要注意的有如下幾個方面。

        1. 前戲

        a. 爲了安全,我們要的安裝配置不要再root下直接操作。建立一個新用戶

        [root@VM_140_6_centos ~]# useradd -g root -d /home/solar solar               (刪除用戶userdel solar  刪除用戶組 groupdel solar   查看用戶組 groups solar)
        [root@VM_140_6_centos ~]# passwd solar         輸入密碼。並記住。
        [root@VM_140_6_centos ~]# vim /etc/sudoers
        solar ALL=(ALL) ALL
        強制保存退出 wq!

        b. 安裝JDK
        [solar@VM_140_6_centos ~]$ cd /data/
        [solar@VM_140_6_centos data]$ sudo mkdir soft
        [solar@VM_140_6_centos data]$ sudo chown solar soft
        [solar@VM_140_6_centos data]$ cd soft/
        [solar@VM_140_6_centos data]$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.rpm 
        [solar@VM_140_6_centos data]$ sudo rpm -ivh jdk-8u60-linux-x64.rpm
        [solar@VM_140_6_centos data]$ java -version

        2. 安裝與配置自啓動服務

        a. 下載安裝很簡單。 

        [solar@VM_140_6_centos soft]$cd /data/soft     
        [solar@VM_140_6_centos soft]$ wget http://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.65/bin/apache-tomcat-7.0.65.tar.gz
        [solar@VM_140_6_centos soft]$ tar -zxvf apache-tomcat-7.0.65.tar.gz 
        [solar@VM_140_6_centos soft]$ mv apache-tomcat-7.0.65 tomcat
        [solar@VM_140_6_centos tomcat]$ vim conf/server.xml

        b. tomcat 開機自啓動
        [solar@VM_140_6_centos tomcat]$ cd bin/
        [solar@VM_140_6_centos bin]$ tar zxvf commons-daemon-native.tar.gz
        [solar@VM_140_6_centos bin]$ cd commons-daemon-1.0.15-native-src/unix/
        [solar@VM_140_6_centos unix]$ ./configure --with-java=/usr/java/jdk1.8.0_60
        sudo yum -y install gcc
        [solar@VM_140_6_centos unix]$ make
        [solar@VM_140_6_centos unix]$ cp jsvc ../../
        [solar@VM_140_6_centos unix]$ cd ..
        [solar@VM_140_6_centos commons-daemon-1.0.15-native-src]$ cd ..
        [solar@VM_140_6_centos bin]$ vim daemon.sh 

        [solar@VM_140_6_centos bin]$ sudo cp daemon.sh /etc/rc.d/init.d/tomcatd
        [solar@VM_140_6_centos bin]$ cd /etc/rc.d/init.d/
        [solar@VM_140_6_centos bin]$ sudo chmod +x tomcatd
        [solar@VM_140_6_centos init.d]$ sudo chkconfig --add tomcatd
        [solar@VM_140_6_centos init.d]$ sudo chkconfig --level 2345 tomcatd on
        [solar@VM_140_6_centos logs]$ service tomcatd start
        日誌中文亂碼 sudo vim /etc/profile 添加這兩個  重啓服務器
        export LC_ALL="zh_CN.UTF-8"
        export LANG="zh_CN.UTF-8" 

        3. tomcat日誌分隔

        catalina-daemon.out日誌文件不會自動分隔,想了下,用linux的crontab來做吧

        [root@VM_140_6_centos tomcat]# cd /etc/cron.daily/
        [root@VM_140_6_centos tomcat]# vim tomcat-log.cron
        #!/bin/bash
        thedate=`date --rfc-3339=date`
        predate=`date +%Y-%m-%d --date="-7 day"`

        rmfile="/data/soft/tomcat/logs/catalina-daemon.${predate}.out"
        outfile="/data/soft/tomcat/logs/catalina-daemon.out"
        if [ -f ${rmfile} ];then
            rm -f ${rmfile}
        fi

        if [ -f ${outfile} ];then
           cp ${outfile} /data/soft//tomcat/logs/catalina-daemon.${thedate}.out
           echo "" > ${outfile}
        fi

        exit 0
        [root@VM_140_6_centos tomcat]# chmod 700 tomcat-log.cron

        4. tomcat server.xml配置

        <!-- UTF-8編碼 --> 
        <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000" 
               acceptCount="3000" redirectPort="8443" 
               URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
        <!-- 項目路徑 -->
        <Host name="localhost" appBase="/data/apps" unpackWARs="true" autoDeploy="true">
        <!-- 只允許內網ip10開頭的主機(客戶端)訪問,禁止外網直接訪問 -->
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="10.*.*.*" deny=""/>
        <!-- Access日誌格式 -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />
        </Host>

        5. JAVA_OPTS參數配置

        用來配置JVM相關的運行參數的變量。添加或修改bin/catalina.sh中的JAVA_OPTS屬性值

        JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -verbose:gc -Xloggc:${CATALINA_HOME}/logs/gc.log`date +%Y-%m-%d-%H-%M` -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -noclassgc"

        參數說明:
       -server:一定要作爲第一個參數,在多個CPU時性能佳
       -Xms:初始Heap大小,使用的最小內存,cpu性能高時此值應設的大一些。JVM啓動時默認設置爲物理內存的1/64
       -Xmx:java heap最大值,使用的最大內存。JVM啓動時默認設置爲物理內存的1/4
       -XX:PermSize:設定內存的永久保存區域
       -XX:MaxPermSize:設定最大內存的永久保存區域
       -XX:MaxNewSize: JVM堆區域新生代內存的最大可分配大小(PermSize不屬於堆區)
       +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。
       -Xss:每個線程的Stack大小
       -verbose:gc 現實垃圾收集信息
       -Xloggc:gc.log 指定垃圾收集日誌文件
       -Xmn:young generation的heap大小,一般設置爲Xmx的3、4分之一
       -XX:+UseParNewGC :縮短minor收集的時間
       -XX:+UseConcMarkSweepGC :縮短major收集的時間
       提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。

        6. 添加tomcat用戶 主要給manager用。比如http://localhost:8080/manager/status查看內存使用情況,還有jenkins遠程發佈tomcat

        [solar@VM_140_6_centos tomcat]# vim conf/tomcat-users.xml 
        <role rolename="manager"/>
        <role rolename="manager-script"/>
        <role rolename="manager-gui"/>
        <role rolename="manager-jmx"/>
        <role rolename="manager-status"/>
        <user username="tomson" password="tomson" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章