自己怎么做网站优化,wordpress 收费课程,平面广告设计用什么软件,seo舆情优化linux NginxTomcat负载均衡、动静分离 1、Tomcat的基本介绍1.1Tomcat是什么#xff1f;1.2Tomcat的构成组件1.3Tomcat的核心功能1.4Tomcat请求过程 2、Tomcat部署2.1安装tomcat2.2优化tomcat启动速度2.4主要目录说明 3、Tomcat 虚拟主机配置3.1创建fsj和mws项目目录和文件3.2修… linux NginxTomcat负载均衡、动静分离 1、Tomcat的基本介绍1.1Tomcat是什么1.2Tomcat的构成组件1.3Tomcat的核心功能1.4Tomcat请求过程 2、Tomcat部署2.1安装tomcat2.2优化tomcat启动速度2.4主要目录说明 3、Tomcat 虚拟主机配置3.1创建fsj和mws项目目录和文件3.2修改 Tomcat 主配置文件 server.xml3.3HTTP 请求过程 4、Tomcat 优化4.1 Tomcat 配置文件参数优化 5、Tomcat多实例部署6、NginxTomcat负载均衡、动静分离6.1部署Nginx负载均衡器6.2 部署2台Tomcat 应用服务器6.3动静分离配置6.3.1 Tomcat1 server 配置6.3.2 Tomcat2 server 配置6.3.3 Nginx server 配置 6.4测试 1、Tomcat的基本介绍
1.1Tomcat是什么
tomcat 一款 java 开发的开源免费的 Web 应用服务程序 作用 1可以作为 Web 应用服务器处理静态 Web 页面 如 html 页面但性能一般 2还可以作为 Servlet/JSP 容器处理 java 语言开发的 jsp 动态页面应用程序这也是 tomcat 主要的应用场景
1.2Tomcat的构成组件
核心组件
web容器完成web服务器的功能servlet容器名字为 catalina用于处理 Servlet 代码JSP容器用于将 JSP 动态网页翻译成 Servlet 代码 tomcat’功能组件结构connector连接器暴露监听端口接收客户端发来的请求和返回响应消息给客户端container容器负责处理用户请求的业务逻辑。由4个子容器组成(engine、host、context、wrapper)子容器之间是父子关系 engine引擎管理多个虚拟主机一个container只有一个enginehost代表一个虚拟主机context管理web应用的路径wrapperservlet封装器负责处理业务逻辑 1.3Tomcat的核心功能 Tomcat 的核心功能有两个分别是负责接收和反馈外部请求的连接器 Connector和负责处理请求的容器 Container。 其中连接器和容器相辅相成一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。 Connector负责对外接收和响应请求。它是Tomcat与外界的交通枢纽监听端口接收外界请求并将请求处理后传递给容器做业务处理最后将容器处理后的结果响应给外界。 Container负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成用于管理和调用 Servlet 相关逻辑。 Service对外提供的 Web 服务 1.4Tomcat请求过程 (1)用户在浏览器中输入网址请求被发送到本机端口 8080被在那里监听的 Connector 获得 (2)Connector 把该请求交给它所在的 Service 的 EngineContainer来处理并等待 Engine 的回应 (3)请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用最后在 Servlet 中执行对应的业务逻辑、数据存储等。 (4)执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回最后返回给Connector并通过 Connector 返回给客户端。 2、Tomcat部署
2.1安装tomcat
systemctl disable firewalld --now
setenforce 0 //关闭防火墙java -version //查看一下版本//将源代码包置于/opt下 jdk-8u201-linux-x64.rpmrpm -ivh jdk-8u201-linux-x64.rpm
//安装jdkjava -version //再次查看版本此时版本并没有改变说明安装的包并没有生效需要配置环境变量才可以使其生效。 rpm -qpl jdk-8u201-linux-x64.rpm
//根据软件包名查找安装路径cd /usr/java/jdk1.8.0_201-amd64
//进入到刚才查询的目录中ls bin //查看一下bin包的内容/usr/java/jdk1.8.0_201-amd64/bin包主要放一些jdk运行的一些相关命令和工具 cd /usr/java/jdk1.8.0_201-amd64/jre/binjre包下可以看到有一个lib目录进入到此目录可以看到有很多的jar包这jar包主要是一些依赖包和依赖配置 接下来要将/usr/java/jdk1.8.0_201-amd64/下的 bin目录和cd /usr/java/jdk1.8.0_201-amd64/jre 下的bin目录都放入的环境变量中让系统可以直接识别 vim /etc/profile
//系统环境变量配置文件我们可以在这添加相关的设置也可以在/etc/profile.d/下添加一个以.sh结尾的配置文件cd /etc/profile.d/ //切换到子配置文件所在的目录vim java.sh
//创建一个java.sh文件
export JAVA_HOME/usr/java/jdk1.8.0_201-amd64
export JRE_HOME$JAVA_HOME/jre
export CLASSPATH.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH$JAVA_HOME/bin:$JRE_HOME/bin:$PATH注意 最左原则:linux查找可执行文件是根据PATH变量从左往右查找找到即停止。 #所以需要将安装版本的路径放在$PATH前面 CLASSPATH 是一个环境变量用于指定 Java 程序运行时的类路径。类路径是指计算机中存储 Java 类文件和库文件的路径。当Java 程序运行时虚拟机会搜索类路径上指定的路径以找到所需的类文件和库文件以便正确加载和执行程序。 #CLASSPATH和 PATH是必需的而JAVA_HOME和JRE_HOME是为了方便修改只需要修改JAVA_HOME source java.sh //立即生效
java -version //查看版本号vim hello.java //创建一个.java文件public class hello {public static void main (String[] args){System.out.println(hello world!);}
}
//编写的程序内容javac hello.java //转换为字节码文件
java hello //执行字节码文件cd /opt;ls //切换到opt目录下查看opt下的文件
rz -E //将tomcat的安装包导入到opt目录下
tar xf apache-tomcat-9.0.16.tar.gz //解压文件mv apache-tomcat-9.0.16 /usr/local/tomcat
//将tomcat解压后的文件移动到/usr/local/tomcat
cd /usr/local/tomcat;ls
//切换到该目录下,并查看该文件夹下的文件
cd ./bin;ls //切换到bin目录下并查看该目录下的文件注意 startup.sh 启动程序文件 catalina.sh启动程序文件 shutdown.sh关闭程序文件 ./startup.sh 8080 //启动tomcat
ss -natp |grep 8080 //查看tomcat是否启动成功浏览器输入ip和端口号查看tomcat是否安装成功vim /usr/lib/systemd/system/tomcat.service
//编写.service文件
[Unit]
Descriptiontomcat server
Wantsnetwork-online.target
Afternetwork.target
[Service]
Typeforking
EnvironmentJAVA_HOME/usr/java/jdk1.8.0_201-amd64
EnvironmentPATH$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
EnvironmentCLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ExecStart/usr/local/tomcat/bin/startup.sh
ExecStop/usr/local/tomcat/bin/shutdown.sh
Restarton-failure
[Install]
WantedBymulti-user.target./shutdown.sh //关闭tomcatsystemctl daemon-reload //重新读取配置文件
systemctl start tomcat //启动tomcat
systemctl status tomcat //查看tomcat状态2.2优化tomcat启动速度 第一次启动tomcat可能会发现 Tomcat 启动很慢默认情况下可能会需要几十秒可以修改jdk参数进行改。 vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security - -117行--修改
securerandom.sourcefile:/dev/random
修改为securerandom.sourcefile:/dev/urandom2.4主要目录说明 bin存放启动和关闭 Tomcat 的命令和执行文件如 catalina.sh、startup.sh、shutdown.shconf存放 Tomcat 服务器的各种配置文件如主配置文件 server.xml 和 应用默认的部署描述文件 web.xml 比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。 ① server.xml: Tomcat的主配置文件包含ServiceConnectorEngineRealmValve,Hosts主组件的相关配置信息; ② context.xml:所有host的默认配置信息; ③ tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息Tomcat自带的manager默认情况下会用到此文件在Tomcat中添加/删除用户为用户指|定角色等将通过编辑此文件实现; ④ web.xml:遵循Servlet规范标准的配置文件用于配置servlet并为所有的web应用程序提供包括MIME映射等默认配置信息;lib存放 Tomcat 运行需要的库文件的 jar 包一般不作任何改动logs存放 Tomcat 执行时的日志temp存放 Tomcat 运行时产生的文件webapps存放 Tomcat 默认的 Web 应用项目资源的目录workTomcat 的工作目录存放 Web 应用代码生成和编译文件 3、Tomcat 虚拟主机配置 很多时候公司会有多个项目需要运行一般不会是在一台服务器上运行多个 Tomcat 服务这样会消耗太多系统资源。此时就需要使用到Tomcat 虚拟主机。 3.1创建fsj和mws项目目录和文件
mkdir /usr/local/tomcat/webapps/fsj
mkdir /usr/local/tomcat/webapps/mws
echo fsj,fsj,fsj /usr/local/tomcat/webapps/fsj/index.jsp
echo mws,mws,mws /usr/local/tomcat/webapps/mws/index.jsp3.2修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
Host namewww.fsj.com appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalseContext docBase/usr/local/tomcat/webapps/fsj path reloadabletrue /
/HostHost namewww.mws.com appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalseContext docBase/usr/local/tomcat/webapps/mws path reloadabletrue /
/Hostname主机名 appBaseTomcat程序工作目录即存放web应用程序的目录相对路径为webapps绝对路径为/usr/local/tomcat/webapps unpackWARs在启用此webapps时是否对WAR格式的归档文件先进行展开默认为true autoDeploy在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy默认为true xmlValidation是否验证xml文件执行有效性检验的标志 x mlNamespaceAware是否启用xml命名空间设置该值与xmlValidation为true表示对web.xml文件执行有效性检验 Context docBase相应的Web应用程序的存放位置也可以使用相对路径起始路径为此Context所属Host中appBase定义的路径 path相对于Web服务器根路径而言的URI如果为空则表示为此webapp的根路径 / reloadable是否允许重新加载此context相关的Web应用程序的类默认为false 测试 在真机的本地hosts文件中加入IP和域名 浏览器访问域名 http://www.fsj.com:8080http://www.mws.com:80803.3HTTP 请求过程
1Connector 连接器监听的端口是 8080。由于请求的端口和监听的端口一致连接器接受了该请求。 2因为引擎的默认虚拟主机是 www.cyw.com并且虚拟主机的目录是webapps。所以请求找到了 tomcat/webapps 目录。 3访问的路径为根路径URI 为空即空是 Web 程序的应用名也就是 context。此时请求找到 /usr/local/tomcat/webapps/cyw 目录解析 index.jsp 并返回。
4、Tomcat 优化
omcat默认安装下的缺省配置并不适合生产环境它可能会频繁出现假死现象需要重启只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面分别为操作系统优化内核参数优化Tomcat配置文件参数优化Java虚拟机JVM调优。
4.1 Tomcat 配置文件参数优化
常用的优化相关参数如下: 【redirectPort】如果某连接器支持的协议是HTTP当接收客户端发来的HTTPS请求时则转发至此属性定义的 8443 端口。 【maxThreads】Tomcat使用线程来处理接收的每个请求这个值表示Tomcat可创建的最大的线程数即支持的最大并发连接数默认值是 200。 【minSpareThreads】最小空闲线程数Tomcat 启动时的初始化的线程数表示即使没有人使用也开这么多空线程等待默认值是10。 【maxSpareThreads】最大备用线程数一旦创建的线程超过这个值Tomcat就会关闭不再需要的socket线程。默认值是-1无限制。一般不需要指定。 【processorCache】进程缓冲器可以提升并发请求。默认值是200如果不做限制的话可以设置为-1一般采用maxThreads的值或者-1。 【URIEncoding】指定 Tomcat 容器的 URL 编码格式网站一般采用UTF-8作为默认编码。 【connnectionTimeout】网络连接超时单位毫秒设置为 0 表示永不超时这样设置有隐患的。通常默认 20000 毫秒就可以。 【enableLookups】是否反查域名以返回远程主机的主机名取值为true 或 false如果设置为 false则直接返回 IP 地址为了提高处理能力应设置为 false。 【disableUploadTimeout】上传时是否使用超时机制。应设置为 true。 【connectionUploadTimeout】上传超时时间毕竟文件上传可能需要消耗更多的时间这个根据你自己的业务需要自己调以使Servlet有较长的时间来完成它的执行需要与上一个参数一起配合使用才会生效。 【acceptCount】指定当所有可以使用的处理请求的线程数都被使用时可传入连接请求的最大队列长度超过这个数的请求将不予处理默认为100 个。 【maxKeepAliveRequests】指定一个长连接的最大请求数。默认长连接是打开的设置为1时代表关闭长连接为-1时代表请求数无限制 【compression】是否对响应的数据进行GZIP压缩off表示禁止压缩on表示允许压缩文本将被压缩、force表示所有情况下都进行压缩默认值为 off压缩数据后可以有效的减少页面的大小一般可以减小 1/3 左右节省带宽。 【compressionMinSize】表示压缩响应的最小值只有当响应报文大小大于这个值的时候才会对报文进行压缩如果开启了压缩功能默认值就是2048。 【compressableMimeType】压缩类型指定对哪些类型的文件进行数据压缩。 【noCompressionUserAgents“gozilla, traviata”】对于以下的浏览器不启用压缩 #如果已经进行了动静分离处理静态页面和图片等数据就不需做 Tomcat 处理也就不要在 Tomcat 中配置压缩了。 以上是一些常用的配置参数还有好多其它的参数设置还可以继续深入的优化HTTP Connector 与 AJP Connector 的参数属性值可以参考官方文档的详细说明进行学习 vim /usr/local/tomcat/conf/server.xml
......
Connector port8080 protocolHTTP/11.1
connectionTimeout20000
redirectPort8443
--71行--插入
minSpareThreads50
enableLookupsfalse
disableUploadTimeouttrue
acceptCount300
maxThreads500
processorCache500
URIEncodingUTF-8
maxKeepAliveRequests100
compressionon
compressionMinSize2048
compressableMimeTypetext/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png/5、Tomcat多实例部署
mkdir -p /usr/local/tomcat/tomcat1
//递归创建tomcal
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
//将解压过后的安装包移到tomcat1中
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
//再复制一个安装包命名为tomcat2配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh
//设置tomcat1和tomcat2的环境变量
#tomcat1
export CATALINA_HOME1/usr/local/tomcat/tomcat1
export CATALINA_BASE1/usr/local/tomcat/tomcat1
export TOMCAT_HOME1/usr/local/tomcat/tomcat1#tomcat2
export CATALINA_HOME2/usr/local/tomcat/tomcat2
export CATALINA_BASE2/usr/local/tomcat/tomcat2
export TOMCAT_HOME2/usr/local/tomcat/tomcat2修改 tomcat2 中的 server.xml 文件要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/server.xml
//修改tomcat2的配置文件Server port8006 shutdownSHUTDOWN #22行修改Server prot默认为8005 - 修改为8006
Connector port8081 protocolHTTP/1.1 #69行修改Connector portHTTP/1.1 默认为8080 - 修改为8081
Connector port8010 protocolAJP/1.3 redirectPort8443 / #116行修改Connector port AJP/1.3默认为8009 - 修改为80108080: HTTP 请求的默认端口用于 Web 应用程序和客户端之间的通信。8005: Shutdown 端口用于远程关闭 Tomcat 服务。8009: AJP 端口用于连接 Apache Web Server 和 Tomcat 服务器的通信。 以上三个端口号皆需要修改 修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件添加 tomcat 环境变量 vim /usr/local/tomcat/tomcat1/bin/startup.sh
//修改tomcat1开启配置文件的环境变量vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
//修改tomcat1关闭配置文件的环境变量vim /usr/local/tomcat/tomcat2/bin/startup.sh
//修改tomcat2的开机配置的环境变量vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
//修改tomcat2的关闭配置的环境变量启动各 tomcat 中的 /bin/startup.sh tomcat1 tomcat2
6、NginxTomcat负载均衡、动静分离
Nginx服务器192.168.190.200 tomcat1服务器192.168.190.101 tomcat2服务器192.168.190.1208080 192.168.190.1208081
6.1部署Nginx负载均衡器
systemctl stop firewalld
setenforce 0yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c makeuseradd -M -s /sbin/nologin nginxcd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/
./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-file-aio \ #启用文件修改支持
--with-http_stub_status_module \ #启用状态统计
--with-http_gzip_static_module \ #启用 gzip静态压缩
--with-http_flv_module \ #启用 flv模块提供对 flv 视频的伪流支持
--with-http_ssl_module #启用 SSL模块提供SSL加密功能--with-stream #启用 stream模块提供4层调度./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-streammake make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/vim /lib/systemd/system/nginx.service
[Unit]
Descriptionnginx
Afternetwork.target
[Service]
Typeforking
PIDFile/usr/local/nginx/logs/nginx.pid
ExecStart/usr/local/nginx/sbin/nginx
ExecrReload/bin/kill -s HUP $MAINPID
ExecrStop/bin/kill -s QUIT $MAINPID
PrivateTmptrue
[Install]
WantedBymulti-user.targetchmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service6.2 部署2台Tomcat 应用服务器
systemctl stop firewalld
setenforce 0tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/vim /etc/profile
export JAVA_HOME/usr/local/jdk1.8.0_91
export JRE_HOME${JAVA_HOME}/jre
export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATHsource /etc/profiletar zxvf apache-tomcat-8.5.16.tar.gzmv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.shnetstat -ntap | grep 80806.3动静分离配置
6.3.1 Tomcat1 server 配置
cd /usr/local/tomcat/tomcat/webapps
//切换到tomcat下的webapps目录
mkdir test //创建存放页面的文件夹
vim index.jsp //创建页面
填写以下内容
% page languagejava importjava.util.* pageEncodingUTF-8%
html
head
titleJSP test1 page/title #指定为 test1 页面
/head
body
% out.println(动态页面 1,http://www.test1.com);%
/body
/htmlvim /usr/local/tomcat/tomcat1/conf/server.xml
#由于主机名 name 配置都为 localhost需要删除前面的 HOST 配置/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
关闭并重启6.3.2 Tomcat2 server 配置
cd /usr/local/tomcat/tomcat1/webapps
//切换到tomcat1下的webapps目录
mkdir test //创建存放页面的文件夹
vim index.jsp //创建页面
写入以下内容
% page languagejava importjava.util.* pageEncodingUTF-8%
html
head
titleJSP test2 page/title #指定为 test2 页面
/head
body
% out.println(动态页面 2,http://www.test1.com);%
/body
/htmlvim /usr/local/tomcat/tomcat2/conf/server.xml
#删除前面的 HOST 配置
添加以下内容
Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue xmlValidationfalse xmlNamespaceAwarefalseContext docBase/usr/local/tomcat/tomcat2/webapps/test path reloadabletrue /
/Host/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
关闭并重启vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
% page languagejava importjava.util.* pageEncodingUTF-8%
htmlhead
titleJSP test3 page/title #指定为 test3 页面
/headbody
% out.println(动态页面 3,http://www.test3.com);%
/body
/html6.3.3 Nginx server 配置
准备静态页面和静态图片
echo htmlbodyh1静态页面/h1/body/html /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img //创建文件夹
rz -E //将内容拷进来vim /apps/nginx/conf/nginx.conf
......
http {
......#gzip on;//实现均衡负载
upstream fsj {server 192.168.190.101:8080 weight1;server 192.168.190.120:8080 weight1;server 192.168.190.120:8081 weight1;}server {listen 80;server_name www.fsj.com;//实现动静分离
location ~ .*\.jsp$ {proxy_pass http://fsj;}location ~* \.(jpg|png|gif|bmp)$ {root /apps/nginx/html/img;}6.4测试