精华内容
下载资源
问答
  • 目录一、为什么用nginxtomcat搭建群集?二、部署环境三、部署过程3.1、Tomcat1 部署3.2、Tomcat2 部署3.3、nginx服务器部署3.4、验证 一、为什么用nginxtomcat搭建群集? 传统模型下,一个项目部署在一台...

    一、为什么用nginx和tomcat搭建群集?

    • 传统模型下,一个项目部署在一台tomcat上,这个时候,假如 tomcat 因为服务器资源不够,突然挂机了,出现单点故障,那么整个项目就无法使用,给客户造成的损失可想而知!!

    • Tomcat 不能单独应用于生产环境下,我们需要一套更可靠的解决方案来完善web站点架构。

    • Nginx 能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。

    • 目前很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理以及负载均衡器,来提升整个站点的负载并发能力。

    • 我们可以部署 Nginx + tomcat 服务群集,就可以避免单台服务如果挂机,依然能保证服务正常使用。

    • 当我们把项目 war 包部署到三台服务器上时,即使服务器A、服务器B都挂了,依然能够通过服务器C访问项目资源!

    二、部署环境

    服务类型IP地址软件包
    Nginx服务器10.0.0.10nginx-1.12.2.tar.gz
    Tomcat01服务器10.0.0.20jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz
    Tomcat02服务器10.0.0.30jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz
    客户端10.0.0.60
    • 部署拓扑图:
      在这里插入图片描述

    三、部署过程

    3.1、Tomcat1 部署

    #关闭防火墙
    [root@server2 ~]# systemctl stop firewalld.service 
    [root@server2 ~]# setenforce 0
    
    #解压jdk环境包
    [root@server2 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
    
    #添加JAVA环境变量
    [root@server2 ~]# vim /etc/profile
    #在末尾处添加以下代码
    export JAVA_HOME=/usr/local/jdk1.8.0_91   
    export JRE_HOME=${JAVA_HOME}/jre            
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
    export PATH=${JAVA_HOME}/bin:$PATH 
    
    [root@server2 ~]# source /etc/profile    #加载使环境变量生效
    
    #解压tomcat软件包
    [root@server2 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
    
    #把文件夹改名,方便使用
    [root@server2 ~]# cd /usr/local/
    [root@server2 local]# mv apache-tomcat-8.5.16/ tomcat
    
    #创建软链接,方便服务管理
    [root@server2 ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
    [root@server2 ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
    
    #在tomcat1中创建web站点
    [root@server2 local]# mkdir -p /web/webapp1
    [root@server2 local]# cd /web/webapp1/
    [root@server2 webapp1]# vim index.jsp
    #写入以下内容
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
        <head>
        <title>JSP test1 page</title>
        </head>
        <body>
        <% out.println("Welcome TEST01 Web");%>
        </body>
    </html>
    
    #修改Tomcat的server.xml文件,定义一个虚拟主机,并且将网站文件路径指向已经建立
    的/web/webapp1,在host段增加context段
    vim /usr/local/tomcat/conf/server.xml
    
    <Host nane="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true" >
    #添加以下行
    <Context docBase="/web/webapp1" path="" reloadable="false">
    </Context>
    [root@server2 ~]# startup.sh      #启动
    

    3.2、Tomcat2 部署

    #关闭防火墙
    [root@server3 ~]# systemctl stop firewalld.service 
    [root@server3 ~]# setenforce 0
    0
    
    #解压jdk环境包
    [root@server3 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
    
    #添加JAVA环境变量
    [root@server3 ~]# vim /etc/profile
    #在末尾处添加以下代码
    export JAVA_HOME=/usr/local/jdk1.8.0_91   
    export JRE_HOME=${JAVA_HOME}/jre            
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
    export PATH=${JAVA_HOME}/bin:$PATH 
    
    [root@server3 ~]# source /etc/profile    #加载使环境变量生效
    
    #解压tomcat软件包
    [root@server3 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
    
    #把文件夹改名,方便使用
    [root@server3 ~]# cd /usr/local/
    [root@server3 local]# mv apache-tomcat-8.5.16/ tomcat
    
    #创建软链接,方便服务管理
    [root@server3 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
    [root@server3 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
    
    #在tomcat2中创建web站点,此处站点路径要与tomcat1一致。
    [root@server3 local]# mkdir -p /web/webapp1
    [root@server3 local]# cd /web/webapp1
    
    #网页内容要设置不同的,便于验证部署群集的结果
    [root@server3 webapp1]# vim index.jsp
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
        <head>
        <title>JSP test2 page</title>
        </head>
        <body>
        <% out.println("Welcome TEST02 Web");%>
        </body>
    </html>
    
    #修改Tomcat的server.xml文件,定义一个虚拟主机,并且将网站文件路径指向已经建立
    的/web/webapp1,在host段增加context段
    [root@server3 webapp1]# vim /usr/local/tomcat/conf/server.xml
    
    <Host nane="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true" >
    #添加以下行
    <Context docBase="/web/webapp1" path="" reloadable="false">
    </Context>
    [root@server3 ~]# startup.sh     #启动
    

    3.3、nginx服务器部署

    #关闭防火墙
    [root@server1 ~]# systemctl stop firewalld.service 
    [root@server1 ~]# setenforce 0
    
    
    #安装依赖包
    [root@server1 ~]# yum -y install gcc gcc-c++ pcre-devel make zlib-devel
    
    #解压安装包到/opt/目录下。
    [root@server1 ~]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
    
    #创建nginx用户
    [root@server1 ~]# useradd -M -s /sbin/nologin nginx
    
    #配置编译安装
    [root@server1 ~]# cd /opt/nginx-1.12.2/
    ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module
    
    make && make install
    
    #创建软链接,优化服务
    [root@server1 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    
    #修改配置文件
    vim /usr/local/nginx/conf/nginx.conf
       #keepalive_timeout 0;
         keepalive_timeout 65;
       #gzip on;
       #使用upstream函数,配置tomcat服务器地址池
       upstream tomcatserver {
             server 10.0.0.20:8080 weight=1;
             server 10.0.0.30:8080 weight=1;
         }
    server{
          listen 80;
    
    location / {
              root html;
              index index.html index.htm;
              proxy_pass http://tomcatserver;
              #反向代理到设置的tomcat服务器地址池里
    }
    [root@server1 ~]# nginx -t
    
    #检测是否成功//
    
    [root@server1 ~]# nginx   #启动
    [root@server1 ~]# netstat -anpt | grep 80
    

    3.4、验证

    在浏览器输入nginx的IP地址,观察是否将请求代理到tomcat服务器,刷新页面可以哦看到tomcat服务器通过nginx调度实现轮流工作。在这里插入图片描述

    在这里插入图片描述

    展开全文
  • nginx+tomcat LVS群集

    千次阅读 2012-04-06 11:31:35
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。...LVS群集 nginx+tomcat 项目拓扑图: 一.安装nginx + tomcat 192.168.1.248和192.16...

     

     

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://fallenleaves.blog.51cto.com/1383716/530901

    LVS群集   nginx+tomcat

    项目拓扑图:

     

    一.安装nginx + tomcat           

     

    192.168.1.248和192.168.1.249服务器上如下配置:

     

    1.  JDK的安装

    将下载好的安装程序放到/soft目录下

    cd /soft

    chmod a+x jdk-6u23-linux-i586.bin

    ./jdk-6u23-linux-i586.bin

    mkdir -p /data/conf

    mv jdk1.6.0_23/ /data/conf/jdk

     

    删除系统中旧的版本

    rm -rf /usr/bin/java

    rm -rf /usr/bin/javac

     

    创建链接,设置新的版本

    ln -s /data/conf/jdk/bin/java /usr/bin/java

    ln -s /data/conf/jdk/bin/javac /usr/bin/javac

     

    查看新的版本信息

    java -version

    javac -version

    查看jdk版本是否是1.6.到此JDK已经安装完成

     

     

     

    2. Tomcat安装

    解压压缩文件

    cd /soft

    tar xzvf apache-tomcat-6.0.32.tar.gz

    mv apache-tomcat-6.0.32 /data/conf/tomcat

    cd /data/conf/tomcat/bin/ 

     

      

    添加用户

    useradd webuser -s /sbin/nologin

    chown -R webuser:webuser /data/

      

    tomcat优化选项

     

     (1)添加tomcat管理员

     

    # vi /usr/local/www/tomcat/conf/tomcat-users.xml

     在<tomcat-users>  </tomcat-users>中间添加

     <role rolename="manager"/>

     <user username="tomcat" password="li147258369" roles="manager"/>

     其中username="tomcat"为用户名password="li147258369"为密码

     

     (2)修改JVM

    JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn256m -Djava.awt.headless=true"

     

     (3)server.xml 参数修改

    <Connector port="8080" protocol="HTTP/1.1"  

     

                maxHttpHeaderSize="8192" useBodyEncodingForURI="true" 

                maxThreads="600"      最大连接数 

                redirectPort="8443" 

                enableLookups="false"  禁用DNS查询

                compression="on"  

                compressionMinSize="2048"    压缩,压缩大小

    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  

                connectionTimeout="20000" 

                disableUploadTimeout="true" 

           />

     

     

     

    设置环境目录 

    vi /etc/profile

     

    TOMCAT_HOME=/data/conf/tomcat

    JAVA_HOME=/data/conf/jdk

    JRE_HOME=/data/conf/jdk/jre

    export JAVA_HOME JRE_HOME  TOMCAT_HOME

     

     

    备份tomcat配置文件

    cd /data/conf/tomcat/conf

    mv server.xml server.xml.bak

     

    设置tomcat配置文件,配置虚拟主机

    vi server.xml

     

    在</Host>后面添加


    <Host name="www.benet.com" unpackWARs="true" autoDeploy="true" appBase="webapps">
                            <Context path="" docBase="/data/web/www.benet.com" />
                    </Host>

    <Host name="www.accp.com" unpackWARs="true" autoDeploy="true" appBase="webapps">
                            <Context path="" docBase="/data/web/www.accp.com" />
                    </Host>

    <Host name="www.apache.com" unpackWARs="true" autoDeploy="true" appBase="webapps">
                            <Context path="" docBase="/data/web/www.apache.com" />
                    </Host>

     

     启动tomcat

    /data/conf/tomcat/bin/startup.sh

     

    查看启动进程

    ps -ef |grep tomcat

     

     

    访问tomcat测试页,出现猫头网页,则安装成功!

    links http://localhost:8080

     

     

    3. 安装nginx

    解压压缩文件

    tar zxvf pcre-8.02.tar.gz

    cd pcre-8.02/

     

    编译安装

    ./configure

    make && make install

    tar zxvf nginx-0.8.50.tar.gz

     

    cd nginx-0.8.50/

     

    编译安装

    ./configure --prefix=/data/conf/nginx --with-http_stub_status_module

    make && make install

     

     

    配置nginx配置文件

    cd /data/conf/nginx

     

    备份nginx.conf配置文件

    mv nginx.conf nginx.conf.bak

     

     

    vi nginx.conf 

     

    user nobody nobody;

    worker_processes 4;

    pid /data/conf/nginx/logs/nginx.pid;

    worker_rlimit_nofile 51200;

    events

    {

    use epoll;

    worker_connections 51200;

    }

    http{

    include       mime.types;

    default_type application/octet-stream;

    server_names_hash_bucket_size 128;

    client_header_buffer_size 32k;

    large_client_header_buffers 4 32k;

    client_max_body_size 8m;

    sendfile on;

    tcp_nopush     on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;

    fastcgi_send_timeout 300;

    fastcgi_read_timeout 300;

    fastcgi_buffer_size 64k;

    fastcgi_buffers 4 64k;

    fastcgi_busy_buffers_size 128k;

    fastcgi_temp_file_write_size 128k;

    gzip on;

    gzip_min_length 1k;

    gzip_buffers     4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

    gzip_types       text/plain application/x-javascript text/css application/xml;

    gzip_vary on;

      

    upstream www

    {

    server 192.168.1.248:8080;

    server 192.168.1.249:8080;

    }

    server {

    listen 80;

    server_name www.benet.com;

    location / {

    root /data/web/www.benet.com ;

    index index.jsp index.htm index.html;

    proxy_redirect off;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://www;

    }

    access_log /data/logs/benet.com/www.benet.access.log;
    error_log /data/logs/benet.com/error-www.benet.com;
    }

     

    server {
    listen 80;
    server_name www.accp.com;
    location / {
    root /var/www ;
    index index.jsp index.htm index.html;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://www;
    }
    access_log /data/logs/accp.com/www.accp.access.log;
    error_log /data/logs/accp.com/error-www.accp.com;
    }

     

    server {
    listen 80;
    server_name www.apache.com;
    location / {
    root /data/web/www.apache.com ;
    index index.jsp index.htm index.html;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://www;
    }
    access_log /data/logs/apache.com/www.apache.access.log;
    error_log /data/logs/apache.com/error-www.apache.com;
    }

    }

     

     

    检测配置文件是否存在错误

    ./nginx -t

     

    启动nginx

     

     

     

    创建项目目录

    mkdir /data/web/www.benet.com

    mkdir /data/web/www.accp.com

    mkdir /data/web/www.apache.com

    mkdir -p /data/logs/benet.com

    mkdir -p /data/logs/accp.com

    mkdir -p /data/logs/apache.com

     

    建立测试网页

    echo "This is benet home page !!!" > /data/web/www.benet.com/index.html

    echo "This is accp home page !!! " > /data/web/www.accp.com/index.html

    echo "This is apache home page !!!" > /data/web/www.apache.com/index.html

     

    添加hosts记录

    echo "192.168.1.248 www.benet.com" >> /etc/hosts

    echo "192.168.1.248 www.accp.com" >> /etc/hosts

    echo "192.168.1.248 www.apache.com" >> /etc/hosts

     

    浏览测试网页,出现相应的网页,则配置完成。

    links http://www.benet.com

    links http://www.accp.com

    links http://www.apache.com

     

     

     

     

     

     

                                                                                2011年04月07日修改完成

     

     

     

    4.  sersync 同步配置,使得网站项目文件一致。

     

    在192.168.1.248服务器上安装rsync

    tar xzvf rsync-3.0.7.tar.gz

    cd rsync-3.0.7

    ./configure --prefix=/data/conf/rsync

    make && make install

    rpm -qa |grep rsync

    rpm -qf /usr/bin/rsync

    rpm -e rsync-2.6.8-3.1

    ln -s /data/conf/rsync/bin/rsync /usr/bin/rsync

     

    查看rsync版本

    rsync -version

     

     

    配置rsync配置文件

    vi rsyncd.conf

    port = 873

    max connections = 4

    pid file = /data/conf/rsync/rsync.pid

    lock file = /data/conf/rsync/rsync.lock

    log file = /data/conf/rsync/rsync.log

    [dataweb]

    path = /data/web

    auth users = aa

    secrets file = /data/conf/rsync/conf/rsync.passwd

    uid = webuser

    gid = webuser

    read only = no

     

    创建认证用户名和密码文件 

    vi /data/conf/rsync/conf/rsync.passwd

    aa:123456

     

    启动rsync守护进程

    rsync --daemon

     

     

     

     

     

     

     

    配置sersync配置文件

    vi confxml.xml

     

    修改为<localpath watch="/data/web">

                <remote ip="192.168.1.248" name="dataweb"/>

                <!--<remote ip="192.168.8.39" name="tongbu"/>-->

                <!--<remote ip="192.168.8.40" name="tongbu"/>-->

            </localpath>

            <rsync>

                <commonParams params="-artuz"/>

                <auth start="true" users="aa" passwordfile="/data/conf/rsync/conf/rsync.passwd"/>

                <userDefinedPort start="false" port="873"/><!-- port=874 -->

                <timeout start="true" time="100"/><!-- timeout=100 -->

                <ssh start="false"/>

     

     

    开启sersync守护进程

    ./sersync2 -d

     

    测试文件是否同步

    在192.168.1.249服务器上/data/web/目录下创建些文件

    在192.168.1.248服务器上/data/web/目录下看是否同步有相应的文件

     

     

     

     

     

     

    LVS群集配置

     

    1.客户端 就是真实服务器

     

    在192.168.1.248和249服务器环回接口上绑定 虚拟ip

     

    vi /data/conf/realserver 

    #!/bin/bash

    #description : start realserver

    VIP=192.168.1.100

    /etc/rc.d/init.d/functions

    case "$1" in

    start)

    echo " start LVS of REALServer"

    /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

    ;;

    stop)

    /sbin/ifconfig lo:0 down

    echo "close LVS Directorserver"

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

    ;;

    *)

    echo "Usage: $0 {start|stop}"

    exit 1

    esac

     

     

    开启虚拟IP

    cd /data/conf

    ./realserve start

     

    查看虚拟IP

    ip add  或者 ifconfig

     

     

    192.168.1.246 lvs主机------------192.168.1.247 lvs备份机

      

    1. 在1.246和247上安装 ipvsadm

    yum -y install ipvsadm

     

     

    2.             192.168.1.246 lvs主机安装keepalived

     

    安装keepalived

    cd /soft

    tar xzvf keepalived-1.1.19_.tar.gz

    ./configure --prefix=/data/conf/keepalived

    make

    make install

     

    创建keepalived目录

    mkdir -p /etc/keepalived

     

    创建keepalived.conf配置文件

      ! Configuration File for keepalived
    global_defs {
        notification_email {
              543302969@qq.com
        }
        notification_email_from 543302969@qq.com
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id LVS_DEVEL
    }
    # 20081013 written by :netseek
    # VIP1
    vrrp_instance VI_1 {
         state MASTER             #备份服务器上将MASTER改为BACKUP  
         interface eth0
         virtual_router_id 51
         priority 100   # 备份服务上将100改为99
         advert_int 1
         authentication {
             auth_type PASS
             auth_pass 1111
         }
         virtual_ipaddress {
             192.168.1.100           #(如果有多个VIP,继续换行填写.)
         }
    }
    virtual_server 192.168.1.100 80 {
         delay_loop 6                  #(每隔10秒查询realserver状态)
         lb_algo wrr                  #(lvs 算法)
         lb_kind DR                  #(Direct Route)
         persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
         inhibit_on_failure            #当web挂掉的时候,前面请求的用户,可以继续打开页面,但是后面的请求不会调度到挂掉的web上面。
         protocol TCP                #(用TCP协议检查realserver状态)
        

         real_server 192.168.1.248 80 {
             weight 3               #(权重)
             TCP_CHECK {
             connect_timeout 10       #(10秒无响应超时)
             nb_get_retry 3
             delay_before_retry 3
             }
         }
         real_server 192.168.1.249 80 {
             weight 1
             TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             }
          }

    启动keepalived

    cd /data/conf/keepalived/sbin

    ./keepalived -D

     

    查看keepalived进程,是否有3个进程

    ps -ef |grep keepalived

     

     

    查看ipvsadm

    ipvsadm -L -c

     

     

    LVS群集测试:

     

    设置hosts文件

    192.168.1.100  www.benet.com

    192.168.1.100 www.accp.com

    192.168.1.100 www.apache.com

     

    访问测试网页

    http://www.benet.com

     

    关闭LVS master主机,看是否还能访问测试网页不,如果能访问,则LVS配置成功了,若不行,则进行相应的排错啦.

     

    本文出自 “fallenleaves” 博客,请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/530901

     

     

     

     

    Apache,tomcat,nginx,apache+tomcat,nginx+tomcat自动化安装脚本

     

    #!/bin/bash

    #Auto Install Apache Tomcat Nginx apache+tomcat nginx+tomcat.

    #apache version: 2.2.17       download: http://httpd.apache.org/download.cgi#apache22

    #jdk    version: 1.6          download: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

    #tomcat version: 6.0.23       download: http://tomcat.apache.org/download-60.cgi

    #nginx  version: 0.8.54       download: http://nginx.org/en/download.html
     
    #执行这个自动化安装脚本需要把apache tomcat jdk nginx的安装包拷贝到/soft目录下.

    #apache安装在/opt/conf/apache目录下. nginx安装在/opt/conf/nginx目录下.

    #tomcat安装在/opt/conf/tomcat目录下. jdk安装在/opt/conf/jdk目录下.

    # 20110413 write: liweizhong   e-mail:lwz_benet@163.com  QQ:543302969  Version 1.1


    IN_SRC=/soft
    IN_DIR=/opt/conf

    echo "=================Check software development environment.================" 
    echo ""
    rpm -q  gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
    zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel > /dev/null

    if  [ "$?" != 0 ] ;
    then
    echo "Please check your need software"
    exit 0
    else
    echo "software is OK !! "
    fi

    if [[ ! -d $IN_DIR ]]
      then
      mkdir -p $IN_DIR
    fi


    function apache_ins {
    echo ""
    echo "===========================Apache installing============================="
    sleep 5
    #Auto apache


    echo "installing httpd..."

            cd $IN_SRC

            tar jxvf httpd-2.2.17.tar.bz2

            cd httpd-2.2.17

            ./configure --prefix=$IN_DIR/apache --with-mpm=worker --enable-rewrite --enable-deflate --disable-userdir --enable-so

            [ $? != 0 ] && exit

            make

            [ $? != 0 ] && exit

            make install

            [ $? != 0 ] && exit

            echo "Include conf/vhost.conf" >> $IN_DIR/apache/conf/httpd.conf

            sed -i "s/#ServerName/ServerName localhost/g" $IN_DIR/apache/conf/httpd.conf
    touch $IN_DIR/apache/conf/vhost.conf
    $IN_DIR/apache/bin/apachectl start
    echo "$IN_DIR/apache/bin/apachectl start" >> /etc/rc.local
    ${SERVICES}_ins
    sleep 2
    echo "==========================Auto Install  finished=========================="
    }

     


    function tomcat_ins {
    echo ""
    echo "===========================Tomcat installing============================="
    sleep 5
    #Auto Install JDK

    cd /soft
    chmod 700 jdk*
    ./jdk-6u23-linux-i586.bin
    mv jdk1.6.0_23/ /opt/conf/jdk
    rm -rf /usr/bin/java
    rm -rf /usr/bin/javac
    ln -s /opt/conf/jdk/bin/java /usr/bin/java
    ln -s /opt/conf/jdk/bin/javac /usr/bin/javac
    java -version

    sleep 3
    javac -version
    echo ""
    echo ""
    echo "====================Auto Install JDK Have finished======================"

    #Auto Install tomcat

    sleep 5
    cd /soft
    tar xzvf apache-tomcat-6.0.32.tar.gz
    mv apache-tomcat-6.0.32 /opt/conf/tomcat

    cat >> /etc/profile << EFF

    TOMCAT_HOME=/opt/conf/tomcat

    JAVA_HOME=/opt/conf/jdk
       
    JRE_HOME=/opt/conf/jdk/jre
       
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$TOMCAT_HOME/bin/

    export JAVA_HOME JRE_HOME  PATH TOMCAT_HOME

    EFF
    source /etc/profile

    sleep 3
    cd /opt/conf/tomcat/bin
    ./startup.sh
    echo ""
    echo ""
    echo "=================Already all installation is complete================="
    }


    function nginx_ins {
    echo ""
    echo "===========================Nginx installing==========================="
    sleep 5
    #Auto nginx

    echo "installing nginx..."

            cd $IN_SRC

            tar zxvf nginx-0.8.54.tar.gz

            cd nginx-0.8.54

            make_clean

            useradd www

            ./configure --user=www --group=www  --prefix=$IN_DIR/nginx --without-http_rewrite_module --with-http_stub_status_module --with-http_ssl_module 

            [ $? != 0 ] && exit

            make

            [ $? != 0 ] && exit

            make install

            [ $? != 0 ] && exit

           
    /opt/conf/nginx/sbin/nginx
    echo "$IN_DIR/nginx/sbin/nginx " >> /etc/rc.local
    ${SERVICES}_ins
    sleep 3
    echo "===============Auto Install finished================================="
    }


    echo "Slect install
          1. apache
          2. tomcat+jdk
          3. nginx
          4. apache+tomcat
          5. nginx+tomcat
          6. don't install is now
    "

    read -p "Please Input 1,2,3,4,5,6:" SERVER_ID
    if [[ $SERVER_ID == 5 ]]; then
       SERVICE="nginx"
       SERVICES="tomcat"
    elif [[ $SERVER_ID == 4 ]]; then
       SERVICE="apache"
       SERVICES="tomcat"
    elif [[ $SERVER_ID == 3 ]]; then
       SERVICE="nginx"
    elif [[ $SERVER_ID == 2 ]]; then
       SERVICE="tomcat"
    elif [[ $SERVER_ID == 1 ]]; then
       SERVICE="apache"
    else
    echo ""
    echo "Thanks bye!!"
    exit
    fi

    ${SERVICE}_ins


     

    本文出自 “fallenleaves” 博客,请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/545832

     

     

     

     

    自动安装多个tomcat shell脚本

     

     

     

    自动安装多个tomcat shell脚本

    #!/bin/bash
    #Auto Install JDK、tomcat and they connector.

    #执行这个脚本需要在/soft目录下放好JDK、tomcat、的tar.gz源码包,

    #以及已经执行过的jdk(本人无法做到在jdk执行时输入Enter和空格,所以这一步骤需要手动做。)

    #tomcat安装到/data/conf/tomcat,已设置环境变量。

    #JDv安装>/data/conf/jdk,已设置环境变量。

    # 20110401 lwz_benet@163.com  Version 1.0 write:fallenleaves QQ:543302969


    echo "===========================Began installing============================="

    if [ ! -d /opt/conf ]
    then
    mkdir -p /opt/conf
    else
    echo "This directory is already exists"
    fi

    #Auto Install JDK

    cd /soft
    chmod 700 jdk*
    ./jdk-6u24-linux-i586.bin
    mv jdk1.6.0_24/ /opt/conf/jdk
    rm -rf /usr/bin/java
    rm -rf /usr/bin/javac
    ln -s /opt/conf/jdk/bin/java /usr/bin/java
    ln -s /opt/conf/jdk/bin/javac /usr/bin/javac
    java -version

    sleep 5
    javac -version
    echo ""
    echo ""
    echo "====================Auto Install JDK Have finished======================"

    #Auto Install tomcat
    for i in `seq 1 3`
    do
    mkdir -p /opt/conf/tomcat$i
    cd /soft
    tar xzvf apache-tomcat-7.0.12.tar.gz
    mv apache-tomcat-7.0.12/*  /opt/conf/tomcat$i

    cat >> /etc/profile << EFF

    TOMCAT$i=/opt/conf/tomcat$i

    EFF

    done


    cat >> /etc/profile << FFG

    JAVA_HOME=/opt/conf/jdk
       
    JRE_HOME=/opt/conf/jdk/jre
       
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$TOMCAT1/bin:$TOMCAT2/bin:$TOMCAT3/bin/

    export JAVA_HOME JRE_HOME  PATH TOMCAT1 TOMCAT2 TOMCAT3

    FFG

    source /etc/profile


     

    本文出自 “fallenleaves” 博客,请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/547974

     

     

     

     

     

     

    nginx+tomcat负载均衡缓存服务器集群

     

     

    根据公司的需求,以及以后的访问量,决定用nginx做负载均衡服务器和cache缓存服务器,后端用2台tomcat提供web服务,用户信息数据用oracle来存储,音频文件用一台单独的应用服务器来存储。下面是nginx和tomcat的配置信息,关于oracle的安装和配置请参考本博客的centos+oracle10g的安装文件说明来配置。
     
    1、环境描述
     
           nginx和tomcat1服务器地址:192.168.81.131
           tomcat2服务器地址:192.168.81.128
           tomcat3服务器地址:192.168.81.132
     
     
    2、
     
    Nginx从0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx模块,可以清除指定URL的缓存。

     

      Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

      最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存),已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月,十分稳定,速度不逊于 Squid。

      在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。

    <如果想多了解nginx的文件可以参考张宴的博客: http://blog.s135.com/nginx_cache/ ,或是nginx中文网站: http://www.nginxcn.com/doc/toc.html  ,本文部分选自张宴博客的文章>
     
    (1)、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装:
     
    ulimit -SHn 65535
    echo “ulimit -SHn 65535″ >>/etc/rc.local ##使下次重启配置生效
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
    tar zxvf pcre-8.00.tar.gz
    cd pcre-8.00/
    ./configure
    make && make install
    cd ../
    wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
    tar zxvf ngx_cache_purge-1.0.tar.gz
    wget http://nginx.org/download/nginx-0.8.32.tar.gz
    tar zxvf nginx-0.8.32.tar.gz
    cd nginx-0.8.32/
    ./configure –user=www –group=www –add-module=../ngx_cache_purge-1.0 –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
    make && make install
    cd ../
     
    (2)、nginx完整的配置文件如下:
     
    user  www www;
    worker_processes 10;
    error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit;
    pid        /usr/local/webserver/nginx/nginx.pid;
    #最大文件描述符
    worker_rlimit_nofile 51200;
    events
    {
          use epoll;
          worker_connections 51200;
    }
    http
    {
          include       mime.types;
          default_type  application/octet-stream;
          keepalive_timeout 60;
          tcp_nodelay on;
          sendfile on;
          server_names_hash_bucket_size 128;
          client_header_buffer_size 32k;
          large_client_header_buffers 4 32k;
          client_max_body_size 300m;
          gzip on;
          gzip_min_length  1k;
          gzip_buffers     4 16k;
          gzip_http_version 1.1;
          gzip_comp_level 2;
          gzip_types       text/plain application/x-javascript text/css application/xml;
          gzip_vary on;
          proxy_connect_timeout    5;
          proxy_read_timeout       60;
          proxy_send_timeout       5;
          proxy_buffer_size        16k;
          proxy_buffers            4 64k;
          proxy_busy_buffers_size 128k;
          proxy_temp_file_write_size 128k;
          upstream tomcat
          {
          server  192.168.81.131:8080;
          server  192.168.81.128:8080;
          server  192.168.81.132:8080;
          }
         
          #注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
          proxy_temp_path /data0/proxy_temp_dir;
          #设置Web缓存区名称为cache_one,内存缓存空间大小为50MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为10GB。
          proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=10g;
    server
           {
            listen       80;
            server_name  tomcat.hxqm.com;
            root  /data0/htdocs/tomcat;
            index index.html index.htm index.jsp default.jsp index.do default.do;
     if (-d $request_filename)
     {
     rewrite ^/(.*)([^/])$ http://$host/$1$2/ last;
     }   
     location /
     {
    #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
     proxy_next_upstream http_502 http_504 error timeout invalid_header;
     proxy_cache cache_one;
    #对不同的HTTP状态码设置不同的缓存时间
     proxy_cache_valid 200 304 12h;
    #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
     proxy_cache_key $host$uri$is_args$args;
     proxy_set_header Host  $host;
     proxy_set_header X-Forwarded-For  $remote_addr;
     proxy_pass http://tomcat;
         expires      1d;   
         } 
     #用于清除缓存,假设一个URL为 http://tomcat.hxqm.com/docs/appdev/index.html,通过访问 http://tomcat.hxqm.com/purge/docs/appdev/index.html就可以清除该URL的缓存。
     location ~ /purge(/.*)
     {
     allow 127.0.0.1;
     allow 192.168.81.0/24;
     deny  all;
     proxy_cache_purge cache_one $host$1$is_args$args;
     }
     
    #扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
     location ~ .*\.(php|jsp|cgi)?$
     {
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $remote_addr;
     proxy_pass http://tomcat;
     }
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     {
     expires      30d;
     }
     location ~ .*\.(js|css)?$
     {
     expires      1h;
     }  
     log_format  tomcatlogs  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
      ’$status $body_bytes_sent “$http_referer” ‘
      ’”$http_user_agent” $http_x_forwarded_for’;
     access_log  /data1/logs/tomcatlogs.log  tomcatlogs;
     
           }
    }
     
    (3)、启动nginx服务,先测试nginx配置文件是否正确,用
            /usr/local/webserver/nginx/sbin/nginx -t 测试
           如果提示如下就说明配置文件没有问题可以启动nginx服务器了:
         [root@hxqm-tomcat local]# /usr/local/webserver/nginx/sbin/nginx -t
    the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
    configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful
           如果启动报错,你可以根据报错其实的行数来查看你的配置文件
     
    3、tomcat的配置
           把jdk文件和tomcat文件放在/usr/local/src目录下(各位习惯,可以自己定义)
     
    (1)、安装jdk(本人装的jdk用的是jdk-6u17-linux-i586.bin)
             cd /usr/local/src;chmod+x jdk-6u17-linux-i586.bin;./jdk-6u17-linux-i586.bin
             在安装过程中敲几下空格,然后输入”yes”,然后中途中再按回车jdk就装好了。
            做软连接:
             ln -s /usr/local/jdk1.6.0_17/ /usr/local/jdk
         
    (2)、java环境变量的配置
             vi /etc/profile,把以下内容写到文件的尾部
           
              JAVA_HOME=”/usr/local/jdk”
             CLASS_PATH=”$JAVA_HOME/lib:$JAVA_HOME/jre/lib”
             PATH=”.:$PATH:$JAVA_HOME/bin”
             CATALINA_HOME=”/usr/local/tomcat”
             export JAVA_HOME CATALINA_HOME
     
             然后保存退出,执行 source /etc/profile 使刚才配置的环境变量生效或者也可以重启机器,自己选择适合自己的方式。
     
    (3)、tomcat的配置
     
             编辑tomcat的配置文件server.xml
             在Hosts文件里面加上如下字段:
             <Context path=”" docBase=”/data0/htdocs/tomcat/ROOT” debug=”0″ reloadable=”true” />
              解释:tomcat默认回去”appBase”目录去查找要访问的文件,如果没有找到就去”docBase”目录去寻找。这个这段也可以不加,自己随意。
     
           这是一台tomcat服务器的配置信息,其他两台一样,此处就不多说了。
     
    (4)、启动tomcat服务
     
             /usr/local/tomcat/bin/startup.sh
     
    4、在本地的hosts文件里添加一条记录:
     
            192.168.81.131 tomcat.hxqm.com
     
    5、测试访问 http://tomcat.hxqm.com,如果页面可以正常访问,说明nginx的代理和tomcat的服务都没有问题。
     
    6、清除指定的URL缓存测试示例:
     

     

     

     

     

    关键字: nginx+tomcat集群负载均衡
     Nginx+tomcat 做负载均衡
    架构描述
    前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat)
    优点:实现了可弹性化的架构,在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去
    一,配置nginx
    1,  下载包
    2,  安装nginx包
        a.安装pcre
        tar zxvf pcre-7.2.tar.gz
        cd pcre
     ./configure  --prefix = /pcre
     Make;make install
    b,安装nginx
    tar zxvf nginx-0.6.32.tar.gz
    cd nginx-0.6.32
    ./configure  --prefix=/nginx –with-pcre=/pcre  --with-http_rewrite_module
    Make;make install
    3, 修改配置文件
    Vi /nginx/conf/nginx.conf
     
    #用户组
    user nobody nobody;                 
    #cpu个数,可以按照实际服务器来计算
    worker_processes  8;                
    worker_rlimit_nofile 51200;         
    events {
        use epoll;
    #连接数
        worker_connections  8192 ;      
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        server_names_hash_bucket_size 128;
    #    access_log  off;
    #    access_log  logs/access.log;
    #缓存的时间,(可以根据不同文件设置不同时间)
     #   expires           2h;      
        tcp_nodelay on;
        keepalive_timeout  30;      
        gzip  on;
        gzip_min_length  10;
        gzip_buffers     4 8k;
        gzip_http_version 1.1;
        gzip_types       text/plain application/x-javascript text/css text/html application/xml;
            sendfile         on;
            tcp_nopush       on;
            reset_timedout_connection  on;
         client_max_body_size 30m; 
    #设定负载均衡列表       
    upstream  backend           
     {                      
    server   172.23.254.2:8080;   
    server   172.23.254.3:8080;
    }
     
    #设定虚拟主机
    server {
            listen       80;
            server_name   www.abc.com;
    #对 / 所有做负载均衡 (本机nginx采用完全转发,所有请求都转发到后端的tomcat集群)
           location / {       
            root /web/www ;
           index index.jsp index.htm index.html;
                proxy_redirect         off;
    #保留用户真实信息
                proxy_set_header       Host $host;
                  proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass  http://backend;   
           }
    }
    }
    主要在配置proxy与upstream
    Upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器。
     
     
    4,启动程序
    /nginx/sbin/nginx
    5,编写启动脚本
    Vi nginx.sh
    #!/bin/sh
    CWD=`pwd`

    case $1 in
            start)
                    /nginx/sbin/nginx;
                            ;;
            stop)
                    kill -2 `ps -ef|grep "/nginx/sbin/nginx"|grep -v "grep"|awk '{print $2}' `
                            ;;
            restart)
                    cd "$CMD"
                    $0 stop
                    $0 start
            ;;
            *)
            echo $"Usage: $0 {start|stop|restart}"
            exit 1
    esac
    exit 0
     
        二,配置tomcat
    1,  下载tomcat5.59
    tar zxvf tomcat5.59
            2,修改配置文件
                a,配置数据源
                b,优化tomcat最大并发数
                        <Connector port="8080" maxHttpHeaderSize="8192"
                   maxThreads="2048" minSpareThreads="100" maxSpareThreads="200"
                   enableLookups="false" redirectPort="8443" acceptCount="500"
                   connectionTimeout="20000" disableUploadTimeout="true" />
                c,添加虚拟主机
    (注,主转发的虚拟主机必须用localhost,否则nginx不能通过内网ip转发,而只有通过域名转发
                d,测试
                    打开 http://ip:8080
                    页面能访问则正常
    2,  其他的tomcat服务器也用同样的配置
    三,做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复制。
     
     
    可能存在的问题
    1,  session复制问题
    以前用apache做负载均衡的时候,是选择了用 session sticky的模式,这样的话,用户每次进来都会是同一个服务器中的session,不会被转发到其他的服务器上。在这样的情况下,tomcat即使不做session复制也不会影响用户访问。但是nginx并不支持sticky功能。所以必须要做session复制。否则很多地方就根本没法用。比如登录过程,先等到了第一个tomcat上,产生了一个session,在刷新页面,刷到另外一个tomcat的机器上,没有这个session,就会出现问题了。所以程序员在写jsp的时候也要注意这一点
      举个简单的例子,比如我们在单机应用情况下修改SESSION中用户的某一个数据,那么通常就是:
    User user = (User)request.getSession().getAttribute(“user”);
    User.setName(“my name”);
        这样我们就是直接存取出来,然后进行修改,虽然在单机情况下没有问题,但是在集群条件下,这样就导致了多台WEB服务器上的SESSION不同步的问题,因为SESSION并没有改变,Tomcat无法监视session中某个数据的值是否发生了变化。因此,我们还需要执行如下操作以保证SESSION的同步:
    Request.getSession().setAttribute(“user”, user);
        所以,我们在操作SESSION的时候要特别注意!另外的建议就是,我们应该尽可能的不要修改SESSION中的数据。
     
      可能经常会遇到session复制不正常的情况。除了在服务端找原因再也程序上找下原因。都是有可能导致session复制不正常的
     
    2.页面同步
         为确保后面tomcat的服务器上的页面程序是一致的,可以采用如下方式
         a,rsync同步,或者做成页面按钮,提供给编辑,修改了程序即使点击同步
         b,共享区域存储,或者采取drbd网络raid模式
     
    3,确认nginx可以转发成功,
    在nginx上wget一下后面转发的url(包过端口),如果可以打开,那就可以转发过去。如果不能打开,则无法转发

     

     

     

     

     

     

     

    http://surpassdream.blog.51cto.com/1347340/544270

    http://wgkgood.blog.51cto.com/

    nginx rewrite 参数和例子

    http://www.cnblogs.com/analyzer/articles/1377684.html

    ]

    本位转自:http://blog.c1gstudio.com/archives/434

    推荐参考地址:
    Mailing list ARChives 官方讨论区
    http://marc.info/?l=nginx

    Nginx 常见应用技术指南[Nginx Tips]
    http://bbs.linuxtone.org/thread-1685-1-1.html

    本日志内容来自互联网和平日使用经验,整理一下方便日后参考。

    正则表达式匹配,其中:

    1. * ~ 为区分大小写匹配
    2. * ~* 为不区分大小写匹配
    3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

    文件及目录匹配,其中:

    1. * -f和!-f用来判断是否存在文件
    2. * -d和!-d用来判断是否存在目录
    3. * -e和!-e用来判断是否存在文件或目录
    4. * -x和!-x用来判断文件是否可执行

    flag标记有:

    1. * last 相当于Apache里的[L]标记,表示完成rewrite
    2. * break 终止匹配, 不再匹配后面的规则
    3. * redirect 返回302临时重定向 地址栏会显示跳转后的地址
    4. * permanent 返回301永久重定向 地址栏会显示跳转后的地址

    一些可用的全局变量有,可以用做条件判断(待补全)

    1. $args
    2. $content_length
    3. $content_type
    4. $document_root
    5. $document_uri
    6. $host
    7. $http_user_agent
    8. $http_cookie
    9. $limit_rate
    10. $request_body_file
    11. $request_method
    12. $remote_addr
    13. $remote_port
    14. $remote_user
    15. $request_filename
    16. $request_uri
    17. $query_string
    18. $scheme
    19. $server_protocol
    20. $server_addr
    21. $server_name
    22. $server_port
    23. $uri

    结合QeePHP的例子

    1. if (!-d $request_filename) {
    2. rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&amp;controller=$1&amp;action=$2&amp;$3 last;
    3. rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&amp;controller=$1 last;
    4. break;

    多目录转成参数
    abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

    1. if ($host ~* (.*)/.domain/.com) {
    2. set $sub_name $1;   
    3. rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
    4. }

    目录对换
    /123456/xxxx -> /xxxx?id=123456

    1. rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;

    例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

    1. if ($http_user_agent ~ MSIE) {
    2. rewrite ^(.*)$ /nginx-ie/$1 break;
    3. }

    目录自动加“/”

    1. if (-d $request_filename){
    2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    3. }

    禁止htaccess

    1. location ~//.ht {
    2.          deny all;
    3.      }

    禁止多个目录

    1. location ~ ^/(cron|templates)/ {
    2.          deny all;
    3. break;
    4.      }

    禁止以/data开头的文件
    可以禁止/data/下多级目录下.log.txt等请求;

    1. location ~ ^/data {
    2.          deny all;
    3.      }

    禁止单个目录
    不能禁止.log.txt能请求

    1. location /searchword/cron/ {
    2.          deny all;
    3.      }

    禁止单个文件

    1. location ~ /data/sql/data.sql {
    2.          deny all;
    3.      }

    给favicon.ico和robots.txt设置过期时间;
    这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

    1. location ~(favicon.ico) {
    2.                  log_not_found off;
    3. expires 99d;
    4. break;
    5.      }
    6.  
    7.      location ~(robots.txt) {
    8.                  log_not_found off;
    9. expires 7d;
    10. break;
    11.      }

    设定某个文件的过期时间;这里为600秒,并不记录访问日志

    1. location ^~ /html/scripts/loadhead_1.js {
    2.                  access_log   off;
    3.                  root /opt/lampp/htdocs/web;
    4. expires 600;
    5. break;
    6.        }

    文件反盗链并设置过期时间
    这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求
    “rewrite ^/ http://leech.c1gstudio.com/leech.gif;”显示一张防盗链图片
    “access_log off;”不记录访问日志,减轻压力
    “expires 3d”所有文件3天的浏览器缓存

    1. location ~* ^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
    2. valid_referers none blocked *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;
    3. if ($invalid_referer) {
    4.     rewrite ^/ http://leech.c1gstudio.com/leech.gif;
    5.     return 412;
    6.     break;
    7. }
    8.                  access_log   off;
    9.                  root /opt/lampp/htdocs/web;
    10. expires 3d;
    11. break;
    12.      }

    只充许固定ip访问网站,并加上密码

    1. root  /opt/htdocs/www;
    2. allow   208.97.167.194;
    3. allow   222.33.1.2;
    4. allow   231.152.49.4;
    5. deny    all;
    6. auth_basic "C1G_ADMIN";
    7. auth_basic_user_file htpasswd;

    将多级目录下的文件转成一个文件,增强seo效果
    /job-123-456-789.html 指向/job/123/456/789.html

    1. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /job/$1/$2/jobshow_$3.html last;

    将根目录下某个文件夹指向2级目录
    如/shanghaijob/ 指向 /area/shanghai/
    如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/

    1. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

    上面例子有个问题是访问/shanghai 时将不会匹配

    1. rewrite ^/([0-9a-z]+)job$ /area/$1/ last;
    2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

    这样/shanghai 也可以访问了,但页面中的相对链接无法使用,
    如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。

    那我加上自动跳转也是不行咯
    (-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果

    1. if (-d $request_filename){
    2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    3. }

    知道原因后就好办了,让我手动跳转吧

    1. rewrite ^/([0-9a-z]+)job$ /$1job/ permanent;
    2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

    文件和目录不存在的时候重定向:

    1. if (!-e $request_filename) {
    2. proxy_pass http://127.0.0.1;
    3. }

    域名跳转

    1. server
    2.      {
    3.              listen       80;
    4.              server_name  jump.c1gstudio.com;
    5.              index index.html index.htm index.php;
    6.              root  /opt/lampp/htdocs/www;
    7.              rewrite ^/ http://www.c1gstudio.com/;
    8.              access_log  off;
    9.      }

    多域名转向

    1. server_name  www.c1gstudio.com www.c1gstudio.net;
    2.              index index.html index.htm index.php;
    3.              root  /opt/lampp/htdocs;
    4. if ($host ~ "c1gstudio/.net") {
    5. rewrite ^(.*) http://www.c1gstudio.com$1 permanent;
    6. }

    三级域名跳转

    1. if ($http_host ~* "^(.*)/.i/.c1gstudio/.com$") {
    2. rewrite ^(.*) http://top.yingjiesheng.com$1;
    3. break;
    4. }

    域名镜向

    1. server
    2.      {
    3.              listen       80;
    4.              server_name  mirror.c1gstudio.com;
    5.              index index.html index.htm index.php;
    6.              root  /opt/lampp/htdocs/www;
    7.              rewrite ^/(.*) http://www.c1gstudio.com/$1 last;
    8.              access_log  off;
    9.      }

    某个子目录作镜向

    1. location ^~ /zhaopinhui {
    2.   rewrite ^.+ http://zph.c1gstudio.com/ last;
    3.   break;
    4.      }

    discuz ucenter home (uchome) rewrite

    1. rewrite ^/(space|network)-(.+)/.html$ /$1.php?rewrite=$2 last;
    2. rewrite ^/(space|network)/.html$ /$1.php last;
    3. rewrite ^/([0-9]+)$ /space.php?uid=$1 last;

    discuz 7 rewrite

    1. rewrite ^(.*)/archiver/((fid|tid)-[/w/-]+/.html)$ $1/archiver/index.php?$2 last;
    2. rewrite ^(.*)/forum-([0-9]+)-([0-9]+)/.html$ $1/forumdisplay.php?fid=$2&page=$3 last;
    3. rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)/.html$ $1/viewthread.php?tid=$2&extra=page/%3D$4&page=$3 last;
    4. rewrite ^(.*)/profile-(username|uid)-(.+)/.html$ $1/viewpro.php?$2=$3 last;
    5. rewrite ^(.*)/space-(username|uid)-(.+)/.html$ $1/space.php?$2=$3 last;
    6. rewrite ^(.*)/tag-(.+)/.html$ $1/tag.php?name=$2 last;

    给discuz某版块单独配置域名

    1. server_name  bbs.c1gstudio.com news.c1gstudio.com;
    2.  
    3.      location = / {
    4.         if ($http_host ~ news/.c1gstudio.com$) {
    5.   rewrite ^.+ http://news.c1gstudio.com/forum-831-1.html last;
    6.   break;
    7. }
    8.      }

    discuz ucenter 头像 rewrite 优化

    1. location ^~ /ucenter {
    2.      location ~ .*/.php?$
    3.      {
    4.   #fastcgi_pass  unix:/tmp/php-cgi.sock;
    5.   fastcgi_pass  127.0.0.1:9000;
    6.   fastcgi_index index.php;
    7.   include fcgi.conf;     
    8.      }
    9.  
    10.      location /ucenter/data/avatar {
    11. log_not_found off;
    12. access_log   off;
    13. location ~ /(.*)_big/.jpg$ {
    14.     error_page 404 /ucenter/images/noavatar_big.gif;
    15. }
    16. location ~ /(.*)_middle/.jpg$ {
    17.     error_page 404 /ucenter/images/noavatar_middle.gif;
    18. }
    19. location ~ /(.*)_small/.jpg$ {
    20.     error_page 404 /ucenter/images/noavatar_small.gif;
    21. }
    22. expires 300;
    23. break;
    24.      }
    25.                        }

    jspace rewrite

    1. location ~ .*/.php?$
    2.              {
    3.                   #fastcgi_pass  unix:/tmp/php-cgi.sock;
    4.                   fastcgi_pass  127.0.0.1:9000;
    5.                   fastcgi_index index.php;
    6.                   include fcgi.conf;     
    7.              }
    8.  
    9.              location ~* ^/index.php/
    10.              {
    11.     rewrite ^/index.php/(.*) /index.php?$1 break;
    12.                   fastcgi_pass  127.0.0.1:9000;
    13.                   fastcgi_index index.php;
    14.                   include fcgi.conf;
    15.              }
     
    http://blog.csdn.net/cnbird2008/article/details/4409620
     
     
     
     
    展开全文
  • Nginx+tomcat+flume搭建搭建环境Nginx搭建tomcat搭建flume搭建 搭建环境 ubuntu 18.04 Nginx 1.14.0 tomcat 7.0.72 flume 1.6.0 Nginx搭建 tomcat搭建 flume搭建

    实验目的

    作为日志采集系统的一部分,通过Nginx+tomcat+flume实现负载均衡,Nginx 将日志数据负载均衡到多个 Tomcat 上,Tomcat 服务器通过 log4j 将日志数据写入日志文件中,通过日志数据的落盘实现了业务系统与数据 采集系统的解耦。

    随后,双层 Flume 架构中的第一层数据采集 Flume 将对应的 Tomcat 生成的日志文件采 集到其拓扑结构中,随后多个第一层数据采集 Flume 的数据汇总到第二层的数据聚合 Flume上,完成数据的聚合和集中处理。

    然后,第二层的数据聚合 Flume 根据日志数据的类型,将日志数据发送到不同的 Kafka主题中,在 Kafka 中完成数据的分布式存储。

    搭建环境

    ubuntu 18.04
    Nginx 1.14.0
    tomcat 7.0.72
    flume 1.6.0

    Nginx搭建

    关于在ubuntu搭建Nginx的过程已经在我的这篇文章详细给出
    https://blog.csdn.net/x_k_b/article/details/105222649
    这里补充一下Nginx启动和关闭的命令
    Nginx 开启
    sbin/nginx
    Nginx 关闭
    sbin/nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速 终止web服务
    sbin/nginx -s quit 安全关闭Nginx,保存相关信息,有安排的结束web服务。
    sbin/nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
    sbin/nginx -s reopen 重新打开日志文件。

    tomcat搭建

    解压安装

    tomcat应该是这三个组件里面搭建起来最容易的一个了,只需要将安装包解压到目标目录即可。我这里是解压到/opt/moudles目录下。

    cd ~/Downloads    #切换到安装包所在目录
    tar -zxvf apache-tomcat-7.0.72.tar.gz -C /opt/modules   
    

    要实现Nginx负载均衡,就需要多个tomcat,我选择的方法是在同一台虚拟机中装了两个tomcat。所以将解压出来的包再copy一份,并且两个文件夹分别命名为_01和_02。

    配置文件

    由于一台虚拟机安装了两个tomcat,那就需要修改一下tomcat的配置文件以防端口冲突问题。
    编辑tomcat目录下的conf/server.xml
    把这些端口号都改一改,只要两个tomcat的端口号不相同,不与其他在用的端口号冲突即可,为了简单,我把第一个tomcat的端口号前面都加上1,第二个tomcat端口号前面都加上2。保存退出。
    在这里插入图片描述
    在这里插入图片描述

    修改index.jsp

    如果不是像我一样在一台虚拟机上装两个tomcat的话完全没有必要进行这一步哈。
    在tomcat/webapps/ROOT目录下,编辑index.jsp
    在这里插入图片描述
    加上一个h1标题,保存退出。这样子在访问tomcat页面的时候就可以看到是哪个tomcat了。

    启动关闭

    启动
    bin/startup.sh

    查看
    1、可以使用jps查看,看到两个bootstrap就对了
    在这里插入图片描述
    2、使用ps命令查看进程

    ps aux|grep tomcat
    

    在这里插入图片描述
    3、浏览器查看
    浏览器访问本机ip地址,可以看到tomcat页面。由于有Nginx负载均衡,刷新多次后可以看到有时是tomcat01有时是tomcat02,但不一定是一次01一次02这样交替出现!
    在这里插入图片描述
    关闭
    bin/shutdown.sh

    启动tomcat的小问题

    tomcat的启动要注意一点,前面安装和启动Nginx都是使用root用户,而tomcat启动一定要用普通用户启动,因为root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本修改整个硬盘里的文件!所以一般要以普通用户身份启动tomcat。

    自己启动第二个tomcat的时候报了一个错:touch: cannot touch ‘/opt/modules/apache-tomcat-7.0.72_2/logs/catalina.out’: Permission denied,原因是logs文件夹没有读写权限。ll命令查看一下文件的权限,发现两个文件的所有者竟然不一样,一个是root用户一个是普通用户,可能是自己经常开多个终端窗口,而有的终端窗口切的是root用户,复制的时候不小心用错窗口了。于是给文件夹修改777权限,即可使用普通用户启动。
    修改文件权限

    chmod -R 777 apache-tomcat-7.0.72_2
    

    在这里插入图片描述
    注:(由于有些截图是在后来重命名tomcat文件夹之后截的,所以截图中文件夹名会有不同)

    flume搭建

    首先解压tar.gz文件到目标目录。

    配置文件

    进入flume/conf目录下,我们将要编写一个配置文件,这个配置文件可以任意起名,到时候启动的时候会指定配置文件名。主要注意设置的监听目录是自己的。

    #设置agent组件名 注意这里的a1对应启动命令的 -n a1
    a1.sources = r1
    a1.channels = c1
    a1.sinks = k1
    
    #sources类型 比如这里是TaildirSource
    a1.sources.r1.type = com.atguigu.flume.source.TaildirSource
    a1.sources.r1.channels = c1
    a1.sources.r1.positionFile = /opt/modules/flume/checkpoint/behavior/taildir_position.js on
    a1.sources.r1.filegroups = f1
    #监听目录
    a1.sources.r1.filegroups.f1 = /opt/modules/tomcat_01/logs/LogsCollect/kevin.log
    a1.sources.r1.fileHeader = true
    
    a1.channels.c1.type = file
    a1.channels.c1.checkpointDir = /opt/modules/flume/checkpoint/behavior_collect a1.channels.c1.dataDirs = /opt/modules/flume/data/behavior_collect
    a1.channels.c1.maxFileSize = 104857600 
    a1.channels.c1.capacity = 90000000 
    a1.channels.c1.keep-alive = 60
    
    #sink类型 比如这里是KafkaSink
    a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
    a1.sinks.k1.topic = analysis-test
    #配置集群,brokerlist是过时属性,现在应该替换为kafka.bootstrap.servers 
    a1.sinks.k1.brokerList = APPlog01:9092,APPlog02:9092,APPlog03:9092
    a1.sinks.k1.requiredAcks = 1
    a1.sinks.k1.kafka.producer.type = sync
    a1.sinks.k1.batchSize = 1
    a1.sinks.k1.channel = c1
    
    

    细心的朋友肯定会发现为什么我这个1.6.0的flume有TaildirSource,那是因为把1.7版本的flume中的TaildirSource源码打包移植过来了。

    启动

    第一次执行命令启动失败
    在这里插入图片描述
    百度之后都看到大家说是命令格式的问题,于是有了后面各种姿势的启动失败
    在这里插入图片描述什么-c conf/ --conf conf/ --conf /opt/modules/flume/conf全试遍了就是不行
    后来看到说是因为写log的权限问题,那么就用sudo执行,果然不报那个错了,接着
    又提示缺少java环境,将conf目录下的env.sh.template改名为env.sh并添加JAVA_HOME之后,启动。
    在这里插入图片描述
    卡住了,卡在这里,也不报任何错误,此时ctrl+c手动结束进程,然后转到log目录下
    去查看日志信息。
    在这里插入图片描述
    在这里插入图片描述
    原来是配置文件在粘贴的时候格式有问题,这两行没换行,导致识别不到端口。改过来之后成功启动。

    后来同样的不可见字符的问题出现在配置文件里,困扰了我几个月,甚至一度想放弃,聚集层的两个节点的file channel的两个参数明明设置了却一直使用的是default值,最后从第一层的节点的配置文件中复制了那两行过去就解决了!

    停止

    使用kill命令停止进程,不可使用kill-9,因为 Flume 内部注册了很多钩子函数执行善后工作,如果使用 kill -9 会导致钩子函数不执行,使用 kill 时,Flume 内部进程会监控到用户的操作,然后调用钩子 函数,执行一些善后操作,正常退出。

    展开全文
  • Nginx + Tomcat 实现负载均衡1、实验拓扑2、各个虚机的软件安装2.1 Nginx Server2.1.1 Nginx 安装2.1.2 Nginx 启动2.1.3 Nginx 访问2.2 Tomcat - 22.2.1 Tomcat 安装2.2.2 Tomcat 启动2.2.3 Tomcat 访问2.3 Tomcat -...

    1、实验拓扑

    在这里插入图片描述

    2、各个虚机的软件安装

    2.1 Nginx Server

    2.1.1 Nginx 安装

    [root@Tang-7 ~]# ipinfo
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    
    [root@Tang-7 ~]# yum install nginx -y
    

    2.1.2 Nginx 启动

    [root@Tang-7 ~]# systemctl start nginx.service
    [root@Tang-7 ~]# ss -tnl
    State       Recv-Q Send-Q                                                Local Address:Port                                                               Peer Address:Port              
    LISTEN      0      128                                                               *:80                                                                            *:*                  
    LISTEN      0      128                                                               *:22                                                                            *:*                  
    LISTEN      0      100                                                       127.0.0.1:25                                                                            *:*                  
    LISTEN      0      128                                                              :::80                                                                           :::*                  
    LISTEN      0      128                                                              :::22                                                                           :::*                  
    LISTEN      0      100                                                             ::1:25                                                                           :::*                   
    

    2.1.3 Nginx 访问

    在这里插入图片描述

    2.2 Tomcat - 2

    2.2.1 Tomcat 安装

    [root@Tang-6 ~]# ipinfo
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.12  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    
    [root@Tang-6 ~]# yum list all tomcat*
    Installed Packages
    tomcat.noarch                                                                                     7.0.76-9.el7_6                                                                      @base
    tomcat-admin-webapps.noarch                                                                       7.0.76-9.el7_6                                                                      @base
    tomcat-docs-webapp.noarch                                                                         7.0.76-9.el7_6                                                                      @base
    tomcat-el-2.2-api.noarch                                                                          7.0.76-9.el7_6                                                                      @base
    tomcat-jsp-2.2-api.noarch                                                                         7.0.76-9.el7_6                                                                      @base
    tomcat-lib.noarch                                                                                 7.0.76-9.el7_6                                                                      @base
    tomcat-servlet-3.0-api.noarch                                                                     7.0.76-9.el7_6                                                                      @base
    tomcat-webapps.noarch                                                                             7.0.76-9.el7_6                                                                      @base
    Available Packages
    tomcat-javadoc.noarch                                                                             7.0.76-9.el7_6                                                                      base 
    tomcat-jsvc.noarch                                                                                7.0.76-9.el7_6                                                                      base 
    tomcat-native.x86_64                                                                              1.2.21-1.el7                                                                        epel 
    tomcatjss.noarch                                                                                  7.2.1-8.el7_6                                                                       base 
    [root@Tang-6 ~]# yum install tomcat.noarch tomcat-admin-webapps.noarch tomcat-docs-webapp.noarch tomcat-webapps.noarch -y
    

    2.2.2 Tomcat 启动

    [root@Tang-6 ~]# systemctl start tomcat.service
    [root@Tang-6 ~]# ss -tnl
    State       Recv-Q Send-Q                                                Local Address:Port                                                               Peer Address:Port              
    LISTEN      0      128                                                               *:22                                                                            *:*                  
    LISTEN      0      100                                                       127.0.0.1:25                                                                            *:*                  
    LISTEN      0      100                                                              :::8009                                                                         :::*                  
    LISTEN      0      100                                                              :::8080                                                                         :::*                  
    LISTEN      0      128                                                              :::22                                                                           :::*                  
    LISTEN      0      100                                                             ::1:25                                                                           :::*                  
    LISTEN      0      1                                                  ::ffff:127.0.0.1:8005                                                                         :::*                  
    

    2.2.3 Tomcat 访问

    在这里插入图片描述

    2.3 Tomcat - 1

    2.3.1 Tomcat 安装

    [root@Tang-5 ~]# ipinfo 
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    
    [root@Tang-5 ~]# yum list all tomcat*
    Installed Packages
    tomcat.noarch                                                                                     7.0.76-9.el7_6                                                                      @base
    tomcat-admin-webapps.noarch                                                                       7.0.76-9.el7_6                                                                      @base
    tomcat-docs-webapp.noarch                                                                         7.0.76-9.el7_6                                                                      @base
    tomcat-el-2.2-api.noarch                                                                          7.0.76-9.el7_6                                                                      @base
    tomcat-jsp-2.2-api.noarch                                                                         7.0.76-9.el7_6                                                                      @base
    tomcat-lib.noarch                                                                                 7.0.76-9.el7_6                                                                      @base
    tomcat-servlet-3.0-api.noarch                                                                     7.0.76-9.el7_6                                                                      @base
    tomcat-webapps.noarch                                                                             7.0.76-9.el7_6                                                                      @base
    Available Packages
    tomcat-javadoc.noarch                                                                             7.0.76-9.el7_6                                                                      base 
    tomcat-jsvc.noarch                                                                                7.0.76-9.el7_6                                                                      base 
    tomcat-native.x86_64                                                                              1.2.21-1.el7                                                                        epel 
    tomcatjss.noarch                                                                                  7.2.1-8.el7_6                                                                       base 
    [root@Tang-5 ~]# yum install tomcat.noarch tomcat-admin-webapps.noarch tomcat-docs-webapp.noarch tomcat-webapps.noarch -y
    

    2.3.2 Tomcat 启动

    [root@Tang-5 ~]# systemctl start tomcat.service
    [root@Tang-5 ~]# ss -tnl
    State       Recv-Q Send-Q                                                Local Address:Port                                                               Peer Address:Port              
    LISTEN      0      128                                                               *:22                                                                            *:*                  
    LISTEN      0      100                                                       127.0.0.1:25                                                                            *:*                  
    LISTEN      0      100                                                              :::8009                                                                         :::*                  
    LISTEN      0      100                                                              :::8080                                                                         :::*                  
    LISTEN      0      128                                                              :::22                                                                           :::*                  
    LISTEN      0      100                                                             ::1:25                                                                           :::*                  
    LISTEN      0      1                                                  ::ffff:127.0.0.1:8005                                                                         :::*                  
    

    2.3.3 Tomcat 访问

    在这里插入图片描述

    3、Tomcat 冷部署一个测试类应用

    3.1 Tomcat - 1

    3.1.1 创建相关目录

    [root@Tang-6 ~]# mkdir -pv /appdata/webapps/ROOT/{lib,classes,WEB-INF}
    mkdir: created directory ‘/appdata’
    mkdir: created directory ‘/appdata/webapps’
    mkdir: created directory ‘/appdata/webapps/ROOT’
    mkdir: created directory ‘/appdata/webapps/ROOT/lib’
    mkdir: created directory ‘/appdata/webapps/ROOT/classes’
    mkdir: created directory ‘/appdata/webapps/ROOT/WEB-INF[root@Tang-6 ~]# mkdir /appdata/webapps/test
    

    3.1.2 创建相关文件

    [root@Tang-6 ~]# cat /appdata/webapps/test/index.jsp
    <%@ page language="java" %>
    <html>
    	<head><title>TomcatA</title></head>
    		<body>
    		<h1><font color="red">Tang-6</font></h1>
    		<table align="centre" border="1">
    			<tr>
    				<td>Session ID</td>
    			<% session.setAttribute("Tang","Tang"); %>
    				<td><%= session.getId() %></td>
    			</tr>
    			<tr>
    				<td>Created on</td>
    				<td><%= session.getCreationTime() %></td>
    			</tr>
    		</table>
    	</body>
    </html>
    
    [root@Tang-6 ~]# tree /appdata/webapps/
    /appdata/webapps/
    ├── ROOT
    │   ├── classes
    │   ├── lib
    │   └── WEB-INF
    └── test
        └── index.jsp
    
    5 directories, 1 file
    

    3.1.3 修改 Tomcat 配置文件,并重启服务

    ### 在 </Engine> </Engine> 之间添加一个 HOST ###
    [root@Tang-6 ~]# vim /etc/tomcat/server.xml 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat-Tang-6">
    	<Host name="localhost" appBase="/appdata/webapps" unpackWARs="true" autoDeploy="true">
        	<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        	prefix="node1_access" suffix=".log"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            <Context path="/test" docBase="test" reloadable="">
                    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                    prefix="Tang-6_test_access_" suffix=".log"
                    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Context>
    	</Host>
    </Engine>
    
    [root@Tang-6 ~]# systemctl restart tomcat.service
    

    3.1.4 修改 WIN7 HOSTS 文件,进行访问,并查看相关 log

    在这里插入图片描述
    在这里插入图片描述

    3.1.5 查看相关 log

    [root@Tang-6 ~]# tail /var/log/tomcat/Tang-6_test_access_2019-11-03.log 
    192.168.1.6 - - [03/Nov/2019:20:42:11 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:20:42:15 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:20:42:16 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:20:42:16 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:20:42:16 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:20:42:16 +0800] "GET /test/ HTTP/1.1" 200 321
    

    3.2 Tomcat - 2

    3.2.1 创建相关目录

    [root@Tang-5 ~]# mkdir -pv /appdata/webapps/ROOT/{lib,classes,WEB-INF}
    mkdir: created directory ‘/appdata’
    mkdir: created directory ‘/appdata/webapps’
    mkdir: created directory ‘/appdata/webapps/ROOT’
    mkdir: created directory ‘/appdata/webapps/ROOT/lib’
    mkdir: created directory ‘/appdata/webapps/ROOT/classes’
    mkdir: created directory ‘/appdata/webapps/ROOT/WEB-INF[root@Tang-5 ~]# mkdir /appdata/webapps/test
    

    3.2.2 创建相关文件

    [root@Tang-5 ~]# cat /appdata/webapps/test/index.jsp 
    <%@ page language="java" %>
    <html>
    	<head><title>TomcatB</title></head>
    		<body>
    		<h1><font color="blue">Tang-5</font></h1>
    		<table align="centre" border="1">
    			<tr>
    				<td>Session ID</td>
    			<% session.setAttribute("Tang","Tang"); %>
    				<td><%= session.getId() %></td>
    			</tr>
    			<tr>
    				<td>Created on</td>
    				<td><%= session.getCreationTime() %></td>
    			</tr>
    		</table>
    	</body>
    </html>	
    
    [root@Tang-5 ~]# tree /appdata/webapps/
    /appdata/webapps/
    ├── ROOT
    │   ├── classes
    │   ├── index.jsp
    │   ├── lib
    │   └── WEB-INF
    └── test
        └── index.jsp
    
    5 directories, 2 files
    

    3.2.3 修改 Tomcat 配置文件,并重启服务

    ### 在 </Engine> </Engine> 之间添加一个 HOST ###
    [root@Tang-5 ~]# vim /etc/tomcat/server.xml 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat-Tang-5">			
    	<Host name="localhost" appBase="/appdata/webapps" unpackWARs="true" autoDeploy="true">
        	<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
             prefix="node1_access" suffix=".log"
             pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            <Context path="/test" docBase="test" reloadable="">
            	<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                 prefix="Tang-5_access_" suffix=".log"
                 pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Context>
    	</Host>
    <Engine>
    
    [root@Tang-5 ~]# systemctl restart tomcat.service
    

    3.2.4 修改 WIN7 HOSTS 文件,进行访问

    在这里插入图片描述
    在这里插入图片描述

    3.2.5 查看相关 log

    [root@Tang-5 ~]# tail /var/log/tomcat/Tang-5_test_access_2019-11-03.log 
    192.168.1.6 - - [03/Nov/2019:20:42:09 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:13 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:13 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:14 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:14 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:14 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:14 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:20:42:14 +0800] "GET /test/ HTTP/1.1" 200 322
    

    4、Nginx Server 反代设置

    4.1 conf 文件修改

    [root@Tang-7 ~]# ipinfo 
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    
    [root@Tang-7 ~]# vim /etc/nginx/nginx.conf
    http {
    
        upstream tomcatservers {
            server 192.168.1.11:8080;
            server 192.168.1.12:8080;
        }
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            index index.jsp index.html;
    
            location / {
                root /usr/share/nginx/html;
            }
    
            location /test/ {
                proxy_pass http://tomcatservers;
            }
            
        }
    }
    

    4.2 conf 文件语法检查,并重启服务

    [root@Tang-7 ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@Tang-7 ~]# nginx -s reload
    

    4.3 进行访问,通过刷新网页,可以看到在轮询访问后端 Tomcat 服务器

    在这里插入图片描述
    在这里插入图片描述

    4.4 后端 Tomcat 服务器 log 查看

    [root@Tang-6 ~]# ipinfo 
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    [root@Tang-6 ~]# tail /var/log/tomcat/Tang-6_test_access_2019-11-03.log 
    192.168.1.10 - - [03/Nov/2019:21:19:19 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:19:34 +0800] "GET /test HTTP/1.1" 302 -
    192.168.1.6 - - [03/Nov/2019:21:19:34 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:28:31 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:28:31 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:28:31 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:28:32 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.10 - - [03/Nov/2019:21:30:35 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.6 - - [03/Nov/2019:21:48:50 +0800] "GET /test/ HTTP/1.1" 200 321
    192.168.1.10 - - [03/Nov/2019:21:54:35 +0800] "GET /test/ HTTP/1.1" 200 321
    
    [root@Tang-5 ~]# ipinfo 
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.12  netmask 255.255.255.0  broadcast 192.168.1.255
    --
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    [root@Tang-5 ~]# tail /var/log/tomcat/Tang-5_test_access_2019-11-03.log 
    192.168.1.10 - - [03/Nov/2019:21:29:44 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.10 - - [03/Nov/2019:21:30:21 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:21:31:29 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:21:31:30 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:21:48:52 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:21:48:52 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.6 - - [03/Nov/2019:21:48:52 +0800] "GET /test/ HTTP/1.1" 200 322
    192.168.1.10 - - [03/Nov/2019:21:56:34 +0800] "GET /test/ HTTP/1.0" 200 322
    192.168.1.10 - - [03/Nov/2019:22:02:32 +0800] "GET /test/ HTTP/1.0" 200 322
    192.168.1.10 - - [03/Nov/2019:22:06:11 +0800] "GET /test/ HTTP/1.0" 200 322
    

    5、注意事项(反代其它主机名失败的原因)

    进行反代时,只能反代到后端 Tomcat 服务器的 localhost 上,如果反代到其它 主机名 的话,反代失败。提示 404 。

    展开全文
  • nginx负载均衡配置,nginxtomcat配置负载均衡
  • LVS群集 nginx+tomcat

    2012-02-25 14:18:02
    LVS群集 nginx+tomcat 项目拓扑图: 一.安装nginx + tomcat 192.168.1.248和192.168.1.249服务器上...
  • 使用 Nginx + Tomcat 搭建负载均衡 nginx 一般用来做反向代理和负载均衡,将客户端请求发送到后端的tomcat,并将tomcat的响应发送给客户端。后端的tomcat通常不止一个,nginx 根据配置来选择其中一个tomcat,比较...
  • nginx+Tomcat实现负载均衡
  • 案例分析 案例概述 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决...拓扑图 案例实施 Tomcat1、Tomcat2的S
  • Linux—Nginx-tomcat负载均衡群集 一.实验环境 一台nginx服务器:192.168.88.137 两台tomcat服务器:192.168.88.216 ​ 192.168.88.217 一台测试机 二.实验拓扑图 三.具体实验步骤 1)配置两台tomcat服务器...
  • Nginx+apache+Tomcat动静分离 环境拓扑nginx1.1–mysql1.s2–tomcat1.3–apache+php1.4 nginx服务端连接tomcat+LAMP vim /usr/local/nginx/conf/nginx.conf 添加如下:在server{}选项中添加俩组location选项。 ...
  • 文章目录Nginx+Tomcat负载均衡群集与动静分离配置示例案例环境示例配置调度Nginx服务器配置动态页面处理的Tomcat后端web服务器nginx动静资源混合场景测试 Nginx+Tomcat负载均衡群集与动静分离配置示例 案例环境 本...
  • nginx配置tomcat负载均衡 nginx可以作为Web前置机,将客户请求按照一定算法合理分配给后置的tomcat应用服务器,从而达到均衡目的。当然如果应用使用了session会话,后 置的tomcat应用还要保证session共享...
  • 通常情况下,单个Tomcat站点由于可能出现单点故障而无法应付客户复杂多样的请求,...Nginx+Tomcat网站拓扑架构 实验环境 主机 操作系统 IP地址 主要软件 Nginx服务器 Redhat6.5 192.168.100.107 Nginx-1.12 ...
  • nginx配置tomcat负载均衡 nginx可以作为Web前置机,将客户请求按照一定算法合理分配给后置的tomcat应用服务器,从而达到均衡目的。当然如果应用使用了session会话,后 置的tomcat应用还要保证session共享才能达到...
  • nginx+tomcat+redis

    2018-07-17 17:17:59
    今天整合了一些资源,做了一个Nginx+Tomcat+Redis的案例,使部署的web项目能够承载较大的访问压力,Nginx实现负载均衡,并使用Redis实现session共享; 如下拓扑图: 各版本如图所示 ==========================...
  • 文章目录一、负载均衡的概念二、负载均衡集群2.1 部署环境2.2 部署拓扑图三、集群部署过程3.1 Tomcat1&2 部署3.2 nginx服务器部署 一、负载均衡的概念 传统模型下,一个项目部署在一台tomcat上,这个时候,假如...
  • nginx+tomcat部署集群

    2018-05-22 10:50:38
    拓扑环境:服务器名称系统版本预装软件ip地址Nginx服务器centos-6.5nginx软件192.168.xx.xxxtomcat服务器centos-6.5tomcat 192.168.xx.xxxtomcat服务器1centos-6.5tomcat192.168.18.xxx安装nginx 1.解压nginx:tar ...
  • macbook pro下parallel desktop虚拟centos,keepalived+nginx+tomcat实现高可用性环境准备拓扑图PD设置nginx安装及配置tomcat安装及配置安装JDK安装tomcatnginx配置tomcat负载keepalived安装及配置验证 环境准备 ...
  • tomcat session会话保持实验-之Nginx+tomcat+memcached实验要求1、nginx+tomcat 负载均衡2、memcached 会话保持实验拓扑 ip网络规划 Nginxnode2:172.16.76.20 tomcatAnode3:172.16.76.30 memcached...
  • 文章目录一、Nginx 负载均衡实现原理:(1)Nginx 静态处理优势(2)Tomcat 主要目录(3)Nginx 应用(4)动静分离原理二、实验案例:第一步:搭建 Nginx第二步:部署两台 Tomcat第三步:Tomcat 中创建测试页面第四...
  • 通常情况下,一台Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下所以我们需要一套更 可靠的解决方案来完善Web站点架构。Nginx是一款非常优秀的http服务器软件,...
  • 什么是动静分离为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以...
  • 文章目录一、集群概述二、Nginx三、配置步骤1.环境2.部署 Nginx 负载均衡器3.部署 2 台 Tomcat 应用服务器4.动静分离配置5.配置 Nginx Server 一、集群概述 通常情况下,一个 Tomcat 站点由于可能出现单点故障及...
  • 今天整合了一些资源,做了一个Nginx+Tomcat+Redis的案例,使部署的web项目能够承载较大的访问压力,Nginx实现负载均衡,并使用Redis实现session共享; 如下拓扑图: 各版本如图所示 ==========================...
  • 这篇文章主要讲NginxTomcatNginx + Tomcat 负载均衡群集。2·在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件——Nginx,它是由俄罗斯 Lgor Sysoev(伊戈尔·赛索耶夫)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,357
精华内容 942
关键字:

nginxtomcat拓扑