博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat,varnish
阅读量:4228 次
发布时间:2019-05-26

本文共 7130 字,大约阅读时间需要 23 分钟。

前面小编写了[nginx]

1.单机静态nginx
2.单机动态nginx
3.集群、优化
4.集群[session会话信息共享]+memcached
PHP网页
java代码  !=  httpd,nginx 他们不匹配

httpd,nginx[静态,php]

nginx+php

 

Tomcat

Tomcat(免费) websphere,weblogic,jboss[java]要收费的

tomcat+jsp
java通用语言(非开源;开放技术,有限的让你用)
平台移植性
核心:JDK(java基础的类库)
大量页面脚本 .war包

JRE(简化版JDK)

不包含开发工具和编译排错其他工具

tomcat本身就是java写的,装之前要先装java

openjdk安卓通用

一、安装JDK

 java -version    #查看版本
 

防火墙和SELinux

]# firewall-cmd --set-default-zone=trusted

]# setenforce 0

apache-tomcat
安装tomcat,解包即用
[root@web1 ~]# tar -xf  apache-tomcat-8.0.30.tar.gz
[root@web1 ~]# mv apache-tomcat-8.0.30  /usr/local/tomcat
[root@web1 ~]# ls /usr/local/tomcat
bin/  #主程序目录
lib/  #库文件目录
logs/ #日志目录  
temp/ #临时目录
work/ #自动编译目录jsp代码转换servlet
conf/ #配置文件目录
webapps/ #页面目录

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh | shutdown.sh #开启 | 关闭服务 

firefox 192.168.2.100:8080

ss -nutlp | grep java

tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=7949,fd=46))

tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=7949,fd=67))
tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=7949,fd=51))

8080 8005 必须要起来

 cat  /dev/random   出来是一堆乱码

 strings  /dev/random   随机数
 strings  /dev/urandom   优质随机数 

提示:如果检查端口时,8005端口启动非常慢,可用使用下面的命令用urandom替换random(非必须操作)。取决于内存起的服务越多随机数越快

[root@web1 ~]# mv /dev/random  /dev/random.bak
[root@web1 ~]# ln -s /dev/urandom  /dev/random

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp  #写一个java测试页面
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>            #显示服务器当前时间
</center>
</body>
</html>

 

 

------------

重启

