互联网框架day03(nginx、maven继承)

1.nginx的安装解压(1.9.9)
http://nginx.org/download/

通过cmd运行。首先进入nigix所在的目录,如下图所示:

三个命令:(在 CMD 中执行)

首先要切换到nginx的目录中

启动:start nginx.exe

停止:nginx.exe -s stop

重新加载:nginx.exe -s reload

在这里插入图片描述
若nginx.exe启动一闪而过,则需要修改nginx.conf中的默认端口,说明默认的端口与系统中的服务端口有冲突。

使用 http://localhost:端口

那么怎么知道自己的nginx是否启动成功:打开你的管理器,如在进程中看到两个nginx说明启动成功。
在这里插入图片描述
1.1. Nginx的配置
在这里插入图片描述

目录结构:
在这里插入图片描述
可以添加一个项目在此文件夹中,里边包含静态文件,css,js,html,有nginx管理,实现动态分离
conf:启动加载的核心配置文件nginx.congf是手动编辑的,其它的副本,back都是nginx.conf的测试版文件

logs:error.log:输出启动停止运行的各种错误信息,定位问题的首要观察的文件
access.log:运行的访问日志,通过什么浏览器,http协议访问的nginx,nginx转发了哪些内容
1.3启动和停止
启动:start nginx.exe
观察任务管理器是否有两个进程
在这里插入图片描述
master:主进程,管理nginx其它工作进程的唯一
workers:工作进程,主要负责并发的处理
默认配置workers的数量是1
停止:nginx.exe -s stop
重启nginx需要输入停止指令,必须确认是否正确停止,看任务管理器nginx进程是否全部消失,如果不能正确停止,就运行start,会报错

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

通过浏览器 http://www.os.com/user/query/point?userId=1能够访问到一个后台服务器tomcat启动在8090端口的

#入门案例www.os.com
	server{
		#三个关键字  listen  多个server监听同一个端口
		#一旦nginx监听了80端口,其它软件不能占用了80
		listen 80;
		#server_name  请求域名  request Host的头中的域名
		#当前server虚拟服务器在满足80端口访问监听后判断域名是否满足条件,不同的servier不能同时监听一个端口一个域名
		server_name www.os.com;
		#location 定义处理请求的具体过程
		#将当前请求转发给127.0.0.1:8090 的tomcat容器
		#"/" location 匹配域名端口后的url地址字符串
		# / 的意思是任何字符串都能匹配上
		#http:www.os.com/user/query/points?userId=1
		location / {
			#定义转发和符在均衡的逻辑
			proxy_pass http://127.0.0.1:8090/;
		}
	}

确定:http://www.os.com/先要访问到nginx才有server的作用在这里插入图片描述
配置host文件:
在这里插入图片描述
在这里插入图片描述

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

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

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

在这里插入图片描述

2.3 可以在service层编写一些标识的字符串(端口号在pom文件里修改)
在这里插入图片描述

3.负载均衡的配置
在这里插入图片描述
在这里插入图片描述

#配置一个后端服务器的内存list对象
	#对象的变量名称叫做虚拟域名
	upstream orderuserserver{
		#根据后端服务器的访问地址编辑元素的内容
		server 127.0.0.1:8090;
		server 127.0.0.1:8091;
		server 127.0.0.1:8092;
	}

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

在这里插入图片描述
在集群中容易出现故障,对于长时间不能恢复的集群节点,可以采用down的方式处理(宕机)
nginx.conf配置

#入门案例www.os.com
	#配置一个后端服务器的内存list对象
	#对象的变量名称叫做虚拟域名
	upstream orderuserserver{
		#根据后端服务器的访问地址编辑元素的内容  以及权重编辑
		server 127.0.0.1:8090 weight=1;
		server 127.0.0.1:8091 weight=2;
		server 127.0.0.1:8092 down;
	}

	server{
		#三个关键字  listen  多个server监听同一个端口
		#一旦nginx监听了80端口,其它软件不能占用了80
		listen 80;
		#server_name  请求域名  request Host的头中的域名
		#当前server虚拟服务器在满足80端口访问监听后判断域名是否满足条件,不同的servier不能同时监听一个端口一个域名
		server_name www.os.com;
		#location 定义处理请求的具体过程
		#将当前请求转发给127.0.0.1:8090 的tomcat容器
		#"/" location 匹配域名端口后的url地址字符串
		# / 的意思是任何字符串都能匹配上
		#http:www.os.com/user/query/points?userId=1
		location / {
			#定义转发和符在均衡的逻辑
			#proxy_pass http://127.0.0.1:8090/;
			proxy_pass http://orderuserserver/;
		}
		
		#location /image{
		#	proxy_pass http://10.9.39.13:8091/
		#}
		#location =/haha{}
		#location ~.png${}
	}

3.3 IP黏着
session的集群共享问题(用户登录状态访问)
IP黏着的解决问题
session无法在集群中共享
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
http://www.image.com/1.jpg
在这里插入图片描述
在这里插入图片描述
root表示拼接的实际根目录文件夹
index表示默认的访问资源
在这里插入图片描述

