• java进阶知识--Nginx安装与部署


    一、下载Nginx安装包

      官方网站:http://nginx.org/

      有两个版本windows版本和linux版本。生产环境都是使用linux版本。

    二、Nginx的安装与部署

     2.1 在Windows上安装部署

       2.1.1 解压安装

        将安装包解压到某个盘符下,比如:D: ginx

        目录结构:

       2.1.2 启动运行

        双击 nginx.exe 即可运行,登陆 http://localhost:80(默认端口80,输入网址时80可省略)访问,显示如下界面表示安装成功。

      小贴士:此页面其实就是安装包下html文件夹中的index.html。等同于根路径下的初始化界面。后续我们可以通过nginx.conf文件修改它的默认首页等配置信息。

       2.1.3 关闭停止

      • 手动关闭:结束 nginx 的进程;
      • 命令行关闭:nginx -s stop

       2.1.4 重新加载配置文件

      • 命令行加载:nginx -s reload  // 可以在不关闭 nginx 的情况下进行更新

     2.2 在Linux上安装部署

       2.2.1 安装

        1)安装环境

      • gcc

      安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。
      * yum install gcc-c++

      • PCRE

      PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
      * yum install -y pcre pcre-devel
      注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

      • zlib

      zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
      * yum install -y zlib zlib-devel

      • openssl

      OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
      nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
      * yum install -y openssl openssl-devel

        2)编译与安装

          ① 把nginx的源码包上传至linux服务器
          ② 解压源码包。 如:tar -zxf nginx-1.8.0.tar.gz
          ③ 进入nginx-1.8.0文件夹。使用configure命令创建makefile
          ④ 参数设置如下:(可根据实际情况进行修改,也可不修改)
            ./configure
            --prefix=/usr/local/nginx
            --pid-path=/var/run/nginx/nginx.pid
            --lock-path=/var/lock/nginx.lock
            --error-log-path=/var/log/nginx/error.log
            --http-log-path=/var/log/nginx/access.log
            --with-http_gzip_static_module
            --http-client-body-temp-path=/var/temp/nginx/client
            --http-proxy-temp-path=/var/temp/nginx/proxy
            --http-fastcgi-temp-path=/var/temp/nginx/fastcgi
            --http-uwsgi-temp-path=/var/temp/nginx/uwsgi
            --http-scgi-temp-path=/var/temp/nginx/scgi
          注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
          ⑤ make
          ⑥ make install

       2.2.2 启动与关闭

      nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序。

      命令行启动:./nginx
      命令行关闭:./nginx -s stop
      命令行退出:./nginx -s quit  // 等程序执行完毕后关闭,建议使用此命令。

       2.2.3 重新加载配置文件

      命令行加载:./nginx -s reload  // 可以在不关闭 nginx 的情况下进行更新

    三、Nginx搭建Tomcat集群

     3.1 tomcat集群配置

    • 首先安装部署多个tomcat服务器,在没有条件的情况下,可以在本地安装多个tomcat后,分别对tomcat重命名并修改配置文件server.xml中的端口号(为了避免端口冲突);

    • 再将项目分别发布到相应的tomcat中。

    设置Linux的防火墙:(在linux上搭建集群)

      * /sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
      * /etc/rc.d/init.d/iptables save (永久保存上面修改后的设置)

     3.2 Nginx负载均衡配置

    • 修改安装目录下conf文件夹下的nginx.conf配置文件 (nginx/conf/nginx.conf)

     

    • 重新加载配置文件

      // 可以在不关闭 nginx 的情况下进行更新
      windows命令行加载:nginx -s reload
      liunx命令行加载:./nginx -s reload

     3.3 Tomcat集群的session共享

       在上述的配置中,我们可以通过http://localhost:801访问到不同的tomcat来分担服务端的压力。

       需要注意的是,请求负载过程中的会话信息不能丢失,那么就需要在多个tomcat中进行session的共享。

    • 配置tomcat的session共享问题可以有三种解决方案
    • ① 以负载均衡器本身提供的session共享策略。在Nginx的nginx.conf配置文件中配置ip_hash,让一个用户的请求只在一个tomcat服务器上进行操作。

    • ② 利用web容器本身的session共享策略来配置共享。针对于weblogic这种方式还是靠普的,但是针对于tomcat这种方式存在很大的缺陷,主要因为是依靠广播机制来实现的session复制,互相复制会浪费很多带宽导致整个网络反映缓慢。官网也建议这种方式最好不要超过4台tomcat。(不推荐)

      * 使用tomcat的广播机制完成session的共享。

    步骤:

    • 修改tomcat配置文件server.xml,只需要将引擎节点中注释掉的下面这句取消注释即可:
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      使用这样方法配置的集群会将Session同步到所在网段上的所有配置了集群属性的实例上(此处讲所在网段可能不准确,是使用Membership 的address和port来区分的。tomcat集群的实例如果在Membership配置中有相同的address和port值的tomcat被分到同一个集群里边。他们的session是相互共享的,同一个session的集群被称为一个cluster。可以配置多个cluster,但是cluster和cluster之间的session是不共享的)。也就是说如果该广播地址下的所有Tomcat实例都会共享Session,那么假如有几个互不相关的集群,就可能造成Session复制浪费,所以为了避免浪费就需要对节点多做点设置了,如下:
      Xml代码:
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">   
              <Channel className="org.apache.catalina.tribes.group.GroupChannel">   
                  <Membership className="org.apache.catalina.tribes.membership.McastService"   
                      address="228.0.0.4"   
                      port="45564"   
                      frequency="500"   
                      dropTime="3000"/>   
              </Channel>   
          </Cluster> 
      加了一个Channel,里面包了个Membership,咱们要关注的就是membership的port属性和address属性,不同的集群设置不同的port值或address值,从目前的使用来看,基本上是隔离开了。

    • 修改项目的web.xml文件,只需要在web-app节点中添加这个节点<distributable/>就可以了。

    • 重启服务器
    • ③ 使用redis服务器的方式完成session的共享。(推荐)
  • 相关阅读:
    Django学习笔记第六篇--实战练习二--简易实现登录注册功能demo
    追踪溯源--抓住隐藏在NAT后面的罪犯
    Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
    Windows2008 IIS配置FTP站点
    .NET RSA解密、签名、验签
    Quartz.NET 入门
    使用Topshelf创建Windows服务
    xcode6 新建项目真机调试无法全屏
    .NET 二维码生成(ThoughtWorks.QRCode)
    iOS手机应用开发原型模板及开发流程
  • 原文地址:https://www.cnblogs.com/sun9/p/13620748.html
Copyright © 2020-2023  润新知