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]
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
4 、请描述限制链接和限制请求的区别
限制链接是限制同时连接次数,
限制请求则是限制限制请求次数,一秒只能请求一次等
5 、限制每次只能有一个链接的配置
1 、创建空间
2 、配置链接数
部署bbs
1 .安装MySQL数据库
[ root@db01 ~]
2 .配置django和MySQL
[ root@db01 ~]
3 .启动mariadb
[ root@db01 ~]
4 .测试连接
[ root@db01 ~]
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' ,
'PORT' : 3306 ,
'USER' : 'root' ,
'PASSWORD' : '123456' ,
'CHARSET' : 'utf8'
}
}
数据库迁移
1 .创建数据库迁移( 必须在项目家目录下执行 /opt/BBS18_day01)
python3 manage.py makemigrations
[ root@web02 bbs]
[ root@web02 bbs]
[ root@web02 bbs]
[ root@web02 bbs]
2 .使用数据库迁移文件 迁移数据库
python3 manage.py migrate
3 .修改默认路由 设置一个开始界面
vim BBS18_day01/urls.py
url( '' , views.home) ,
nginx代理django
1 .配置uwsgi
cp .. /gailun/myuwsgi.ini ./
上一层目录下的myuwsgi.ini复制过来
vim myuwsgi.ini
[ uwsgi]
socket = :8000
chdir = /opt/BBS18_day01
wsgi-file = BBS18_day01/wsgi.py
module = BBS18_day01.wsgi
master = true
processes = 4
vacuum = true
2 .配置nginx+uwsgi
/etc/nginx/conf.d/bbs.conf
[ root@web02 conf.d]
server {
listen 80 ;
server_name bbs.test.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0 .0.1:8000;
uwsgi_read_timeout 2 ;
uwsgi_param UWSGI_SCRIPT BBS18_day01.wsgi;
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;
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
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