day09 部署bbs、nginx多站点

day09 部署bbs、nginx多站点

昨日复习

1、502 Bad Gateway

	4xx  客户端错误
	5xx  服务端错误

	1、查日志
	2、查进程
	3、查端口

	4、系统

2、只允许192.168.15.0网段访问
	
	allow 192.168.15.0/24;
	deny all;

3、开启目录索引的配置

	[root@web02 nginx]# cat autoindex_params 
	# 开启目录索引
	autoindex on;
	# 格式化文件大小
	autoindex_exact_size off;
	# 输出的格式
	autoindex_format html;
	# 使用时区
	autoindex_localtime on;

4、请描述限制链接和限制请求的区别
	限制链接是限制同时连接次数,
	限制请求则是限制限制请求次数,一秒只能请求一次等
5、限制每次只能有一个链接的配置

	1、创建空间
	
	2、配置链接数

部署bbs

1.安装MySQL数据库
	[root@db01 ~]# yum install mysql -y
2.配置django和MySQL
	[root@db01 ~]# yum install mariadb* -y
3.启动mariadb
	[root@db01 ~]# systemctl start mariadb
4.测试连接
    [root@db01 ~]# mysql
        Welcome to the MariaDB monitor.  Commands end with ; or \g.
        Your MariaDB connection id is 3
        Server version: 5.5.68-MariaDB MariaDB Server

        Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        MariaDB [(none)]> 
5.窗口远程连接用户
	MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '123456';
		Query OK, 0 rows affected (0.00 sec)
6.刷新权限
	MariaDB [(none)]> FLUSH PRIVILEGES;
			Query OK, 0 rows affected (0.00 sec)
			
7.连接数据库
	mysql -uroot  -h172.16.1.51
8.创建数据库
	create database django;
#查看数据库
	MariaDB [(none)]> show databases;
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | django             |
        | mysql              |
        | performance_schema |
        | test               |
        +--------------------+
        5 rows in set (0.00 sec)		
# 删除数据库(注意:不要随便执行)
    MariaDB [(none)]> drop database django;
    Query OK, 5 rows affected (0.00 sec)

配置django+数据库

1.上传代码到web02上
	bbs项目复制到/opt目录下
2.修改django连接数据库配置
	vim /opt/BBS18_day01/BBS18_day01/settings.py
		#修改以下内容
		ALLOWED_HOSTS = ['*']
		database{
     
		    'default': {
     		
	            'ENGINE': 'django.db.backends.mysql',			
	            'NAME': 'django',			#跟的是数据库名字
	            'HOST': '172.16.1.51',		#连接的ip,数据库在哪台机器安装就写哪台机器的ip
	            'PORT': 3306,				#端口
	            'USER': 'root',				#用户名
	            'PASSWORD': '123456',		#密码
	            'CHARSET': 'utf8'			#字符编码
		}
	}

数据库迁移

1.创建数据库迁移(必须在项目家目录下执行 /opt/BBS18_day01)
	python3 manage.py makemigrations
# 报错安装对应数据库操作包
    [root@web02 bbs]# pip3 install pymysql -i https://pypi.douban.com/simple/
    [root@web02 bbs]# pip3 install --upgrade pip
    [root@web02 bbs]# pip3 install pillow -i https://pypi.douban.com/simple/
    [root@web02 bbs]# pip3 install bs4
2.使用数据库迁移文件 迁移数据库
	python3 manage.py migrate
3.修改默认路由 设置一个开始界面
	vim BBS18_day01/urls.py 
	#在home下指定一个默认的页面,
		url('', views.home),

nginx代理django

1.配置uwsgi
	cp ../gailun/myuwsgi.ini ./
	上一层目录下的myuwsgi.ini复制过来
	vim myuwsgi.ini 
        [uwsgi]
        #上面的是跟yum源一样
        # 端口号socket django启动之后的端口好
        socket            = :8000
        # 指定项目的目录 指的是项目名称
        chdir           = /opt/BBS18_day01
        # wsgi文件路径
        wsgi-file       = BBS18_day01/wsgi.py
        # 模块wsgi路径 和外面的名字一样
        module          = BBS18_day01.wsgi
        # 是否开启master进程
        master          = true
        # 工作进程的最大数目
        processes       = 4
        # 结束后是否清理文件
        vacuum          = true
    

