目录
一、Tomcat简介
二、系统环境说明
1、关闭防火墙,selinux
2、安装JDK
3、安装Tomcat
三、Tomcat目录介绍
1、tomcat主目录介绍
2、webapps目录介绍
3、Tomcat配置介绍(conf)
4、Tomcat的管理
四、Tomcat 配置管理页面(了解)
server.xml配置文件
五、WEB站点部署
1、使用war包部署web站点
2、自定义默认网站目录
六、Tomcat多实例配置
1、复制程序文件
2、启动tomcat多实例
3、负载均衡配置
一、Tomcat简介
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
一个tomcat默认并发是200(官方),可以修改,但实际用的时候也就200并发左右。
使用方案:
建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序 方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例
Tomcat官网:
Tomcat好帮手---JDK
JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK下载面页:
Java Downloads | Oracle
安装时候选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致。
二、系统环境说明
1、关闭防火墙,selinux
systemctl stop firewalld && setenforce 0
2、安装JDK
上传jdk1.8到服务器。安装jdk
tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_191 /usr/local/jdk
echo "export PATH=/usr/local/jdk/bin:$PATH" >> /etc/profile
source /etc/profile
3、安装Tomcat
创建一个目录用于存放tomcat
mkdir /data/application -pcdwget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz --no-check-certificatetar xzf apache-tomcat-8.5.49.tar.gz -C /data/application/cd /data/application/mv apache-tomcat-8.5.49/ tomcat
设置环境变量
echo "export PATH=/data/application/tomcat/bin:$PATH" >> /etc/profilesource /etc/profile
三、Tomcat目录介绍
1、tomcat主目录介绍
2、webapps目录介绍
3、Tomcat配置介绍(conf)
4、Tomcat的管理
我们已经设置了环境变量所以直接 : startup.sh 启动 shutdown.sh 关闭
但是如果布置多个实例,就要去对应的tomcat包里面启动和关闭
注意:tomcat未启动的情况下使用shutdown脚本,会有大量的输出信息。
端口:
8005:这个端口负责监听关闭Tomcat的请求 shutdown:向以上端口发送的关闭服务器的命令字符串。
8009: 与其他http服务通信接口。(也可以没有)
8080: 建立http也就是客户端访问连接用。可以修改
查看日志:
tail -f /data/application/tomcat/logs/catalina.out
扩展:解决Tomcat启动慢的方法
Tomcat启动慢主要原因是生成随机数的时候卡住了,导致tomcat启动不了。
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务
四、Tomcat 配置管理页面(了解)
vim /usr/local/tomcat/conf/tomcat-users.xml
添加:(</tomcat-users> #一定要包含在这个标签"里面")
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="user" password="password" roles="tomcat,manager-gui,manager-script,admin-gui,admin-script"/>
vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
修改为如图所示:
server.xml配置文件
主配置文件 server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN"><!--port: 指定用于接受关闭命令的端口号shutdown: 指定关闭命令,可自定义,与启动脚本中的命令相对应--><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!--Listener: 用于配置全局监听器,此处为使用APR库进行性能优化的监听器className: 监听器类的完全限定名SSLEngine: 指定是否启用SSL引擎--><Listener className="org.apache.catalina.core.JasperListener" /><!--Listener: JSP引擎的监听器,用于编译和加载JSP页面className: 监听器类的完全限定名--><GlobalNamingResources><!--全局命名资源的配置部分,这里包含了一个可编辑的用户数据库的资源配置--><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /><!--Resource: 定义了一个资源name: 资源的名称,这里为"UserDatabase"auth: 认证方式,Container表示使用容器的身份验证type: 资源的类型,这里为"org.apache.catalina.UserDatabase"description: 资源的描述信息factory: 创建资源的工厂类的完全限定名pathname: 用户数据库文件的路径,这里为"conf/tomcat-users.xml"--></GlobalNamingResources><Service name="Catalina"><!--Service: Tomcat服务的配置name: 服务名称--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!--Connector: 配置用于接受HTTP请求的连接器port: 监听的端口号protocol: 使用的协议connectionTimeout: 连接超时时间redirectPort: 重定向端口,用于HTTPS连接--><!-- 其他连接器的配置 --><Engine name="Catalina" defaultHost="localhost"><!--Engine: Web容器引擎的配置name: 引擎名称defaultHost: 默认的主机名--><Realm className="org.apache.catalina.realm.LockOutRealm"><!--Realm: 安全领域的配置className: 安全领域实现类的完全限定名--><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/><!--嵌套的Realm配置,这里使用UserDatabaseRealm作为默认的安全领域resourceName: 资源名称,对应于conf/tomcat-users.xml文件中的UserDatabase--></Realm><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><!--Host: 虚拟主机的配置name: 主机名appBase: Web应用程序的基础路径unpackWARs: 是否自动解压部署的WAR文件autoDeploy: 是否自动部署Web应用程序--><!-- 其他虚拟主机的配置 --><Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /><!--Valve: 用于记录访问日志className: 完全限定名directory: 日志存储的目录prefix: 日志文件名的前缀suffix: 日志文件名的后缀pattern: 日志格式--></Host><!-- 其他虚拟主机的配置 --></Engine></Service>
</Server>
Connector主要参数说明
port:指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
protocol:连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的.
redirectPort:指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
maxThreads:接收最大请求的并发数
connectionTimeout 指定超时的时间数(以毫秒为单位)
host参数详解
host:表示一个虚拟主机
name:指定主机名
appBase:应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps",相对于CATALINA_HOME而言的,也可以写绝对路径。
unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
autoDeploy:在tomcat启动时,是否自动部署
五、WEB站点部署
上线的代码有两种方式:
第一种方式是直接将程序目录放在webapps目录下面,这种方式大家已经明白了,就不多说了。(放在webapps目录下的ROOT目录里面,浏览器访问ip:8080后面不需要指定目录,否则访问需要指定,例如:ip:8080/jenkins)
第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面。(这种会自动解压缩)
1、使用war包部署web站点
wget http://updates.jenkins-ci.org/download/war/2.129/jenkins.war
cd /data/application/tomcat #进入tomcat目录
cp -r webapps/ /opt/ #将原来的发布网站目录备份
cd webapps/
rm -rf * #清空发布网站里面的内容
cp /root/jenkins.war . #将war包拷贝到当前目录
关闭服务,手动解压 unzip jenkins.war 完了在启动服务
#这里配置上传大于50M的文件
/usr/local/tomcat/webapps/manager/WEB-INF/web.xml<!-- 50 MiB max -->
2、自定义默认网站目录
修改默认发布目录:
mkdir /data/application/webapp #创建发布目录
vim /data/application/tomcat/conf/server.xml
将原来的:
改为:
然后重启服务(先关闭,再启动),把war包拷贝到新的发布目录,它会自动解压缩
六、Tomcat多实例配置
多实例(多进程):同一个程序启动多次,分为两种情况:
第一种:一台机器跑多个站点;
第二种:一个机器跑一个站点多个实例,配合负载均衡
1、复制程序文件
cd /data/application/
cp -r tomcat/ tomcat_2#修改端口,以启动多实例。多实例之间端口不能一致sed -i 's#8005#8012#;s#8080#8082#' tomcat_2/conf/server.xmlecho 8081 >> tomcat/webapps/ROOT/index.jsp
echo 8082 >> tomcat_2/webapps/ROOT/index.jsp
2、启动tomcat多实例
去各自tomcat里面启动
3、负载均衡配置
下载一个nginx
upstream testweb {server 192.168.50.114:8081 weight=1 max_fails=1 fail_timeout=2s;server 192.168.50.114:8082 weight=1 max_fails=1 fail_timeout=2s;
}server {listen 80;server_name localhost;access_log /var/log/nginx/proxy.access.log main;location / {proxy_pass http://testweb;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}
配置完检查语法,然后开启,直接浏览器访问ip,无需指定端口