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

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

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.pwd}"/>
    </bean>

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、<Server port="8005" shutdown="SHUTDOWN"> ----------------------+1
	2-3、 <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />-------------------------------两处+1
              
    4-5、<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />----两处+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启用服务器集群

	 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>


3、将t1,t2中的webapps下的项目移除

4、修改项目的web.xml文件,配置session共享 
	然后将项目打包分别发布到t1,t2的webapps目录下
	<distributable/>

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;
#学习##学习搭子##学习指引##学习方法##nginx#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务