• 【Nginx】基本使用及配置-项目部署


    目录

    Nginx

    第一章

    1、Nginx的使用

    1、什么是Nginx

    2、什么是反向代理

    3、什么是负载均衡

    4、什么是动静分离

    2、window中配置Nginx

    1、通过Nginx进行反向代理

    2、域名解析

    3、配置服务器集群,实现负载均衡

    注意事项

    第二章

    1、在linux中部署Nginx

    1-7

    8-13

    2、在linux中配置服务器集群

    1-6

    7-11

    注意事项

    解决方案


    Nginx

    第一章

    1、nginx的使用 2、在linux下使用nginx 3、redis

    在Linux中登录mysql的两种方式

    @@@@@@@方式1:
        1、首先输入  mysql -u root -p 回车
        2、然后再输入密码
    ​
    ​
    @@@@@@方式2:
    1、输入 mysql -uroot -p123456 用户名与密码连接在一起

    连接Linux在的mysql

    windows中运行的程序如果要连接linux下的数据库,
    连接的Url不能写localhost,也不能使用///,而是指定linux的Ip
    ​
    将项目部署在linux下的tomcat,访问linux下的mysql
    ​
    @@@@@@@@linux的tomcat中运行的项目,要访问linux下的数据库,系统要求db.properties文件所有设置的连接属性必须要以jdbc.开头
    ​
    1、修改db.properties
        jdbc.url=jdbc:mysql://192.168.47.128/d113?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        jdbc.driver=com.mysql.jdbc.Driver
        jdbc.user=root
        jdbc.pwd=root
    ​
    2、修改applicationContext.xml
    ​
        
            
            
            
            
        

    1、Nginx的使用

    1、什么是Nginx
    答:nginx是一个反向代理服务器,它的作用主要是体现在三个方面:
        1、反向代理 
        2、负载均衡
        3、动静分离
    2、什么是反向代理
        正向代理:对客户端的代理就称为:正向代理 
        反向代理: 对服务器端的代理就称为:反向代理 
    3、什么是负载均衡
    通过nginx可以配置服务器集群,将原本应该由一台服务器处理的请求,分散到多台服务器共同处理
        
        假设超市促销,有1000人买东西,他们到收银台买单,此时只有一个收银员。此时,超市可以多开放一些收银窗口,这样可以
        共同处理请求,减少单个收银员的压力

    负载均衡的好处

            1、在高并发环境下,大量请求可以分散到多个服务器进行处理,减少单台服务器压力
    ​
                @@@@@@@@@高并发:大量请求同时访问
    ​
            2、配置服务器集群,可以实现高可用
                
                @@@@@@@@高可用:在集群环境下,请求是由多台服务共同处理,即使某一些服务器出现问题,其他正常的服务器依然可以正常处理请求,不会影响用户体验 
    4、什么是动静分离
     答:将静态资源(例如图片)放在静态资源服务器,将动态资源(例如:数据库的数据)放在web服务器中,数据从不同的服务器加载,
     可以提高处理效率

    2、window中配置Nginx

    1、将nginx解压缩到某一个目录(目录中不能有中文与空格)
    ​
    2、进入nginx目录,启动nginx
    ​
        @@@@@@前提条件:要在环境变量中配置jdk以及JAVA_HOME
        
        启动方式有两种:
            方式1:直接双击nginx.exe文件启动(注意:启动后没有任何界面)
                @@@@启动成功后,直接访问localhost即可访问nginx,它的默认端口号是80,可以省略不写
                @@@@如果采用这种方式启动nginx,停止时需要在进程中停止
    ​
            
            方式2:使用命令启动
                1、通过cmd进入当前nginx所在目录 
                2、执行下列命令
                    
                    start nginx ------------启动nginx
                    nginx -s stop-----------停止nginx
                    nginx -s reload---------重新加载nginx
    ​
    1、通过Nginx进行反向代理
    1、解压一台tomcat服务器(localhost:8080)
        启动服务器
    ​
    2、进入nginx/conf目录,修改Nginx.conf文件配置反向代理 
    ​
            location / {
                root   html;
                index  index.html index.htm;
            proxy_pass   http://127.0.0.1:8080;
    ​
            }
    ​
    3、重启nginx
    ​
    2、域名解析
    如果我们希望通过域名访问指定服务器可以配置域名信息
    ​
    域名解析的过程:       www.baidu.com
    ​
    ​
        @@@@@@首先是本地解析域
        当访问某一个域名时,系统会首先进行本地域名解析,将域名还原成ip地址,本地解析时,系统会查找一个系统文件
        C:\Windows\System32\drivers\etc\hosts文件
        如果在这个文件中可以找到对应的域名就会跳转到指定的Ip地址
    ​
    ​
        @@@@@@远程域名解析
        如果本地hosts文件中没有对应的域名信息,系统就会联网去查询dns服务器进行域名解析 
    ​
        DNS一般指域名系统。 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务
            通过dns解析,可以将域名转换成ip地址 
    ​
            如果要在DNS域名系统中注册,需要花钱购买域名
    ​

    配置本地域名

    @@@@@@在hosts文件中配置本地域名:
    ​
        在windows10系统中修改Hosts文件不方便,需要权限,我们可以使用工具修改
    3、配置服务器集群,实现负载均衡
    @@@@@@@@@通过Nginx配置服务器集群,实现负载均衡
    ​
    思路:配置多台tomcat服务器,在nginx中配置服务器集群,将java项目分别发布到每一台代理的服务器中,当访问项目时,请求会由每一台服务器轮流处理

    步骤

    1、创建一个tomcats文件夹,用于保存多台tomcat服务器
    ​
    2、将tomcat解压到tomcats目录中,分别命名为: t1,t2
    ​
    3、在同一台电脑中,由于多个tomcat的端口号不能冲突,所以,我们将t2的端口修改,t1不改变
        
        @@@@在实际应用中,一台tomcat服务器,就是一台独立电脑
        修改t2/conf/server.xml(需要修改5个位置)
    ​
    4、修改nginx/conf/nginx.conf文件,配置服务器集群
    ​
             upstream d113{
            server 127.0.0.1:8080 weight=5;
            server 127.0.0.1:8081 weight=5;
             }
    ​
            location / {
                root   html;
                index  index.html index.htm;
            proxy_pass   http://d113;
    ​
            }
    ​
    ​
    5、创建同一个项目打包后分别部署到两台tomcat服务器中
        首先将tomcat1的代码 打包后放到t1/webapps目录中
        再将tomcat2的代码 打包后放到t2/webapps目录中
    ​
    ​
    ​
    6、分别启动T1,T2服务器
        进入bin执行 startup.bat
    ​
    7、启动Ngin
        start nginx
    ​
    修改tomcat/conf/server.xml的五处地方
    ​
        1、 ----------------------+1
        2-3、 -------------------------------两处+1
                  
        4-5、----两处+1

    准备访问 localhost/nginx02

    大家要注意下列信息:
    ​
    1、请求会不会由多台服务器轮流处理,实现负载均衡?
    答:请求会由多台服务器轮流处理,这样可以减少单台服务器的压力 
    ​
    2、当服务器切换时,session的id会不会改变?
    答:sessionId变了同,但这样会导致一切换服务器,存储在session中的数据会全部丢失(这个问题需要解决)
    ​
    3、当t2这台服务器挂了,请求是否还可以正常工作
    答:如果集群中的一些主机挂了,请求将会由剩余的主机进行处理
    ​
    注意事项
    @@@@@@@@@配置服务器集群后,session不能改变,否则会导致切换服务器时,存储在session中的数据丢失
    解决方案有三种:
    ​
        1、配置集群中的主机session共享
    ​
        2、使用redis缓存
    ​
        3、使用ip_hash绑定主机地址 
    ​
    ​
    @@@@@@@@@@@@@配置集群中的主机session共享
    1、停止T1,T2服务器
    ​
    2、分别修改t1,t2的conf/server.xml启用服务器集群
    ​
         
    ​
    ​
    3、将t1,t2中的webapps下的项目移除
    ​
    4、修改项目的web.xml文件,配置session共享 
        然后将项目打包分别发布到t1,t2的webapps目录下
        
    ​
    5、分别启动t1,t2

    第二章

    1、在linux系统中部署nginx 2、在linux系统中通过nginx进行反向代理 3、在linux系统中通过nginx配置服务器集群 4、redis

    1、在linux中部署Nginx

    安装步骤

    1-7
    1、下载linux版的nginx  (*.tar,   *.gz   *.tar.gz)
    ​
    2、将它发布到linux下的/d113目录 
    ​
    3、由于nginx是用c语言编写的,所以要先配置c语言运行环境(联网安装四个插件)
    ​
    ​
        yum install gcc-c++
    ​
        yum install -y pcre pcre-devel
    ​
        yum install -y zlib zlib-devel
        
        yum install -y openssl openssl-devel
    ​
    ​
    4、将/d113目录的nginx压缩包解压缩到/usr/local/d113
        
        tar -xvPf /d118/nginx-1.8.1.tar.gz -C /usr/local/d118
    ​
    ​
    5、进入到 /usr/local/d113/nginx-1.8.1目录中,执行下列命令编译nginx
        
        ./configure
    ​
    6、在当前目录中,执行命令构建nginx
        
        make
    ​
    7、在当前目录中,执行命令安装nginx
    ​
        make install
    ​
        @@@@@@如果安装成功,在/usr/local目录下,会产生一个名为:nginx的目录 
    ​
    8-13
    8、进入/usr/local/nginx/sbin目录中,执行命令启动nginx
    ​
        ./nginx
    ​
    ​
    9、查看linux下的Nginx是否启动成功
    ​
        ps -ef  |  grep nginx
    ​
    ​
    ​
    10、在linux下的防火墙注册80端口
    ​
        firewall-cmd --zone=public --add-port=80/tcp --permanent
        firewall-cmd --reload
    ​
    ​
    ​
        启动: systemctl start firewalld
        关闭: systemctl stop firewalld ---------------------@@@@@@@@@@@@@@@@@@@@
    ​
        查看状态: systemctl status firewalld 
    ​
    ​
        开机禁用  : systemctl disable firewalld ----------------@@@@@@@@@@@@@@@@@@
        开机启用  : systemctl enable firewalld
    ​
    ​
    11、通过nginx对tomcat服务器进行代理 
        
        代理情况分为两种:
            
            1、linux中的nginx可以代理linux下的tomcat服务器
    ​
            2、linux中的nginx可以代理windows下的tomcat服务器
    ​
    ​
        修改/usr/local/nginx/conf/nginx.conf文件
    ​
                @@@@@@代理linux下的tomcat
                        location / {
                        root   html;
                        index  index.html index.htm;
                        proxy_pass  http://127.0.0.1:8080;
                    }
    ​
                @@@@@@代理windows下的tomcat
                        location / {
                        root   html;
                        index  index.html index.htm;
                        proxy_pass  http://windows系统下的主机ip:8080;
                    }
    ​
    12、重启nginx
        
            进入/usr/local/nginx/sbin目录
    ​
                ./nginx-------------启动nginx
    ​
                ./nginx -s stop------------停止nginx
    ​
                ./nginx -s reload----------重新启动nginx
    ​
    ​
    13、启动linux下的tomcat
    ​
            进入/usr/local/d113/tomcat/bin执行   ./startup.sh
    ​

    2、在linux中配置服务器集群

    @@@@@@@@@在linux中配置nginx代理服务器集群
    ​
        在linux下配置代理集群的思路与windows中配置基本一样

    步骤

    1-6
    1、在/usr/local/d113目录下,创建tomcats目录,用于放置多台tomcat服务器
        
        mkdir /usr/local/d113/tomcats
    ​
    2、将/d113目录中的tomcat解压缩到 /usr/local/d113/tomcats目录中
        
        tar -xvPf /d113/apache-tomcat-7.0.57.tar.gz -C /usr/local/d113/tomcats
    ​
    3、将tomcat的名称重命名为t1
    ​
        mv apache-tomcat-7.0.57/ t1
    ​
    4、将t1复制一份名为t2
        
        cp t1 -r t2
    ​
    @@@@@@@由于现在在一台主机中启动多台tomcat,它们的端口号不能冲突
    ​
    5、修改t2的端口(t1不需要修改)
        一共修改5个位置,每一个位置+1
    ​
        1、进入t2/conf
    ​
        2、编辑server.xml
    ​
    ​
    6、修改/usr/local/nginx/conf/nginx.conf
    ​
        1、vi /usr/local/nginx/conf/nginx.conf
    ​
        2、在文件中新增如下配置
    ​
                upstream d113{
                  server 127.0.0.1:8080 weight=5;
                  server 127.0.0.1:8081 weight=5;
                  ip_hash;                                   
                }
        
    ​
                location / {
                root   html;
                index  index.html index.htm;
                proxy_pass  http://d113;
            }
    ​
    7-11
    7、重启nginx
        
        1、进入  cd /usr/local/nginx/sbin
    ​
        2、执行 ./nginx -s reload
    ​
    8、启动t1,t2两台服务器
    ​
        cd /usr/local/d118/tomcats/t1/bin
        
        1、进入t1或者t2下的bin目录,执行 ./startup.sh
    ​
    ​
    9、创建项目,并且打包成war
    ​
    10、将war包发布到t1,t2目录下的webapps目录 
    ​
    11、测试代码 
    ​
        注意:tomcat服务器的 8080,8081不需要在防火墙注册,因为我们是通过nginx进入访问
    ​
        192.168.47.128/nginx04
    ​
    ​
    注意事项
    @@@@@@@@@@@@@@@@@@大家要观察下列几个信息
    ​
    1、请求会不会由多台服务器轮流留处理?
    ​
    ​
    2、session的id会不会改变?
    答:如果切换服务器,session的ID会改变
    ​
    ​
    3、如果处理请求的服务器挂了,请求会不会被其他服务器处理?
    ​
    解决方案
    @@@@@@@@@@@通过nginx配置服务器集群后,要解决sessionID改变的问题
    windows下有三种解决方案:
            
        1、配置集群中的主机session进行共享 
            这种方式只能在windows中使用,linux中无法使用
    ​
        2、使用redis进行存放
    ​
        3、使用ip_hash;
            这种方式是将客户端的IP地址与某一台tomcat服务器进行绑定,不再切换服务器
            当客户端请求,第1次到达nginx时,nginx会记录当前客户端的Ip地址,并且从集群中分配一台主机处理本次请求,
            当后续该客户端请求再次到达Nginx,nginx会判断它的ip地址,然后找到之前绑定的服务器进行处理,不会切换到其他服务器。此时,由于服务器没有切换,session也不会改变
    ​
            问题:如果处理请求的服务器挂了,只是nginx就会分配其他主机处理这个客户请求
    ​
    linux中的解决方案:
    ​
        1、使用redis进行存放
    ​
        2、使用ip_hash;
  • 相关阅读:
    01_ue4进阶_PBR材质
    推荐几款可以转换图片格式的软件
    第五章 图像处理
    【Unity编辑器扩展】| 顶部菜单栏扩展 MenuItem
    虚拟机信息巡检脚本
    24/8/6算法笔记 支持向量机
    arima模型python代码
    Linux TCP和UDP协议
    spring事务失效场景
    ImageIO的应用 (AWT和Swing初接触)
  • 原文地址:https://blog.csdn.net/m0_74187147/article/details/138047985