這篇文章將介紹安裝和基本配置Tomcat 8在CentOS6Xhtml
Tomcat8實現jsp2.2和Servlet 3.0規範和大量的新功能。訪問管理器應用程序比起6x也有一個新的外觀和細粒度的角色java
在這篇文章中,咱們將安裝Tomcat8,新JDK8配置Tomcat做爲服務,建立一個啓動/中止腳本,以及(可選)配置Tomcat運行在非ROOT用戶。linux
咱們還將配置基本訪問Tomcat Manager和快速使用JAVA_OPTS
看看內存管理git
最後,咱們將看看在80端口上運行Tomcat以及一些策略。github
首先,咱們須要安裝Java開發工具包(JDK)8 Tomcat8要求JDK版本最低爲1.6。shell
你能夠在這裏下載最新的JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.htmlapache
咱們將安裝較新的jdk,jdk-8u25
bootstrap
個人操做系統是CentOS6.5_x64,這裏選擇是的:jdk-8u25-linux-x64.tar.gz 若是你是32位系統,請選擇jdk-8u25-linux-i586.tar.gzcentos
首先建立一個目錄/usr/java
:tomcat
[root@srv6 ~]# mkdir /usr/java
進入到/usr/java
[root@srv6 ~]# cd /usr/java [root@srv6 java ]#
下載合適的JDK並將其保存到/usr/java
目錄。 解壓jdk-8u25-linux-x64.tar.gz
到/usr/java
目錄,使用命令tar -xzf:
[root@srv6 java]# tar -xzf jdk-8u25-linux-x64.tar.gz
這裏會建立/usr/java/jdk1.8.0_25
,這個是JAVA_HOME
咱們如今能夠設置JAVA_HOME並將它加入環境變量
[root@srv6 java]# JAVA_HOME=/usr/java/jdk1.8.0_25 [root@srv6 java]# export JAVA_HOME [root@srv6 java]# PATH=$JAVA_HOME/bin:$PATH [root@srv6 java]# export PATH
將JAVA_HOME設置爲永久,咱們須要在~/.bash_profile
添加,也能夠配置/etc/profile
給全部用戶
JAVA_HOME=/usr/java/jdk1.8.0_25export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH
設置了~/.bash_profile
後退出從新登陸測試是否正確的設置了JAVA_HOME
[root@srv6 ~]# echo $JAVA_HOME /usr/java/jdk1.7.0_05
第二部:下載並解壓Tomcat8
將tomcat8安裝在/usr/share
下
切換到/usr/share
目錄:
[root@srv6 ~]# cd /usr/share [root@srv6 share ]#
下載tomcat8:http://mirror.tcpdiag.net/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz 並解壓到/usr/share
使用tar -xzf
解壓:
[root@srv6 share ]# tar -xzf apache-tomcat-8.0.23.tar.gz
這將建立一個目錄/usr/share/apache-tomcat-8.0.23.tar.gz
如今,咱們將看到如何運行Tomcat做爲服務和建立一個簡單的啓動/中止/啓動腳本,以及在引導啓動Tomcat。
切換到/etc/init.d
目錄建立一個tomcat的腳本:
[root@srv6 share]# cd /etc/init.d [root@srv6 init.d]# vi tomcat
下面是咱們使用的腳本:
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.8.0_25 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/apache-tomcat-8.0.23case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0
上面的腳本很是簡單,包含你須要的基本元素
正如你看到的,咱們只須要調用startup.sh
和shutdown.sh
,sh腳本位於tomcat的bin目錄
你能夠根據須要調整腳本
CATALINA_HOME是Tomcat的家目錄(/usr/share/apache-tomcat-8.0.23)
如今給腳本受權
[root@srv6 init.d]# chmod 755 tomcat
咱們使用chkconfig啓動tomcat
[root@srv6 init.d]# chkconfig --add tomcat [root@srv6 init.d]# chkconfig --level 234 tomcat on
驗證:
[root@srv6 init.d]# chkconfig --list tomcat tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
如今咱們來測試腳本!
啓動Tomcat:
[root@srv6 ~]# service tomcat start Using CATALINA_BASE: /usr/share/apache-tomcat-8.0.23 Using CATALINA_HOME: /usr/share/apache-tomcat-8.0.23 Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp Using JRE_HOME: /usr/java/jdk1.8.0_25 Using CLASSPATH: /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar Tomcat started.
中止Tomcat:
[root@srv6 ~]# service tomcat stop Using CATALINA_BASE: /usr/share/apache-tomcat-8.0.23 Using CATALINA_HOME: /usr/share/apache-tomcat-8.0.23 Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp Using JRE_HOME: /usr/java/jdk1.8.0_25 Using CLASSPATH: /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar
重啓Tomcat(必須先啓動):
[root@srv6 ~]# service tomcat restart Using CATALINA_BASE: /usr/share/apache-tomcat-8.0.23 Using CATALINA_HOME: /usr/share/apache-tomcat-8.0.23 Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp Using JRE_HOME: /usr/java/jdk1.8.0_25 Using CLASSPATH: /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar Using CATALINA_BASE: /usr/share/apache-tomcat-8.0.23 Using CATALINA_HOME: /usr/share/apache-tomcat-8.0.23 Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp Using JRE_HOME: /usr/java/jdk1.8.0_25 Using CLASSPATH: /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar Tomcat started.
咱們應該檢日誌查看是否有錯誤
[root@srv6 init.d]# tail -f /usr/share/apache-tomcat-8.0.23/logs/catalina.out
咱們如今能夠訪問Tomcat Manager頁面:
http://yourdomain.com:8080
或者 http://yourIPaddress:8080
能夠看到tomcat主頁
出於安全緣由,Tomcat manager沒有用戶或密碼,默認爲建立角色。在生產環境,最好是刪除管理器應用程序。
設置角色,用戶名和密碼,咱們須要配置tomcat/conf下面的tomcat-user.xml
文件
默認狀況下將tomcat-users.xml
中的元素是被註釋的
建立一個角色擁有以下權限:
manager-gui
manager-status
manager-jmx
manager-script
admin-gu
admin-script.
咱們能夠設置manager gui
的角色,例如以下
<tomcat-users> <role rolename="manager-gui"/> <user username="tomcat" password="secret" roles="manager-gui"/> </tomcat-users>
應該注意賦予多個角色,以避免不安全。
正確配置堆內存取決於不少因素,爲簡單起見,咱們將堆大小設置爲相同的值128MB 添加JAVA_OPTS內存參數在咱們的Catalina.sh
文件。 下面編輯Catalina.sh
文件設置堆大小
JAVA_OPTS="-Xms128m -Xmx128m"
我一般只是添加這個文件第二行:
#!/bin/sh JAVA_OPTS="-Xms128m -Xmx128m" # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at
在上面的配置中咱們使用ROOT用戶運行Tomcat,處於安全緣由,ROOT最好運行那些有必要的服務 固然沒有規定必須這麼作,但你最好謹慎點~
非ROOT用戶運行Tomcat,須要作到如下幾點:
建立tomcat組:
[root@srv6 ~]# groupadd tomcat
建立tomcat用戶並將他加入到組
[root@srv6 ~]# useradd -s /bin/bash -g tomcat tomcat
上面的寫法將tomcat用戶的家目錄建立在/home/tomcat
若是你想讓主目錄放在其餘位置,可使用-d參數
[root@srv6 ~]# useradd -g tomcat -d /usr/share/apache-tomcat-8.0.23/tomcat tomcat
這樣能夠將tomcat用戶的家目錄設置爲/usr/share/apache-tomcat-8.0.23/tomcat
將tomcat目錄的全部權給tomcat用戶
[root@srv6 ~]# chown -Rf tomcat.tomcat /usr/share/apache-tomcat-8.0.23/
調整tomcat的啓動腳本,在新腳本中添加tomcat用戶:
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.8.0_25 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/apache-tomcat-8.0.23/bin case $1 in start) /bin/su tomcat $CATALINA_HOME/startup.sh ;; stop) /bin/su tomcat $CATALINA_HOME/shutdown.sh ;; restart) /bin/su tomcat $CATALINA_HOME/shutdown.sh /bin/su tomcat $CATALINA_HOME/startup.sh ;; esac exit 0
運行下面的服務端口1024是給root之外的用戶,你能夠添加到你的ipables:
[root@srv6 ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 [root@srv6 ~]# iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080
重啓iptables
service iptables restart
在80端口上運行Tomcat,若是你有前面的Apache Tomcat,您可使用使用Apache Tomcat的mod_proxy以及apj connector映射到vhost
當Tomcat是獨立性能的改善,我仍然喜歡它前面的空間的緣由。
在您的Apache配置,確保KeepAlive設置是on
。 Apache調優,固然,自己是一個很大的話題……
實例1: VHOST with mod_proxy:
<VirtualHost *:80> ServerAdmin admin@yourdomain.com ServerName yourdomain.com ServerAlias www.yourdomain.com ProxyRequests Off ProxyPreserveHost On <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ErrorLog logs/yourdomain.com-error_log CustomLog logs/yourdomain.com-access_log common </VirtualHost>
實例 2: VHOST with ajp connector and mod_proxy:
<VirtualHost *:80> ServerAdmin admin@yourdomain.com ServerName yourdomain.com ServerAlias www.yourdomain.com ProxyRequests Off ProxyPreserveHost On <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ ErrorLog logs/yourdomain.com-error_log CustomLog logs/yourdomain.com-access_log common </VirtualHost>
vhost在這兩個例子,咱們"映射"到Tomcat的根目錄。
若是咱們但願映射到應用程序如yourdomain.com/myapp
,咱們能夠添加一些改寫以下所示。
這將重寫全部請求yourdomain.com
yourdomain.com/myapp
實例 3: VHOST with rewrite:
<VirtualHost *:80> ServerAdmin admin@yourdomain.com ServerName yourdomain.com ServerAlias www.yourdomain.com RewriteEngine On RewriteRule ^/$ myapp/ [R=301] ProxyRequests Off ProxyPreserveHost On <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ ErrorLog logs/yourdomain.com-error_log CustomLog logs/yourdomain.com-access_log common </VirtualHost>
英文原文:http://davidghedini.blogspot.com/2011/02/install-tomcat-7-on-centos-rhel.html
附上我寫的安裝腳本:
https://github.com/biezhi/shell/blob/master/install_jdk