#静态文件的处理
	server{
		listen 80;
		server_name www.image.com;
		#/1.jpg
		location /{
			#需要引入一个关键字指定静态文件的根目录
			#D://根目录
			root D://;
			#表示默认的访问资源www.image.com访问时
			#D://k.html
			index k.html;
		}
	}

2.动静分离处理订单用户demo中所有的静态文件
2.1动静分离的实际应用
由于nginx可以处理静态文件,后端服务器可以不再做静态资源的维护工作,相同的静态文件,提取到nginx来处理
easymall就有 在nginx的根目录下的easymall的文件夹有静态文件

修改nginx配置
在这里插入图片描述
在这里插入图片描述
配置文件:

server {
		listen 80;
		server_name www.ssm.com;
		location /user{
			proxy_pass http://orderuserserver/user;
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
		}
		location /order{
			proxy_pass http://orderuserserver/order;
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
		}
		location /{
			#相对路径easymall 相当于c:\\
			root easymall;
			index index.html;
		}


	}

在这里插入图片描述
在这里插入图片描述
nginx.conf的完整配置

#入门案例www.os.com
	#配置一个后端服务器的内存list对象
	#对象的变量名称叫做虚拟域名
	upstream orderuserserver{
		#根据后端服务器的访问地址编辑元素的内容  以及权重编辑
		#ip_hash;
		server 127.0.0.1:8090 weight=1;
		server 127.0.0.1:8091 weight=2;
		server 127.0.0.1:8092 down;
	}

	server {
		listen 80;
		server_name www.ssm.com;
		location /user{
			proxy_pass http://orderuserserver/user;
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
		}
		location /order{
			proxy_pass http://orderuserserver/order;
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
		}
		location /{
			#相对路径easymall 相当于c:\\
			root easymall;
			index index.html;
		}


	}









	
	server{
		#三个关键字  listen  多个server监听同一个端口
		#一旦nginx监听了80端口,其它软件不能占用了80
		listen 80;
		#server_name  请求域名  request Host的头中的域名
		#当前server虚拟服务器在满足80端口访问监听后判断域名是否满足条件,不同的servier不能同时监听一个端口一个域名
		server_name www.os.com;
		#location 定义处理请求的具体过程
		#将当前请求转发给127.0.0.1:8090 的tomcat容器
		#"/" location 匹配域名端口后的url地址字符串
		# / 的意思是任何字符串都能匹配上
		#http:www.os.com/user/query/points?userId=1
		location / {
			#定义转发和符在均衡的逻辑
			#proxy_pass http://127.0.0.1:8090/;
			proxy_pass http://orderuserserver/;
		}
		
		#location /image{
		#	proxy_pass http://10.9.39.13:8091/
		#}
		#location =/haha{}
		#location ~.png${}
	}

	#静态文件的处理
	server{
		listen 80;
		server_name www.image.com;
		#/1.jpg
		location /{
			#需要引入一个关键字指定静态文件的根目录
			#D://根目录
			root D://;
			#表示默认的访问资源www.image.com访问时
			#D://k.html
			index k.html;
		}
	}

项目的拆分
2.1横向拆分
在这里插入图片描述
在这里插入图片描述
案例:
demo2项目中有一个domain包,将这个包拆分到另一个maven工程的项目中,打成war包,然后引入demo2工程的pom文件中,达到的功能不变,实现了项目的横向拆分(打成war包之后,此工程可以删除,保证war包存在即可)
在这里插入图片描述

在这里插入图片描述
纵向拆分解决了两个问题
系统间的通信问题(代码解决)
在这里插入图片描述
做纵向拆分的结果是实现了一个小的微服务集群
ssm框架会导致纵向拆分的功能的系统越来越多,重复的配置就越多,独立的配置环境(需要框架解决-------springboot)
一个简单的案例:
pom文件配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.tedu</groupId>
  <artifactId>springboot-mydemo1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>springboot-mydemo1</name>
  <url>http://maven.apache.org</url>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
	</parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
  	<dependency>
  		<groupId>org.springframework.boot</groupId>
  		<artifactId>spring-boot-starter-web</artifactId>
  		
  	</dependency>
  
  
    <!-- <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency> -->
  </dependencies>
</project>

两层架构

package cn.tedu.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.tedu.service.HelloService;

@RestController
public class HelloController {
	@Autowired
	private HelloService helloService;
	//���Է��������Ʋ��ҵ���
	@RequestMapping("hello")
	public String sayHello(String name){
		return "CONTROLLER:"+helloService.sayHello(name);
	}
}

package cn.tedu.service;

import org.springframework.stereotype.Service;


@Service
public class HelloService {
	//ҵ�����־ò�
	public String sayHello(String name) {
		
		return "service hi"+ name;
	}

}

启动项:

package cn.tedu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class StarterWeb {
	public static void main(String[] args) {
		SpringApplication.run(StarterWeb.class, args);
	}
}

控制台效果:

. ____ _ __ _ _
/\ / __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ’ / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
’ |
| .__|| ||| |__, | / / / /
=|_|======|/=////
:: Spring Boot :: (v1.5.9.RELEASE)

页面效果:
在这里插入图片描述

maven的继承
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值