1. 程式人生 > >Tomcat 安裝及其單機多例項部署

Tomcat 安裝及其單機多例項部署

Tomcat 是最流行的 Java 應用伺服器(2017年市場份額64%)。本文以最新的 Apache Tomcat 7.0.90(Tomcat7 的最新版本) 為例,總結了 CentOS 下 Tomcat 伺服器的安裝和必要配置,並演示了 Tomcat 單機多例項的部署方法。

作者:王克鋒
出處:https://kefeng.wang/2016/12/26/tomcat-installation/
版權:自由轉載-非商用-非衍生-保持署名,轉載請標明作者和出處。

1.Java 應用伺服器市場份額

2 安裝 Tomcat

選擇 Tomcat7 的原因:

  • Tomcat9: 首個 beta 版本剛剛釋出(2017-11-15),不穩定;
  • Tomcat8.5: 不支援第三方元件 redis sessions manager;
  • Tomcat8.0: 支援 redis session manager,但官方宣告即將結束支援(2018年6月30日);
  • Tomcat7.0: 支援 redis session manager,且無結束支援的宣告。

2.1 下載與安裝(9M)

## https://tomcat.apache.org/download-70.cgi
## http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90-windows-x64.zip
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz sudo tar -zxf apache-tomcat-7.0.90.tar.gz -C /opt

2.2 使用者配置

## sudo vim /etc/profile ## 所有使用者有效
export CATALINA_HOME=/opt/apache-tomcat-7.0.90 ## bin,lib
export CATALINA_BASE=/opt/apache-tomcat-7.0.90 ## conf,logs,webapps,work,temp
export PATH=$PATH:$CATALINA_HOME/bin alias slg='sudo tail -f $CATALINA_BASE/logs/catalina.out'

2.3 配置 Tomcat

## sudo vim $CATALINA_BASE/conf/logging.properties ## 日誌配置

1catalina.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
2localhost.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
3manager.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
4host-manager.org.apache.juli.AsyncFileHandler.formatter = org.apache.juli.OneLineFormatter

# java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter ## 遮蔽
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tT,%1$tL  %4$s  [%3$s] - %5$s%6$s%n
sudo vim $CATALINA_BASE/conf/tomcat-users.xml ## 使用者
# sudo vim $CATALINA_BASE/conf/server.xml ## 伺服器【修改埠為 80/443】
sudo sed -i 's/8080/80/g' $CATALINA_BASE/conf/server.xml
sudo sed -i 's/8443/443/g' $CATALINA_BASE/conf/server.xml
sudo vim $CATALINA_BASE/conf/context.xml ## 站點
## sudo vim $CATALINA_BASE/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC -Xms512M -Xmx512M -Xmn256M -XX:SurvivorRatio=8 -XX:PermSize=64M -XX:MaxPermSize=128M"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log"
CATALINA_OUT=/dev/null

2.4 指令碼

