ubuntu 下 nginx-tomcat 整合

来源:互联网 发布:北京林业大学网络教育 编辑:程序博客网 时间:2024/06/07 07:21

Nginx 是一个很不错的高性能Web和反向代理服务器,官方数据可以支持高达50000个并发连接数的响应,支持epoll和kqueue,可以作为负载均衡器,邮件代理服务器并且安装配置比较简单,Bugs非常少,可以平滑对其进行升级.

首先下载 nginx-tomcat.tar.gz

wget  http://www.lsanotes.cn/linux/nginx-tomcat.tar.gz

cd nginx-tomcat里面有:

NginxInstall.sh Tomcat.sh Nginxd.sh Remove.sh 四个文件.

分别的作用为:

NginxInstall.sh   安装Nginx
Tomcat.sh         添加后端Tomcat的IP地址和所侦听的端口号
Nginxd.sh         管理Nginx的启动,停止,配置文件正确性检测
Remove.sh          删除所安装的Nginx

具体用法:

一.用具有root权限的用户执行sudo ./NginxInstall.sh 会有一系列的用户交互

sudo ./NginxInstall.sh

1)第一个提示用户输入Nginx的安装路径,如果选择默认可直接回车,默认路径为/usr/local/nginx
2)第二个提示用户输入Nginx的版本号,如果选择默认可直接回车,默认为0.8.28版本
3)第三个提示用户输入域名,如果选择默认可直接回车,默认域名www.lsanotes.cn
4)再接下来和用户交互的是按任意键继续安装,如不想安装可按Ctrl+c中止即可

二.用具有root权限的用户执行sudo ./Tomcat.sh 会有一系列的用户交互

sudo ./Tomcat.sh

1)第一个提示用户输入Nginx配置文件的路径,如果选择默认可直接回车,默认配置文件在/usr/local/nginx/conf/nginx.conf
2)第二个提示用户输入Tomcat所侦听的端口,用户根据自己实际填写,如果选择默认可直接回车,默认为8080端口.
3)第三个提示用户输入要添加Tomcat服务器的个数,如果选择默认可直接回车,默认为1个
4)再接下来和用户交互的是按任意键继续安装,如不想安装可按Ctrl+c中止即可

三.用具有root权限的用户执行Nginxd.sh 这个没有用户交互,默认Nginx的路径为:/usr/local/nginx,如果用户在安装Nginx的时候和这个路径不同请修改脚本即可

1)使用方法很简单看一下–help就会一目了解

sudo ./Nginxd.sh --help
Usage: ./Nginxd.sh (start|stop|restart|configtest)

start)                                启动
stop)                                 停止
restart)        重启
configtest)     检测配置文件的正确性

这里可能会报错
sudo ln -s /usr/lib/libpcre.so.3.12.1 /usr/lib/libpcre.so.0

2)用法(如:启动)

sudo ./Nginxd.sh start

四.用具有root权限的用户执行sudo ./Remove.sh 会产生一次用户交互

sudo ./Remove.sh

1)第一个提示用户输入Nginx的安装路径,如果选择默认可直接回车,默认路径为/usr/local/nginx
2)最后和用户交互的是按任意键确定删除继续

五.安装多个tomcat

注意修改server.xml的几个端口
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

六.优化tomcat最大并发数

                    <Connector port="8080" maxHttpHeaderSize="8192"

               maxThreads="2048" minSpareThreads="100" maxSpareThreads="200"

               enableLookups="false" redirectPort="8443" acceptCount="500"

               connectionTimeout="20000" disableUploadTimeout="true" />
七.做tomcat集群

    两台机器 172.23.254.2  172.23.254.3

    做集群需要修改的文件配置有三个地方

    1,修改conf/server.xml配置文件
        a. 找到Engine标签,加入属性 jvmRoute="worker1"

b.找到Cluster标签,去掉注释,同时修改tcpListenAddress为本机ip 172.23.254.2 (注:这一段Cluster必须放在hosts里面)

    

2,  修改应用的web.xml

修改web应用里面WEB-INF目录下的web.xml文件,加入标签

<distributable/>

直接加在</web-app>之前就可以了

这个是加入tomcat的session复制的,做tomcat集群必须需要这一步,否则用户的session就无法正常使用。

3,  开启防火墙

这两个tomcat之间必须开启防火墙信任。

分别启动两个tomcat,查看每一个tomcat是否都启动了8080端口以及4001端口

再用netstat –an 查看链接情况

tcp        0      0 172.23.254.2:43320      172.23.254.3:4001       ESTABLISHED

tcp        0      0 172.23.254.2:46544      172.23.254.3:4001       TIME_WAIT 

tcp        0      0 172.23.254.2:40118      172.23.254.3:4001       ESTABLISHED

tcp        0      0 172.23.254.2:4001       172.23.254.3:48804      ESTABLISHED

tcp        0      0 172.23.254.2:4001       172.23.254.3:34254      ESTABLISHED

如果两台机器的4001端口分别建立了连接,则说明集群配置成功,可以进行session复制。

八.修改/usr/local/nginx/conf/nginx.conf
参考
#用户组
user  www www;
#cpu个数,可以按照实际服务器来计算
worker_processes 2;

pid        logs/nginx.pi    d;

worker_rlimit_nofile 51200;

events
{
    use epoll;
    #连接数
    worker_connections 51200;
}

http
{
    include       mime.types;
    default_type  application/octet-stream;
    // 代理配置导入   
    include /usr/local/nginx/conf/proxy.conf;
    keepalive_timeout 120;

    tcp_nodelay on;
    #设定负载均衡列表
    upstream  www.chenjiping.com  {
server 192.168.1.34:8080;
server 192.168.1.34:8081;
    }

    #设定虚拟主机       
    server
    {
        listen  80;
        server_name  www.chenjiping.com;

        location / {
            proxy_redirect         off;
            proxy_pass         http://www.chenjiping.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

        log_format localhost:80_log  '$remote_addr - $remote_user [$time_local] $request '
            '"$status" $body_bytes_sent "$http_referer" '
            '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /usr/local/nginx/logs/localhost:80.log  localhost:80_log;
    }

}
主要在配置proxy与upstream

Upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器。

原创粉丝点击