[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

firefox 192.168.2.100:8080/test.jsp

 

 

二、

配置文件格式

严格区分大小写

<server> 声明服务器

     <serveice> 对外提供服务

           <connector  port=8080 /> 端口

           <connector  port=8009 />

               <con...多个  以/结束>

              <engine   defaulthost=localtion> 用ip访问的默认虚拟主机,

                    <Host name=localhost>一个Host就算一个虚拟主机

                          </Host>

                     <Host name=www.a.com>

                          </Host>

                            Host....多个

                      </engine>

                     </serveice>

                   </server>

如果有war包就直接丢进去,自带解压功能,无需自己解压

 

[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml

… …

<Host name="www.a.com" appBase="a" unpackWARS="true"  autoDeploy="true">

#Hostname域名  appBase网页路径a/ROOT/index.html

</Host>

<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">

</Host>

<Host name="localhost" appBase="webapps" unpackWARS="true" autoDeploy="true">

</Host>

 

建相关的网页文件

[root@web1 ~]# mkdir -p  /usr/local/tomcat/{a,b}/ROOT

[root@web1 ~]# echo "AAA"   > /usr/local/tomcat/a/ROOT/index.html

[root@web1 ~]# echo "BBB" > /usr/local/tomcat/b/ROOT/index.html

 

 

[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

重启不会报任何错误

 

proxy新增本地域名解析192.168.2.100  www.a.com   www.b.aom

firefox www.a.com:8080

firefox www.b.com:8080   #访问端口要加8080

三、

1.使用docBase参数修改默认网站首页路径

2.www.a.com实现跳转

[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml

… …

<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">

<Context path="/test" docBase="/var/www/html/" />

#访问/test跳转到var/www/html,因为跳转/test,没有想访问他,无需创建

</Host>

 

<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">

<Context path="" docBase="base"/>

可以写多个,docBase默认网站首页路径

</Host>

… …

 

 

建相关文件、重启

mkdir /usr/local/tomcat/b/base

echo  "BASE"  > /usr/local/tomcat/b/base/index.html

[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

 

 

 

/usr/local/tomcat/logs/catalina.*(日期) 排错日志

/usr/local/tomcat/logs/localhost.*(日期) 访问日志

 

确认/var/www/html下有index.html网页文件

proxy上访问测试

firefox www.a.com:8080/test

firefox www.b.com:8080

 

 

http,nginx不可跨端口访问对方网站,每个虚拟主机对应关系(一对一)已写死

 

四、

TomcatSSL加密网站

加密只做一次,全绑定(全加密),默认端口8443

appBase,docBase,path决定最终访问页面

[root@web1 ~]# keytool -genkeypair  -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore                //提示输入密码为:123456

一般不自己做密钥,不安全,常规都是买的

//keytool(工具)

//-genkeypair     生成密钥对

//-alias tomcat     密钥别名 tomcat是随便写的

//-keyalg RSA     定义密钥算法为RSA算法

//-keystore         定义密钥文件存储在:/usr/local/tomcat/keystore

 

 

 

http+ssl=https

注释符号

<!--

...

-->

修改server.xml文件,创建支持加密连接的Connector

root@web1 ~]# vim /usr/local/tomcat/conf/server.xml

… …

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

keystoreFile="/usr/local/tomcat/keystore" keystorePass="密码" clientAuth="false" sslProtocol="TLS" />

//备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可,加在<>的中间任意地方,记得空格

 

 

[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

客户端访问测试

设置host文件

vim /etc/hosts  ---->添加 192.168.2.100 www.a.com  www.b.com

firefox https://www.a.com:8443  #添加例外,会警告不是安全链接

firefox https://www.b.com:8443

 

firefox http://www.b.com:8443  #连接被重置,8443为加密端口却使用http

firefox https://www.b.com:8080 #安全连接失败,该端口非加密

firefox https:192.168.2.100:8443 #访问默认网站

 

 

www.a.com  , www.b.com没有访问日志

 

内置变量%h  %l...

为每个域名设置不同日志文件

 

root@web1 ~]# vim /usr/local/tomcat/conf/server.xml

.. ..

<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">

#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix=" wwwacom" suffix=".log"

               pattern="%h %l %u %t "%r" %s %b" />

...

</Host>

<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix=" b_access" suffix=".txt"

               pattern="%h %l %u %t "%r" %s %b" />

.. ..

</Host>

 

[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

[root@web1 ~]# ls /usr/local/tomcat/logs/  #查看日志文件是否生成

 

Varnish

Varnish代理软件+缓存加速,比nginx多了缓存

nginx缓存加速功能默认没开启

[qq] 代理 -------->代理  ---------->腾讯

缺点:压力大,不公平(网速,跨距离)

 

 

www.tmooc.cn --> ip  分离解析     CDN内容分发网络(成本高)

 

使用Varnish加速后端Web服务

代理服务器可以将远程的Web服务器页面缓存在本地

远程Web服务器对客户端用户是透明的

利用缓存机制提高网站的响应速度

使用varnishadm命令管理缓存页面

使用varnishstat命令查看Varnish状态

 

确认web1上面有个html页面(安装一个httpd)

[root@proxy ~]# yum  -y install  gcc readline-devel  ncurses-devel pcre-devel  

[root@proxy ~]# cd /root/lnmp_soft/

yum -y install python-docutils-0.11-0.2.20130715svn7687.el7.noarch.rpm

  useradd -s /sbin/nologin  varnish

 tar -xf varnish-5.2.1.tar.gz

cd varnish-5.2.1

./configure

make && make install

 

varnish按两下Tab键能出东西说明安装成功

 

 

[root@proxy varnish-5.2.1]# cp  etc/example.vcl   /usr/local/etc/default.vcl

拷贝到哪或叫什么名字都无所谓,要记得住路径

 

问题:他本身没有页面(代理+缓存),要指一下后台服务器

 

 

[root@proxy ~]# vim  /usr/local/etc/default.vcl

backend default {

     .host = "192.168.2.100";

     .port = "80";

 }

 

 

 [root@proxy ~]# varnishd  -f /usr/local/etc/default.vcl

Error: Could not get socket :80: Address already in use

(-? gives usage)

80端口被占用了,varnish也用80 端口,

 

[root@client ~]# curl http://192.168.4.5

 

//varnishd –s malloc,128M        定义varnish使用内存作为缓存,空间为128M

//varnishd –s file,/var/lib/varnish_storage.bin,1G 定义varnish使用文件作为缓存,最大,1g

 

 

 原始网站  ---> 缓存 -------> 访问

AAA          AAA        AAA

BBB          AAA        AAA

不是实时更新缓存,等待2-3分钟,

缓存穿透:直接无视缓存访问原始网页,缓存没起作用,效果慢一些

访问日志

varnishlog  详细日志

varnishncsa  简洁日志

 

 

 

实时更新缓存

[root@proxy ~]# varnishadm  

#清空缓存数据,支持正则表达式 格式:varnish> ban req.url ~ .*

 

200        

-----------------------------

Varnish Cache CLI 1.0

-----------------------------

Linux,3.10.0-693.el7.x86_64,x86_64,-junix,-smalloc,-smalloc,-hcritbit

varnish-5.2.1 revision 67e562482

 

Type 'help' for command list.

Type 'quit' to close CLI session.

 

varnish> ban req.url ~ a.txt

200        

 

 

 

 

varnishstat 查看状态

 

---->

nginx  memcache tomcat(java) varnish

 

 

 

转载地址:http://ohiqi.baihongyu.com/

你可能感兴趣的文章
XML Security
查看>>
Rails Cookbook
查看>>
Dynamic HTML: The Definitive Reference (Dynamic Html) [ILLUSTRATED]
查看>>
Python (Visual QuickStart Guide)
查看>>
Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005
查看>>
RSA Security's Official Guide to Cryptography
查看>>
Artificial Intelligence for Games
查看>>
SQL Server 2005 Bible
查看>>
Distributed Systems Architecture: A Middleware Approach
查看>>
Beginning XML, 4th Edition
查看>>
Beginning JavaScript, 3rd Edition
查看>>
The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference [ILLUSTRATED]
查看>>
Fault-Tolerant Systems
查看>>
C Programming for Scientists and Engineers
查看>>
Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional
查看>>
Struts: The Complete Reference, 2nd Edition
查看>>
MCITP Developer: Microsoft SQL Server 2005 Database Solutions Design
查看>>
Text Entry Systems: Mobility, Accessibility, Universality
查看>>
CliffsTestPrep Cisco CCNA
查看>>
Pro PayPal E-Commerce
查看>>