sudo mkdir $CATALINA_HOME/bin/batch/
sudo mv $CATALINA_HOME/bin/*.bat $CATALINA_HOME/bin/batch/

sudo $CATALINA_HOME/bin/version.sh  ## 檢視系統版本、JDK、Tomcat 版本
sudo $CATALINA_HOME/bin/shutdown.sh ## 停止服務
sudo $CATALINA_HOME/bin/startup.sh  ## 啟動服務
## curl http://localhost/

2.5 日誌

sudo chmod 755 $CATALINA_BASE/logs
sudo chmod 644 $CATALINA_BASE/logs/*
sudo tail -f $CATALINA_BASE/logs/catalina.out
sudo tail -f $CATALINA_BASE/logs/catalina.`date +%Y-%m-%d`.log
sudo tail -f $CATALINA_BASE/logs/localhost.`date +%Y-%m-%d`.log
sudo tail -f $CATALINA_BASE/logs/localhost_access_log.`date +%Y-%m-%d`.txt

2.6 防火牆放行(直接對外服務時才需要)

### sudo vim /etc/sysconfig/iptables
### 重啟生效: sudo systemctl restart iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

2.7 配置為 systemd 服務

## sudo vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat
After=syslog.target network.target

[Service]
Type=forking
Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.90"
Environment="CATALINA_BASE=/opt/apache-tomcat-7.0.90"
ExecStart=/opt/apache-tomcat-7.0.90/bin/startup.sh
ExecStop=/opt/apache-tomcat-7.0.90/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable tomcat # 設定為開機自動啟動
sudo systemctl start tomcat # 立即啟動

2.8 部署 WEB 應用

cd $CATALINA_BASE/webapps
sudo rz -y ## site.war, 自動部署,無需重啟 tomcat
# sudo unzip -q site.zip -d $CATALINA_BASE/webapps/site
## curl http://localhost/site

3 Tomcat 單機多例項

與 MySQL 單機多例項類似,Tomcat 的單機多例項,也是指單個 Linux 的單個 Tomcat 安裝,啟動多個 Tomcat 服務程序,分別監聽不同的埠,對外提供不同的 HTTP 服務。

3.1 關鍵點

Tomcat 有兩個相關的環境變數:

  • CATALINA_HOME: 是 Tomcat 的安裝目錄,所有例項共用一份,相關子目錄是 bin|lib;
  • CATALINA_BASE: 是 Tomcat 的工作目錄,各個例項各自一份,相關子目錄是 conf|webapps|work|logs|temp;

對於單例項,只需設定 CATALINA_HOME(此時認為 CATALINA_BASE 取相同值),多例項才必須設定 CATALINA_BASE。

3.2 準備各例項

3.2.1 準備例項目錄

sudo systemctl stop tomcat
sudo systemctl disable tomcat
sudo cp -R $CATALINA_HOME $CATALINA_HOME.bak

sudo mkdir -p $CATALINA_HOME@{1,2}/{logs,temp,webapps,work}
sudo cp -R $CATALINA_HOME/{conf} $CATALINA_HOME@1/
sudo mv -f $CATALINA_HOME/{conf} $CATALINA_HOME@2/

3.2.2 替換各例項的監聽埠

  • HTTP 埠 8080 分別替換為 8081/8082
  • HTTPS 埠 8443 分別替換為 8031/8032
  • SHUTDOWN 埠 8005 分別替換為 8051/8052
  • AJP 埠 8009 分別替換為 8091/8092(也可以直接刪除該配置)
sudo sed -i 's/8080/8081/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8080/8082/g' $CATALINA_HOME@2/conf/server.xml

sudo sed -i 's/8443/8031/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8443/8032/g' $CATALINA_HOME@2/conf/server.xml

sudo sed -i 's/8005/8051/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8005/8052/g' $CATALINA_HOME@2/conf/server.xml

sudo sed -i 's/8009/8091/g' $CATALINA_HOME@1/conf/server.xml
sudo sed -i 's/8009/8092/g' $CATALINA_HOME@2/conf/server.xml

# sudo sed -i '/8009/d' $CATALINA_HOME@1/conf/server.xml
# sudo sed -i '/8009/d' $CATALINA_HOME@2/conf/server.xml

3.2.3 調整 JVM 引數

由於 Tomcat 例項數目增多,需要規劃 JVM 記憶體容量,否則可能因為指定的容量過大而啟動失敗。
sudo vim $CATALINA_HOME/bin/catalina.sh

3.3 配置各例項的服務

3.3.1 建立多例項 service 檔案

環境變數 JAVA_OPTS 與 CATALINA_OPTS 的區別:

  • JAVA_OPTS: 所有Java程式共用(包括Tomcat),Tomcat 執行 start/run/stop 時用到;
  • CATALINA_OPTS: 僅僅Tomcat用到,Tomcat 執行 start/run 時用到(不包括 stop);

所以,最佳方式是使用環境變數 CATALINA_OPTS,隻影響 Tomcat 的啟動選項。

## sudo vim /usr/lib/systemd/system/[email protected]
## 其中的 %i 將來會被替換為具體的 1/2
[Unit]
Description=Apache Tomcat
After=syslog.target network.target

[Service]
Type=forking
Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.90"
Environment="CATALINA_BASE=/opt/[email protected]%i"
ExecStart=/opt/apache-tomcat-7.0.90/bin/startup.sh
ExecStop=/opt/apache-tomcat-7.0.90/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

3.3.2 設定為開機自動執行

sudo systemctl daemon-reload
sudo systemctl enable [email protected]{1,2}
sudo systemctl start [email protected]{1,2}

## curl http://localhost:8081/check.htm
## curl http://localhost:8082/check.htm

## sudo systemctl stop [email protected]{1,2}
## sudo systemctl disable [email protected]{1,2}

3.4 實用指令碼

## vim ~/bin/tomcat-start.sh
sudo rm -rf $CATALINA_HOME*/logs/*
sudo systemctl start [email protected]{1,2}
## vim ~/bin/tomcat-stop.sh
sudo systemctl stop [email protected]{1,2}
## vim ~/bin/tomcat-restart.sh
sudo rm -rf $CATALINA_HOME*/logs/*
sudo systemctl restart [email protected]{1,2}
## vim ~/bin/tomcat-see.sh
sudo jps -lvm | grep Bootstrap | grep -v grep

相關推薦

Tomcat 安裝及其單機例項部署

Tomcat 是最流行的 Java 應用伺服器(2017年市場份額64%)。本文以最新的 Apache Tomcat 7.0.90(Tomcat7 的最新版本) 為例,總結了 CentOS 下 Tomcat 伺服器的安裝和必要配置,並演示了 Tomcat 單機多

單機例項tomcat 部署

簡介: 目錄結構 /bin - 啟動,停止及其它指令碼目錄/conf - 配置檔案目錄,容器的主配置檔案為server.xml/logs - 預設日誌目錄/webapps - 網站應用目錄 變數引用 CATALINA_HOME: Tomcat 安裝的根目錄,例如 /home/tomcat/apach

Tomcat例項部署及其原理(修訂版)

導讀: 昨天在跟群友做技術交流的時候,瞭解到,有很多大公司都是採用了高可用的,分散式的,例項沉餘1+臺。但是在小公司的同學也很多,他們反映並不是所有公司都有那樣的資源來供你排程。往往公司只會給你一臺機器,因為有些應用掛了公司也不會有損失的,我們往往一臺機器就可以搞定。 但是,我們也要為我們做出

redis安裝,修改配置檔案,例項部署 redis-server

redis 安裝 解壓: [[email protected] software]# tar -xvf redis-3.2.11.tar.gz 進入redis根目錄: [[email protected] software]# cd redis-3.2.11/ 編譯安裝: [[

linux作業系統安裝5.7.17MySQL以及單機例項

1、下載安裝包mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 2、tar xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local -------解壓 3、cd /usr/local -----

Docker 快速驗證 tomcat 單機例項方案

概述 主要講的是解決問題的思路。當然也附帶了儘可能詳細的步驟,感興趣的童鞋可以一步一步跟著來實踐一把。因為運維職業的緣故,基本上是把事故當故事來寫了,希望能夠喜歡。 緣起 至少10年了,沒在一線玩過 Tomcat 了,這次客戶現場就來了一場遭遇戰。雖然客戶說了他來搭建,但是專案進度不等人,還是自己動手吧

效能測試二十:Tomcat例項部署+日誌監控

一個tomcat效能有限,所以需要部署等多個tomcat 單例項部署與windows下類似,專案包放到webapp目錄下,啟動bin目錄下的startup.sh即可啟動命令:./startup.sh啟動並實時監控日誌:./start.sh & tail -f ../logs/catalina.out

tomcat單機例項

1、前言   首先要回答一個問題,為什麼要用單機多例項? 在不宕機的情況下,webapps裡面存在多個專案,可能由於其中一個專案過度使用記憶體或者其他不確定的因素使得tomcat掛了,那麼同一tomcat下的專案也會一同掛了;而使用不同的tomcat,同一臺伺服

MySQL 使用mysqld_multi部署單機例項詳細過程

序言:多例項?Why?隨著硬體層面的發展,linux系統多核已經是普通趨勢,而mysql是單程序多執行緒,所以先天上對多程序的利用不是很高,雖然5.6版本已經在這方面改進很多,但是也沒有達到100%,所以為了充分的利用系統資源,mysql有自己的補充,那就是可以部署多例項,一

zookeeper單機例項和分散式部署的步驟

介紹zookeeper單機多例項部署(實驗性質)以及生產環境的分散式部署 1. 準備工作:    1)需要linux環境,推薦用ubuntu的系統。學習的話使用oracle的virtual box安裝虛擬機器,網上找下安裝文件就可以裝好了,而生產環境一般都會裝好的。ub

nginx tomcat 單機例項網站

參考文章 http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/ 修改conf/server.xml    <Server port="8001" shutdown="SHUTDOWN">    &l

Tomcat單機例項配置

有時候需要在一個伺服器上部署多個Tomcat,通過不同的埠進行區分,比如,反向代理。但是不想簡單的通過複製Tomcat來實現,這樣既不方便以後的升級也不方便管理,那麼這時候就需要配置Tomcat的單機多例項了。 以下操作運行於Linux下。 Tomcat 下載 Tomcat的下載可以直接到Tomcat官方

CentOS6u9 tomcat 目錄拆分和例項以及普通使用者啟動等等個實驗

實驗環境搭建: 1° 參照《CentOS6實驗機模板搭建部署》克隆一臺實驗機並進行部署: hostname tomcat echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts echo "$(ifconfig eth0|grep

安裝mysql與例項安裝

安裝mysql(通用二進位制格式) 第一步:準備mysql的配置檔案(不再提供配置檔案模版) 首先需要從網路下載一個my.cnf檔案,放在/etc下 說明: 安裝位置:/usr/local/mysql 資料位置: /data/mysql/mysql3306/data 臨時檔案位置

同一臺機器啟動個程序完成例項部署redis

       單例項單執行緒的redis程序不足以高效率的使用cpu和記憶體資源,所以我們可以在同一臺機器上要啟動多個程序redis完成多例項部署,本次測試使用3個程序,可以通過更改配置檔案,指定配置檔案,將多例項部署到linux上。   &nb

CentOS7下yum安裝MariaDB配置例項

測試mysql 主從同步+Mycat,但是沒有更多的伺服器,聽說一臺伺服器可以搭建多個mysql yum安裝MariaDB: yum install mariadb mariadb-server 安裝完成後要進行手動開啟MySQL服務並初始化: service mar

MySQL5.7-例項部署

一、mysql多例項的原理 mysql多例項,簡單的說,就是在一臺伺服器上開啟多個不同的mysql服務埠(如3306,3307),執行多個mysql服務程序。這些服務程序通過不同的socket監聽不同的服務埠,來提供各自的服務。 這些mysql例項共用一套mysql安裝程

RabbitMQ單機例項配置

由於某些因素的限制,有時候你不得不在一臺機器上去搭建一個rabbitmq叢集,當然這種叢集只適合自己玩玩,驗證下結論,這個有點類似zookeeper的單機版。真實生成環境還是要配成多機叢集的。有關怎麼配置多機叢集的可以參考其他的資料,這裡主要論述如何在單機中配置

CentOS7下yum安裝mysql配置例項

最近想試試Mysql的主從複製功能“Mysql Replication”,但是苦於沒多臺電腦,於是考慮在Linux上配置多個Mysql例項做為測試環境。 環境:虛擬機器上的CentOS7 首先得在CentOS上安裝MySQL,下載原始碼編譯太麻煩,於是考慮用yum直接安裝。

centos二進位制安裝mysql8.11例項

首先準備安裝環境: yum install gcc gcc-c++ openssl openssl-devel libaio libaio-devel ncurses ncurses-deve yum -y install numactl 到官網下載壓縮檔案或者使用如下命令下載: w