前言:Nginx是目前最流行的web服务器,用于反向代理和负载均衡,能够很好地应对大并发量状况。对于javaWeb程序,用的最多的服务器架构就是nginx+tomcat。这篇文章就以此为例,详细的讲解一下该服务器架构的搭建。
主要内容包括: 1.Linux下tomcat的安装配置
2.Nginx的安装
3.Nginx+tomcat的搭建与配置
系统:RedHat6-64位
一、tomcat的安装
·安装jdk
1.下载jdk的tar.gz包,放在/usr/local目录下
2.在该目录下新建java目录,进入java,解压缩jdk。
tar -zxvf /usr/local/jdk-7u79-linux-x64.gz
3.建立软连接(类似于windows中的快捷方式):
ln -s jdk1.7.0_79 /usr/local/jdk
4.配置环境变量,在/etc/profile文件中加入如下内容:
#jdk
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
5.使配置生效
# source /etc/profile
6.测试是否成功
#java-version
·安装tomcat
1.进入/usr/local目录,将下载的tar.gz包复制过来。
2. 新建/usr/local/tomcat目录,在该目录下解压缩tar.gz包。
# tar-zxvf /usr/local/apache-tomcat-7.0.65.tar.gz
3.生成软连接
ln -s apache-tomcat-7.0.65 /usr/local/tomcatServer
4.启动tomcat
进入bin目录,./startup.sh即可。
·安装多个tomcat
重新解压一份到新的目录,然后修改下server.xml文件的启动,关闭端口就可以了。
·部署项目到tomcat
把你的web项目打包成war包,然后放到tomcat安装目录下的webapps目录下,就可以了。
二、Nginx的安装
nginx依赖以下模块:
·gzip模块需要 zlib 库
·rewrite模块需要 pcre 库
·ssl 功能需要openssl库
所以需要先安装这三个软件。
2.1.安装pcre
1.获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本,放在/usr/local/目录下
2.cd /usr/local/
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure
make
make install
2.2 安装openssl
1. 获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
2.cd /usr/local/
tar -zxvf openssl-1.0.1c.tar.gz
./config
make
make install
2.3 安装zlib
1.获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
2.cd /usr/local/
tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8
./configure
make
make install
2.4 安装Nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
1.在http://nginx.org/en/download.html上可以获取当前最新的稳定版本。
2.cd /usr/local/
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx
make
make install
2.5 启动、停止、重载Nginx
确保系统的 80 端口没被其他程序占用,
/usr/local/nginx/sbin/nginx
检查是否启动成功:
netstat -ano|grep 80 有结果输入说明启动成功
打开浏览器访问此机器的 IP,或者输入http://localhost,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
重启:/usr/local/nginx/sbin/nginx –s reload
停止:/usr/local/nginx/sbin/nginx –s stop
三、Nginx配置以及集成tomcat做反向代理和负载均衡
我们只需要修改conf目录下的nginx.conf文件即可。
#运行用户,不用管
user nobody;
#启动进程,通常设置成和CPU数相同
worker_processes 1;
#全局错误日志及PID文件
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
#工作模式及连接数上限
events {
worker_connections 1024;#单个后台worker process进程的最大并发链接数
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#首先要开启两个tomcat服务,设置不同的端口。把两个tomcat下的首页设置成不同的内容,这样在测试时效果比较明显。
server localhost:8080 weight=4;
server localhost:8084 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重载Nginx,访问http://localhost,刷新多次页面,可看到nginx分发到不同tomcat的效果。