2.配置nginx+uwsgi
/etc/nginx/conf.d/bbs.conf
[root@web02 conf.d]# cat bbs.conf 
    # 配置一个网站
    server {
     
    # 监听的端口
    listen 80;
    # 配置域名
    server_name bbs.test.com;
    # 配置路径
    location / {
     
    # 加载Nginx代理uwsgi的配置项 
    include uwsgi_params;
    # 指定uwsgi的访问地址
    uwsgi_pass 127.0.0.1:8000;
    # 连接uwsgi的超时时间
    uwsgi_read_timeout 2;
    # 自定义uwsgi代理项目的路径及配置项
    uwsgi_param UWSGI_SCRIPT BBS18_day01.wsgi;
    # 指定python项目的路径
    uwsgi_param UWSGI_CHDIR /opt/BBS18_day01;
    # 索引文件
    index  index.html index.htm;
    # 客户端上传文件的最大值
    client_max_body_size 35m;
    	}
    }
	

负载均衡

1.什么是负载均衡
	将请求平均的分配给后端服务器
2.为什么要使用负载均衡
   当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾

    往往我们接触的最多的是SLB(Server Load Balance)负载均衡,实现最多的也是SLB、那么SLB它的调度节点和服务节点通常是在一个地域里面。那么它在这个小的逻辑地域里面决定了他对部分服务的实时性、响应性是非常好的。

    所以说当海量用户请求过来以后,它同样是请求调度节点,调度节点将用户的请求转发给后端对应的服务节点,服务节点处理完请求后在转发给调度节点,调度节点最后响应给用户节点。这样也能实现一个均衡的作用,那么Nginx则是一个典型的SLB
3.负责均衡类型
	3.1.四层负载均衡
所谓四层负载均衡指的是OSI七层模型中的传输层,那么传输层Nginx已经能支持TCP/IP的控制,所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载均衡,那么它的好处是性能非常快、只需要底层进行应用处理,而不需要进行一些复杂的逻辑
 
	3.2.七层负载均衡
七层负载均衡它是在应用层,那么它可以完成很多应用方面的协议请求,比如我们说的http应用的负载均衡,它可以实现http信息的改写、头信息的改写、安全应用规则控制、URL匹配规则控制、以及转发、rewrite等等的规则,所以在应用层的服务里面,我们可以做的内容就更多,那么Nginx则是一个典型的七层负载均衡SLB
 
	3.3.四层和七层负载均衡的区别
四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包则是在最顶层进行分发、由此可以看出,七层负载均衡效率没有四负载均衡高。
但七层负载均衡更贴近于服务,如:http协议就是七层协议,我们可以用Nginx可以作会话保持,URL路径规则匹配、head头改写等等,这些是四层负载均衡无法实现的。
注意:四层负载均衡不识别域名,七层负载均衡识别域名

部署七层负载均衡理论

1.创建一个IP连接池(存放web服务器的IP)
	upstream:只能配置在http模块
	upstream [连接池的名称] {
     
				
					[存放的IP]
					server [ip1];
					server [ip2];
				
				}
		
2.往IP连接池中丢请求
	proxy_pass http://[连接池的名称];
	
	

部署七层负载均衡实际

1.安装nginx (均衡负载机器lb01)
	yum install nginx -y
2.简化nginx.conf
 user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
     
    worker_connections 1024;
}

http {
     
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

}
3.创建一个game.conf
	先创建连接池game
	server 存放的ip名字
	新的server 是一个网站
		server_name 
		listen
		
		location /{
     
			proxy_pass http://连接池名字
		}
---------------------------------------------------------------
cat /etc/nginx/conf.d/game.conf         #lb01 均衡负载的机器
upstream game{
     
        server 172.16.1.8:80;
        server 172.16.1.7:80;
        server 172.16.1.9:80;
}
server {
     
        server_name cjml.com;
        listen 80;

        location /{
     
                proxy_pass http://game;
        }
}
---------------------------------------------------------------
对应的机器修改下载nginx 并修改vim /etc/nginx/conf.d/game.conf 

你可能感兴趣的:(互联网架构,nginx,运维)