网上有不少这方面的教程,但是那毕竟是别人的东西,还是自己写一写,思路更加清晰一些。
看标题,很明显,今天我不是要写什么代码来实现什么功能,而是配置程序运行环境,使得程序更高效。
高效在哪里?
我们知道,用户发出请求到服务器上,要经过tomcat处理,当然动态的请求当然要经过tomcat处理,然而一些静态的请求(例如图片,样式,js文件,等等)就没必要来麻烦tomcat了把,据悉tomcat能最大接受500个并发量,而nginx对于静态并发能接受10000个。什么概念?20倍!!!!
实现的原理
客户端发出请求,nginx开始检测是否是静态资源的请求,如果是直接处理即可,如果不是转发给后面的tomcat服务器进行处理,返回结果就行了,当然结合Freemaker框架可以更好的处理静态化。
需要的材料:
1.nginx软件 64位
2.tomcat7软件 64位
3.java jdk1.7 64位
4.redis_windows软件 64位
5.一个可执行的简单的web项目
6.64位的操作系统
nginx软件 链接:http://pan.baidu.com/s/1hqnU54C 密码:xtzt
tomcat7软件 链接:http://pan.baidu.com/s/1hqDCYiS 密码:cvd8
redis_windows软件 链接:http://pan.baidu.com/s/1ntxTHP3 密码:zj7d
一个可执行的简单的web项目 链接:http://pan.baidu.com/s/1ntzV9J7 密码:nfus
java jdk 1.7 64位自行下载配置环境即可
接下来就是无尽的配置!!!!
1.先配置nginx
下载的nginx解压即可,请保障计算机80端口未被占用!!,如果被占用需要配置其它端口.
在conf目录下找到 nginx.conf配置文件
listen 80;//如果被占用 配置成其它未被占用的端口即可
用下面的配置内容,替换nginx.conf全部内容即可
#Nginx 请求处理进程数量, 一般设定为CPU 数量的倍数
worker_processes 2;
events {
#每个进程最大连接数( 最大连接=连接数x 进程数)
worker_connections 2048;
}
http {
#文件扩展名与文件类型映射表( 包含mime.types 配置文件)
include mime.types;
#默认文件类型
default_type application/octet-stream;
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
#打开发送文件( 可下载)
sendfile on;
keepalive_timeout 65;
#打开gzip 压缩
gzip on;
#客户端上传文件大小控制
client_max_body_size 8m;
#负载均衡,weight指权重
upstream backend_tomcats {
server 127.0.0.1:8070 max_fails=3 weight=1 fail_timeout=60s;
server 127.0.0.1:8090 max_fails=3 weight=1 fail_timeout=60s;
}
#虚拟主机localhost,如果有域名server_name就写域名
server {
listen 80;
server_name localhost;
charset utf-8;
#动态内容交由tomcat 处理
location / {
proxy_pass http://backend_tomcats;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置Nginx 动静分离
location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
#静态内容存放的位置
root K:/www;
#expires 定义用户浏览器缓存的时间为3 天, 如果静态页面不常更新,
#可以设置更长, 这样可以节省带宽和缓解服务器的压力。
expires 3d;
#配置不带www跳转到带www的域名
if ($http_host !~ "^www.xxx.com$") {
rewrite ^(.*) http://www.xxx.com$1 permanent;
}
}
}
}
到此 nginx配置就结束了,然后就打开命令行窗口(如果你不知道什么是命令行窗口,就不用继续看了)
打开命令行窗口打开nginx所在的目录使用下面的命令运行nginx
start nginx.exe
打开计算机进程窗口,能看到 3个nginx.exe进程就证明配置正确了。
2.配置redis服务器(用来共享两个tomcat的session会话信息)
解压redis软件即可,看到如下目录
打开命令行窗口cd 到安装目录 使用如下命令启动redis即可。
redis-server.exe redis.conf
如果是redis高版本(可直接执行redis-server.exe来启动)
看到如下图显示的内容,表示配置成功
配置redis的主从同步机制
复制一下redis
将从redis的配置文件修改。
将# slaveof 《masterip》 《masterport》改为slaveof 127.0.0.1 6379(从机没有写入操作权限),保存退出。
可以用以下操作:检查主从配置是否生效
#启动master服务器,即启动6379端口redis服务器,操作如下:
C:\Users\lenovo>cd D:\dev\redis-2.4.5-win64
C:\Users\lenovo>d:
D:\dev\redis-2.4.5-win64>redis-server.exe redis.conf
#启动slave服务器,即启动6380端口redis服务器,操作如下:
C:\Users\lenovo>cd D:\dev\redis-2.4.5-win64
C:\Users\lenovo>d:
D:\dev\redis-2.4.5-win64>redis-server.exe redis6380.conf
#启动master客户器,操作如下:
C:\Users\lenovo>cd D:\dev\redis-2.4.5-win64
C:\Users\lenovo>d:
D:\dev\redis-2.4.5-win64>redis-cli.exe -h 127.0.0.1 -p 6379
redis 127.0.0.1:6379>
#启动slave客户器,操作如下:
C:\Users\lenovo>cd D:\dev\redis-2.4.5-win64
C:\Users\lenovo>d:
D:\dev\redis-2.4.5-win64>redis-cli.exe -h 127.0.0.1 -p 6380
redis 127.0.0.1:6379>
#清空Master当前数据库中的所有Keys。
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379>
#清空slave当前数据库中的所有Keys。
redis 127.0.0.1:6380> flushdb
OK
redis 127.0.0.1:6380>
#在Master中创建新的Keys作为测试数据。
redis 127.0.0.1:6379> set mykey hello
OK
redis 127.0.0.1:6379> set mykey2 world
OK
#查看Master中存在哪些Keys。
redis 127.0.0.1:6379> keys *
1) "mykey"
2) "mykey2"
#在Slave中查看所有的key。
redis 127.0.0.1:6380> keys *
1) "mykey"
2) "mykey2"
#在Master中删除其中一个测试Key,并查看删除后的结果。
redis 127.0.0.1:6379> del mykey2
(integer) 1
redis 127.0.0.1:6379> keys *
1) "mykey"
#在Slave中查看是否mykey2也已经在Slave中被删除。
redis 127.0.0.1:6380> keys *
1) "mykey"
3.配置2个tomcat
打开server.xml配置
- 修改 tomcat自身命令执行端口+访问端口+https访问端口.要保证2个tomcat的3中端口不能重复(即不能被占用)
配置 tomcat自身命令执行
Server port=”9005” shutdown=”SHUTDOWN”
配置请求端口
Connector port=”8090” protocol=”HTTP/1.1”
connectionTimeout=”20000”
redirectPort=”8443” />https访问端口
Connector port=”9009” protocol=”AJP/1.3” redirectPort=”8443” /
jar包下载 链接:http://pan.baidu.com/s/1eQv0ifo 密码:ol73
配置content.xml文件,告诉tomcat,redis共享会话在哪个服务器上。
<Context>
<WatchedResource>WEB-INF/web.xmlWatchedResource>
<Manager pathname="" />
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost" port="6379" database="0" maxInactiveInterval="60"/>
Context>
到此分别配置2个tomcat即可,使用命令行命令cd到tomcat bin所在目录输入如下代码运行tomcat即可
startup.bat
到此,全部配置结束,将项目war分别部署到2个tomcat的wabapps目录下面,直接用http://localhost/访问即可,如果能访问到tomcat默认页面。
那么恭喜你,配置成功了
如何有问题,请留言交流。