1. 程式人生 > >Linux基本服務Tomcat

Linux基本服務Tomcat

tomcat

  tomcat 是java的網站服務,不過現在java都是用開源jkd,即open-jdk

   裝包,先要裝好java的環境:
    yum –y install  java-1.8.0-openjdk java-1.8.0-openjdk-headless 
   裝好後可以檢視一些java版本資訊  java -version

   可以yum下載,不過建議可以使用升級的tomcat,在資源中有具體分享,進行tar解壓後把其放入/usr/local/下改名為tomcat即可

   這個目錄中的子目錄內容為:

bin/ 主程式目錄,裡面的startup.sh用於啟動tomcat
lib/ 庫檔案目錄
logs/ 日誌目錄  
temp/ 臨時目錄
work/ 自動編譯目錄jsp程式碼轉換servlet
conf/ 配置檔案目錄
webapps/ 頁面目錄

   不過tomcat的啟動有些bug,可能啟動程式顯示啟動成功,但netstat -ntlup檢視的時候發現tomcat的8005埠沒有開啟,這就有問題,其原因是生成隨機值速度慢,可以等1-3分鐘,如果還是不行就用下面的解決方案:

mv /dev/random  /dev/random.bak
ln -s /dev/urandom  /dev/random 

XML語言

  語法一:
    <模組名 模組配置1 模組配置2>
       模組配置3
       模組配置4
    </模組名>

  語法二:
    <模組名 模組配置1 模組配置2 />
  
  註釋的語法是:
   <!--
     被註釋的部分內容
   -->
   兩個語法都是一個意思,不過,兩個平級模組不能巢狀在一起,每個部分都要是一個整體


tomcat的配置檔案:
   tomcat/conf/server.xml,其中的語法格式和XML的一樣

<Server>
   <Service>
     <Connector port=8080 />        # 定義埠
     <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="金鑰對" keystorePass="密碼" clientAuth="false" sslProtocol="TLS" />
     <Engine name="Catalina" defaultHost="域名">        # 定義虛擬主機群
       <Host name="域名" appBase="為指" unpackWARS="true" autoDeploy="true">    # 定義虛擬主機
          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="位置"  prefix=" 日誌名" suffix=".txt"  pattern="%h %l %u %t &quot;%r&quot; %s %b" />        # 日誌檔案定義
          <Context path="/地址" docBase="base" reloadable="true"/>    # 對於客戶段訪問的地址的轉發
       </Host>
    </Engine>
  </Service>
</Server>

  模組體系結構:

server
service 提供服務
Connector port=埠

Engine

其中defaultHost定義下面的所有虛擬主機的預設訪問

  Host Host ……
虛擬主機1 虛擬主機2  
Valve  定義日誌資訊  
Context
針對客戶端地址的轉發1

Context

針對客戶端地址的轉發2

  內容解釋:(裡面所有的位置,如果寫相對路徑都是從tomcat所在的目錄開始,絕對路徑就是伺服器中的絕對路徑)
  1. Connector port=埠號
       這就完成埠監聽的定義。

  2. Engine name="Catalina" defaultHost="localhost"
       name是指虛擬主機群的名字; 
       defaultHost指的是當沒有客戶端要求的域名的時候預設哪個虛擬主機。

  3. Host name="localhost" appBase="a" unpackWARS="true" autoDeploy="true"
       name是指域名; 
       appBase是指網站根目錄。

  4. Valve className="org.apache.catalina.valves.AccessLogValve" directory="位置" prefix=" 日誌名" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b"
       className指記錄的是什麼模組的,預設寫的是登陸日誌;
       directory指日誌儲存的位置;
       prefix指日誌定義的名字; 
       suffix指日誌檔案的字尾名; 
       pattern指的記錄的內容。

   5. Context path="/地址" docBase="base" reloadable="true"
       path指客戶端輸入的目標地址,如果path設定的指為空,則代表輸入域名的根目錄進行修改;
       docBase指當用戶輸入目標地址後,前往哪個地址檢視網頁檔案。

   6. 安全的tomcat
    先生成金鑰對: keytool -genkeypair -alias 名字 -keyalg RSA(演算法,也可以是CSA) -keystore 金鑰對位置/金鑰名字
    再寫埠的資訊即可,上面有寫,就不闡釋了,在訪問的時候要著明埠號

  tomcat和其他http服務,其特殊的地方:
    1. tomcat的埠和虛擬主機無關,客戶訪問是通過任意一個埠就可以訪問所有的虛擬主機,如果作安全的web,只要是從安全web的埠進來訪問,所有的網站都是安全的web。

    2. tomcat的埠,一般的http是80,tomcat是8080;一般的安全的web是443,tomcat是8443,所以用瀏覽器訪問的時候,記得要在IP或者域名後面加上段口號

   如果需要用nginx代理tomcat的web伺服器,具體操作和nginx代理一個http伺服器一模一樣,只不過在upstream中寫server的時候,後面的埠改成8080或者8443即可。


Varnish 快取伺服器

  用於CDN的網站加速,一般的公司,用騰訊或者阿里的CDN,自己搭建代價比較大,具體搭建過程不難,需要一個yum不能安裝的包,所以具體的資源,在本blog會上傳,具體裝包過程
  裝包:yum -y install gcc readline-deve ncurses-devel pcre-devel python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm
  然後建立一個使用者:useradd -s /sbin/nologin varnish 
  對原始碼包進行原始碼編譯:解包,配置,編譯,安裝即可

  複製配置檔案,位置無所謂,都可以,在後面的啟動的時候會要求制定
  cp  etc/example.vcl   /usr/local/etc/default.vcl

  之後修改配置檔案 /usr/local/etc/default.vcl
  backend default {
     .host = "192.168.2.100";
     .port = "80";
   }   

  啟動服務:varnishd  -f /usr/local/etc/default.vcl
          –s malloc,128M    # 定義varnish使用記憶體作為快取,空間為128M
          –s file,/var/lib/varnish_storage.bin,1G    # 定義varnish使用檔案作為快取

  日誌
    varnishlog    # varnish日誌
    varnishncsa   # 訪問日誌
    varnishadm    # 互動式清除快取,再ban req.url ~ .*