本文共 7130 字,大约阅读时间需要 23 分钟。
前面小编写了[nginx]
1.单机静态nginx 2.单机动态nginx 3.集群、优化 4.集群[session会话信息共享]+memcached PHP网页 java代码 != httpd,nginx 他们不匹配httpd,nginx[静态,php]
nginx+php
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/tomcatbin/ #主程序目录 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 javatcp 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代理软件+缓存加速,比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/