大部分時候,我們的tomcat服務器都不是部署在本機,那么怎么樣不通過ftp/sftp方式來將war包部署到tomcat容器呢?tomcat有提供web頁面管理應用的功能。
進入tomcat默認頁面時有“server status”、“manager app”、“Host manager”三個選項如圖:
默認情況下,點擊會跳轉到403 Access Denied報錯頁面
(如果是tomcat7按下面第1個配置就行了,tomcat8需要配置1和2)
修改$TOMCAT_HOME/conf/tomcat-users.xml
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="admin,manager,manager-gui,admin-gui"/>
如無新建$TOMCAT_HOME/conf/Catalina/localhost/manager.xml 內容如下:
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </Context>
無須重啟tomcat即可生效。
點擊“select WAR file to upload”后面的“瀏覽”按鈕,選擇需要發布的war包后,點擊“deploy”,war即可發布成功。部署是否成功,需要關注頭部的“Message: ”內容。
但是如果該war包已經在服務器上部署,則需要在頁面中找到該應用,點擊“undeploy”先取消部署。
通過以上配置后,基本上在發布版本的時候不會有什么問題,增加這個配置的好處就是當持續集成的服務器與tomcat不在同一服務器時,可以通過配置,實現自動部署
在實際的項目過程中會發現war包的大小往往達到幾十上百M,這時發布會出現失敗,原因是tomcat默認最大只允許上傳50M的文件,這時候需要去修改webapps\manager\WEB-INF\web.xml文件
找到
<multipart-config> <!-- 50MB max --> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config>
一段(大概在53行),將max-file-size、max-request-size值增大即可。
修改配置文件$TOMCAT_HOME/webapps/manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|172\.\d+\.\d+\.\d+|192\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
如果要訪問host manager,還需要修改webapps/host-manager/META-INF/目錄下的context.xml文件,修改內容和上面一樣。
保存,然后重啟tomcat,重新訪問server status、manager app頁面,輸出上面設置的用戶名和密碼,即可訪問頁面。
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~
幾天有OMI的用戶反映,安裝OMI時有中文亂碼現象,我還說不可能。我們的程序在windows,linux都部署過無數次了,開發時都是UTF8編碼的,咋還會亂碼呢。結果看了半天也沒看出個啥,還是沒解決。
最近新安裝程序時,新下載了一個tomcat8.5的版本,一跑程序還真是html頁亂碼了,但JSP頁沒事。因為之前我們的程序都是跑在tomcat7,最高是tomcat8.0,沒試過更高的,高版本確實有問題,且控制臺中文也是亂碼。
一、嘗試了一些網友給的辦法,下面說一下解決方案:
1、tomcat\bin\catalina.bat 中添加,
set JAVA_OPTS=-Xms512m -Xms1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
我的添加位置如圖
?前面是正好順便設置了JVM的內存,解決問題的主要后面的部分。
2、修改tomcat\conf\server.xml,加入 URIEncoding="UTF-8"
加入如圖位置
?好象是第一步就可以了,保險起見第二步也加上吧 。
二、關于控制臺亂碼解決辦法:
修改tomcat\conf\logging.properties
#java.util.logging.ConsoleHandler.encoding=UTF-8(GBK)
將UTF-8改為GBK,或者把整行注掉
我是把相關編碼全注了
以上,如未解決問題可以加QQ群交流,群名:Kettle實戰。
述
開源軟件tomcat,目前幾乎已經是Java web開發的必備軟件了,目前有很多關于tomcat的書籍,但是里面介紹的大多是關于tomcat的配置,已經通過配置對tomcat進行一些跟應用業務功能的調優,作為一個Java開發人員,感覺如果僅僅只是了解一些配置,可能稍微少了一點什么,最好能夠深入到源代碼中進行學些和了解。
在Google上搜索了很多關于tomcat源碼環境搭建的文章,發現按照文章的步驟,幾乎都啟動不了,于是自己嘗試搭建,下面是搭建的方法。
基礎環境搭建
下載tomcat源代碼,我這里是通過svn
的方式下載的,svn下載地址 2.下載安裝maven工具,這里我就不多說了,安裝說明太多了,自己網上找。 3.IDE,我這里使用idea
生成maven工程
我的代碼本地目錄是:/Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/tomcat-8.5.5-sourcecode
。先在該目錄下生成一個pom.xml
文件,pom文件的內容為:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.tomcat</groupId>
<artifactId>Tomcat8.0</artifactId>
<name>Tomcat8.0</name>
<version>8.0</version>
<build>
<finalName>Tomcat8.0</finalName>
<sourceDirectory>java</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.5.1</version>
</dependency>
</dependencies></project>
在這里,我把java
和test
這兩個模塊到加載到pom工程里,你也可以選擇將test
工程移除,這樣可以省不少事情。
在idea中導入tomcat pom工程
將tomcat的pom工程導入到idea中,這個時候,你可以找到tomcat的啟動類org.apache.catalina.startup.Bootstrap
, 找到main
方法,嘗試啟動tomcat,這個時候肯定是報錯的,因為你還有很多后面的步驟沒有完成。
1.需要設置一個運行時的CATALINA_HOME
目錄,你需要下載一個tomcat軟件的壓縮包,由于我選擇的是tomcat-8.5.5的源代碼,下載對應的tomcat版本,tomcat下載地址
2.和tomcat-8.5.5-sourcecode
這個目錄的上層目錄上,建一個和該目錄平行的目錄catalina-home
,將tomcat軟件解壓后,在解壓的目錄下,將以下目錄拷貝到catalina-home
中:
bin
conf
lib
logs
temp
webapps
work
在本地的目錄結構是這樣的:
3.在idea的右上角找到run
這個按鈕,旁邊有Edit Configurations...
這個選項,點擊它。得到一個彈出框。
在
Man class:
中填入,org.apache.catalina.startup.Bootstrap
在
VM options:
中填入,你剛剛設置catalina-home
路徑,我的是:-Dcatalina.home="/Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/catalina-home"
Working directory
是默認的,不用管
Use class path of module
里選擇Tomcat8.0
,這個和你在pom.xml
中的配置有關
JRE
,我選擇的是1.8如下圖:
4.保存上面的配置,然后在右上角選擇run
,這個時候,可以啟動起來了,你可以在控制臺上看到下圖的啟動日志:
如果你將test
工程也包含在pom工程里,有可能你會啟動失敗,報錯的類是:TestCookieFilter.java
報里面的CookieFilter.java
類不存在,你可以選擇注釋,也可以選擇實現該filter,我是注釋掉的。
5.打開chrome
瀏覽器,輸入127.0.0.1:8080
,這時候,你能夠得到下面的頁面:
這個時候,說明你的tomcat環境配置已經成功了,接下來,開啟你的tomcat源碼調試之旅吧!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。