Tomcat配置域名、ip訪問及解決80端口沖突


 

1.先在tomcat下的conf下找到server.xml文件,用記事本打開后,首先對端口號進行修改,以前一直以為8080是默認的端口號,其實默認的端口號是80

<Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />端口搞定后,我們就可以直接配置域名訪問了

域名可以訪問ip無法訪問

在Tomcat下面配置域名(如:www.zjhuiwan.com)的時候,同時又不希望客戶通過我們網站的IP或者域名訪問到Tomcat默認的ROOT,配制方法如下:

2、在server.xml中將原有的<Engine name="Catalina" defaultHost="localhost">修改為<Engine name="Catalina" defaultHost="www.zjhuiwan.com">,defaultHost可以是IP或域名。

3、在server.xml中將原有的<Host name=“localhost“ appBase=“webapps“ ……>修改為<Host name=“www.zjhuiwan.com“ appBase=“webapps“……>,name后面可以填IP也可以是域名。

4、在<Host>中添加:<Context  path="/別名"  docBase="項目路徑/項目名" />(注意:自己輸,粘貼可能報錯(1字節的UTF-8序列的字節1無效))

<Context path="" docBase="Tea"/>(Tea項目在webapps下)

  其中docBase中的內容就是你希望的打開您的域名(www.zjhuiwan.com) 的時候映射到的目錄和默認的網頁(如:index.jsp)

並且可以同時配置多個<Host>,也可為同一個項目配置域名和IP訪問

5、最終我們要在本地訪問域名,因無域名解析服務器,所以在hosts上配,來模擬dns解析。還得修改相關HOST文件。。打開C:/WINDOWS/system32/drivers/etc/hosts

加上

127.0.0.1       www.zjhuiwan.com (注意:去掉“#”)

6、啟動Tomcat服務器,就可以直接敲入域名訪問你要訪問的地址了。

<Engine name="Catalina" defaultHost="www.zjhuiwan.cn">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="www.zjhuiwan.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="zjblog" debug="0" reloadable="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
                  pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<!--配置其他位置的靜態資源訪問-->
       <Context docBase="/usr/uploadFile/img" path="/blogImg" reloadable="true"/>         
      </Host>
    </Engine>

 

域名ip都可以訪問

只需要添加<Alias>www.zjhuiwan.cn</Alias> 即可。

    <Engine defaultHost="localhost" name="Catalina">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>

      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Alias>www.zjhuiwan.cn</Alias>
<Context docBase="zjblog" path="" reloadable="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
      </Host>
    </Engine>

 

 

 

有時候,80端口會被其他的進程占用,這時候就需要結束原來的進程或修改為其他端口號

I.Port80簡介:

        80端口是為HTTP(HyperText Transport Protocol)即超文本傳輸協議開放的,此為上網沖浪使用次數最多的協議,主要用於WWW(World Wide Web)即萬維網傳輸信息的協議。可以通過HTTP地址(即常說的“網址”)加“: 80”來訪問網站,因為瀏覽網頁服務默認的端口號都是80,因此只需輸入網址即可,不用輸入“: 80”了。

II.問題描述:

  80端口是一個最為頻繁訪問的端口號,甚為程序員開發更是經常遇到,比如我們最熟悉的數據庫系統服務進程就是默認訪問該端口的,還有比如Ngnix服務器默認端口也是80,所以當使用ngnix時發生端口號沖突了,應該怎么辦呢?以下見析。

III.原因:

  主要是與http協議有關的進程,進行網上訪問的系統級別的進程最頻繁占用80端口。比如Http.sys。它是http API的驅動組件,Http棧服務器。如果該端口被Http.sys占用,說明一些正在使用http.sys的應用程序在運行。

IV.解決辦法:

  1)使用命令查看哪個線程占用80端口

    win+R調出doc窗口,輸入cmd,繼續輸入"netstat -ano | more"或者“netstat -aon”

    2)尋找端口號

    找到“本地地址”欄為0.0.0.0:80的一行,在行的末尾有pid(進程id)為“4”。

  3)打開任務管理器(ctrl+alt+del)

    查看pid為4的線程,一般會顯示system占用;自然system是無法直接kill的。

    使用netsh命令查看端口使用狀態:”netsh http show servicetstate“。

    可以看到有兩個進程正在使用http功能。分別為 3164和3196。

    其中3196是sql server的report服務;進程3164對應的是一個svchost服務。

    兩者都可以關閉,數據庫服務的見下述解決方式。

   【擴展】:

    但是,50秒之后端口又會自動被占用了。【重新占用】

    從procmonitor中可以看到,每次關閉服務 BranchCache 每50s后就會繼續被svchost給調用起來。

    通過services表(服務表)中,我們發現這里的BranchCache 依賴了HTTP.SYS這個內核驅動。

    手動禁用即可。

  4)多版本解決方案:

    【分析】:

     1)SQL Server導致。其中很有可能是SQL Server Reporting Services (MSSQLSERVER),它是 SQL Server 的日志系統。

     2)IIS 服務。如果你電腦安裝了這個,很有可能它在運行着,那么它就占用着80端口。(打開IIS的方法:打開控制面板,點“卸載”,

      彈窗里左側有一個“打開或關閉windows功能”,再點開會有一個彈窗,找“Internet信息服務”,找到 Internet Information Services,

      點加號展開!因為直接點這個大項前面的小方塊,FTP服務器選項沒反應,我圖里的這幾個都勾上就行了。

      

      然后右下角點確定,IIS開啟成功了。

      關上:開始圖標那個win旁邊有個圈圈,點開輸入iis回車就能打開IIS管理器,右擊,點停止,IIS就算關上了。(win10系統)

     3)其他。(比如,迅雷等程序或者一些其他有上傳功能的軟件都會占用電腦的80端口)

    A.已知為數據庫進程占用,最常見:

    i.查看“任務管理器”進程欄或者詳細信息欄,有沒有數據庫有關的進程,直接kill就行。

    ii.打開【管理】->【服務和應用程序】->【服務】->找到“SQL Server Reporting Service",禁用或者手動皆可。

    以上可以解決基本上90%左右的占用問題。

    (一般來說,可能是近期安裝了數據庫或者升級了數據庫等軟件造成的,系統占用的端口一般都是微軟官方的產品占用的。)

    B.未知進程,即system進程(win7 system默認占用):

    i.禁用http.sys

    輸入net stop http,然后確認繼續操作,在輸入Sc config http start= disabled即可停止該項服務。

    ii.調出注冊表

    打開RegEdit:【開始】->【運行】->輸入【regedit】調出 ”注冊表“,

    找到”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTP“,

     找到一個DWORD值Start,將其改為0,重啟電腦,System進程將不會占用80端口。

    【備注】:殺掉進程的命令:taskkill /pid 4 /f ,其中 /f 表示強制關閉該進程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM