day09搭建均衡负载和搭建BBS博客系统

搭建BBS博客系统

本次搭建bbs用到的技术

  1. 需要用到的:
  2. 1Nginx+Django
  3. 2Django+MySQL

环境准备

主机 IP 身份
db01 172.16.1.51 数据库
web02 172.16.1.8 web服务端
web03 172.16.1.9 web服务端

1、安装MySQL数据库

  1. 1)、安装mariadb所有的依赖包
  2. [root@db01 ~]# yum install mariadb* -y
  3. [root@db01 ~]# systemctl restart mariadb # 启动mariadb,mariadb也是数据库
  4. [root@db01 ~]# mysql # 测试成功
  5. 2)、创建远程链接用户
  6. # 修改密码
  7. MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '123456';
  8. # 刷新权限
  9. MariaDB [(none)]> FLUSH PRIVILEGES;
  10. 3)、 创建一个数据库,打开数据库软件并连接
  11. [root@db01 ~]# mysql -uroot -h172.16.1.51 # 连接数据库
  12. MariaDB [(none)]> create database django; # 创建名为django数据库
  13. 4)、查看数据库
  14. MariaDB [(none)]> show databases;
  15. 拓展:删除数据库(但是不要执行)
  16. MariaDB [(none)]> drop database django;

2、配置Django + 数据库

  1. 1)、上传代码
  2. 上传BBS18_day01代码包
  3. 2)、修改配置
  4. [root@web03 opt]# mv BBS18_day01 bbs # 修改名字
  5. [root@web03 bbs]# pwd
  6. /opt/bbs
  7. [root@web03 bbs]# vim BBS18_day01/settings.py # 修改配置
  8. -----------------------------------------------------------------------------------------------------
  9. # 如果加*,只能本地访问
  10. ALLOWED_HOSTS = ['*'] # 加上*号
  11. 'default': {
  12. 'ENGINE': 'django.db.backends.mysql',
  13. 'NAME': 'django', # 数据库名称
  14. 'HOST': '172.16.1.51', # 数据库IP
  15. 'PORT': 3306, # 端口
  16. 'USER': 'root', # 用户
  17. 'PASSWORD': '123456', # 密码 :这里要加上单引号''
  18. 'CHARSET': 'utf8'
  19. }
  20. }
  21. -----------------------------------------------------------------------------------------------------
  22. 3)、数据库迁移
  23. 1. 安装对应数据库操作包
  24. [root@web03 bbs]# pwd
  25. /opt/bbs
  26. [root@web03 bbs]# pip3 install pymysql -i https://pypi.douban.com/simple/
  27. [root@web03 bbs]# pip3 install --upgrade pip
  28. [root@web03 bbs]# pip3 install pillow -i https://pypi.douban.com/simple/
  29. [root@web03 bbs]# pip3 install bs4
  30. 2. 创建数据库迁移文件
  31. [root@web03 bbs]# python3 manage.py makemigrations
  32. 3. 使用数据库迁移文件迁移数据库
  33. [root@web03 bbs]# python3 manage.py migrate
  34. [root@web03 bbs]# python3 manage.py runserver 0.0.0.0:8000 # 测试是否开启
  35. 4. 添加一个默认页面
  36. [root@web03 bbs]# pwd
  37. /opt/bbs
  38. [root@web03 bbs]# vim BBS18_day01/urls.py # 添加一行
  39. url('', views.home),
  40. [root@web03 bbs]# python3 manage.py runserver 0.0.0.0:8000 # 重新启动

3、Nginx 代理 Django

  1. 1)、配置uwsgi
  2. [root@web03 ~]# cd /opt/bbs
  3. [root@web03 bbs]# cp /opt/linux/myweb_uwsgi.ini /opt/bbs/ # 复制过来
  4. [root@web03 bbs]# vim myweb_uwsgi.ini
  5. -----------------------------------------------------------------------------------------------------
  6. [uwsgi]
  7. # 端口号
  8. socket = :8000
  9. # 指定项目的目录
  10. chdir = /opt/bbs
  11. # wsgi文件路径
  12. wsgi-file = BBS18_day01/wsgi.py
  13. # 模块wsgi路径
  14. module = BBS18_day01.wsgi
  15. # 是否开启master进程
  16. master = true
  17. # 工作进程的最大数目
  18. processes = 4
  19. # 结束后是否清理文件
  20. vacuum = true
  21. -----------------------------------------------------------------------------------------------------
  22. [root@web03 bbs]# uwsgi -d --ini myweb_uwsgi.ini # 后台运行
  23. [root@web03 bbs]# ps -ef | grep uwsgi # 查看一下
  24. [root@web03 conf.d]# netstat -nutlp # 查看下端口
  25. 2)、配置Nginx + uwsgi
  26. [root@web03 conf.d]# cd /etc/nginx/conf.d/
  27. [root@web03 conf.d]# cp python.conf bbs.conf # 复制配置文件并改名
  28. [root@web03 conf.d]# vim bbs.conf # 编写bbs的配置文件
  29. [root@web03 conf.d]# nginx -t
  30. [root@web03 conf.d]# systemctl restart nginx
  31. -----------------------------------------------------------------------------------------------------
  32. # 配置一个网站
  33. server {
  34. # 监听端口
  35. listen 80;
  36. # 配置域名
  37. server_name bbs.test.com;
  38. # 配置域名路径
  39. location / {
  40. # 加载nginx代理uwsgi的配置项
  41. include uwsgi_params;
  42. # 指定uwsgi的访问地址
  43. uwsgi_pass 127.0.0.1:8000;
  44. # uwsgi的超时时间
  45. uwsgi_read_timeout 2;
  46. # 自定义uwsgi代理项目的路径以及配置项
  47. uwsgi_param UWSGI_SCRIPT BBS18_day01.wsgi;
  48. # 指定Python项目的路径
  49. uwsgi_param UWSGI_CHDIR /opt/bbs:;
  50. # 索引文件
  51. index index.html index.htm;
  52. # 客户端上传文件的最大值
  53. client_max_body_size 35m;
  54. }
  55. }
  56. -----------------------------------------------------------------------------------------------------
  57. 3)、在c盘域名解析添加
  58. 192.168.15.9 bbs.test.com

部署负载均衡

简介

  1. 1、什么是负载均衡
  2. 将请求平均的分配给后端服务器
  3. 2、为什么要使用负载均衡
  4. 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
  5. 往往我们接触的最多的是SLB(Server Load Balance)负载均衡,实现最多的也是SLB、那么SLB它的调度节点和服务节点通常是在一个地域里面。那么它在这个小的逻辑地域里面决定了他对部分服务的实时性、响应性是非常好的。
  6. 所以说当海量用户请求过来以后,它同样是请求调度节点,调度节点将用户的请求转发给后端对应的服务节点,服务节点处理完请求后在转发给调度节点,调度节点最后响应给用户节点。这样也能实现一个均衡的作用,那么Nginx则是一个典型的SLB
  7. 3、负载均衡的叫法
  8. 1.负载均衡
  9. 2.负载
  10. 3.LB
  11. 4.Load Balance
  12. 4、公有云常见的负载均衡
  13. 1.SLB #阿里云产品
  14. 2.LB #青云产品
  15. 3.CLB #腾讯云产品
  16. 4.ULB #Ucloud产品
  17. 5、负载均衡的软件
  18. 1.nginx
  19. 2.Haproxy
  20. 3.LVS

负载均衡类型

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

环境准备

主机 IP 身份
lb01 172.16.1.5 负载均衡
web01 172.16.1.7 web服务端
web03 172.16.1.9 web服务端

部署负载均衡

  1. 1、安装Nginx
  2. [root@lb01 ~]# yum install nginx -y
  3. 2、简化nginx.conf文件
  4. [root@lb01 ~]# vim /etc/nginx/nginx.conf
  5. ---------------------------------------------------------------------------------------------------
  6. user nginx;
  7. worker_processes auto;
  8. error_log /var/log/nginx/error.log;
  9. pid /run/nginx.pid;
  10. # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
  11. include /usr/share/nginx/modules/*.conf;
  12. events {
  13. worker_connections 1024;
  14. }
  15. http {
  16. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  17. '$status $body_bytes_sent "$http_referer" '
  18. '"$http_user_agent" "$http_x_forwarded_for"';
  19. access_log /var/log/nginx/access.log main;
  20. sendfile on;
  21. tcp_nopush on;
  22. tcp_nodelay on;
  23. keepalive_timeout 65;
  24. types_hash_max_size 4096;
  25. include /etc/nginx/mime.types;
  26. default_type application/octet-stream;
  27. include /etc/nginx/conf.d/*.conf;
  28. ---------------------------------------------------------------------------------------------------
  29. 3、配置负载均衡
  30. [root@lb01 ~]# cd /etc/nginx/conf.d/
  31. [root@lb01 conf.d]# vim mqq.conf
  32. [root@lb01 conf.d]# nginx -t
  33. [root@lb01 conf.d]# systemctl restart nginx
  34. ---------------------------------------------------------------------------------------------------
  35. upstream mqq {
  36. server 172.16.1.7:80;
  37. server 172.16.1.8:80;
  38. }
  39. server {
  40. server_name mqq.test.com;
  41. listen 80;
  42. location / {
  43. proxy_pass http://mqq;
  44. }
  45. }
  46. ---------------------------------------------------------------------------------------------------
  47. 4、测试
  48. [root@web01 ~]# tail -f /var/log/nginx/error.log
  49. [root@web02 conf.d]# tail -f /var/log/nginx/error.log # 如果两个都有日志的话,代表负载均衡搭建完毕

配置详解

  1. 1、创建一个IP连接池(存放web服务器的IP的)
  2. upstream
  3. 只能配置在:http
  4. 格式:
  5. upstream [连接池的名称] {
  6. [存放的IP]
  7. server [ip1];
  8. server [ip2];
  9. }
  10. 2、往IP连接池中丢请求。
  11. proxy_pass http://[连接池的名称];

day09搭建均衡负载和搭建BBS博客系统的更多相关文章

  1. 用 node.js 的 hexo 框架搭建一个支持 markdown 的静态博客系统

    1,Hexo如何在线可视化写博客:   可以试试这款插件 hexo-admin. 2,马克飞象:   一个非常好的 markdown 编辑器. 3,Hexo博客文章设置密码的方法: 首先,在Hexo中 ...

  2. 搭建BBS博客系统

    目录 一:搭建BBS项目 1.部署数据库 2.启动数据库 3.进入数据库 4.远程连接MySQL数据 5.pycham连接Mysql 二:开始部署BBS 1.上传代码 2.数据库迁移 3.删除文件 4 ...

  3. 讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  4. 基于开源博客系统(jpress)搭建网站

    基于开源博客系统(jpress)搭建网站 JPress 使用 Java8 开发,基于流行的JFinal和Jboot框架. 目前JPress已经内置的文章和页面其实是两个模块,可以移除和新增其他模块,因 ...

  5. 基于开源博客系统(mblog)搭建网站

    基于开源博客系统(mblog)搭建网站 上一章讲了基于jpress部署的博客系统,这一章了解一下 mblog这个开源的基于springboot的博客系统,相比与jpress 的热度fork数量要少一些 ...

  6. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)上,前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

  7. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

    前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...

  8. 使用Jekyll搭建免费的Github Pages个人博客

    一.Git 1.Git概述 Git is a free and open source distributed version control system designed to handle ev ...

  9. 【干货】利用MVC5+EF6搭建博客系统(四)(上)前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

随机推荐

  1. vscode插件集合整理

    针对PEPE8进行代码规范提示,安装flake8之后写代码的时候编辑器就会提示哪里出错,代码格式不规范也会提示,具体安装方式如下: 1.pip install flake8 2.安装flake8成功后 ...

  2. bash执行顺序:alias --> function --> builtin --> program

    linux bash的执行顺序如下所示: 先 alias --> function --> builtin --> program 后 验证过程: 1,在bash shell中有内置 ...

  3. hdu 5093 Battle ships(二分图最大匹配)

    题意: M*N的矩阵,每个格子上是三个之一:*.o.#.                     (1 <= m, n <= 50) *:海洋,战船可以停在上面.      o:浮冰,战船 ...

  4. 【java+selenium3】线程休眠方法 (六)

    一.线程休眠的方法   Thread -- sleep 调用方式: Thread.sleep(long millis) 建议:不推荐使用此方式来等待,因为元素的实际渲染时间未知,长时间的等待则浪费的时 ...

  5. C 函数指针语法总结

    C 函数指针语法总结 函数指针 定义 每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针. 注意:函数指针的本质是一个指针变量,且指针指向的函数的入口地址. 语法 返 ...

  6. Python3使用request/urllib库重定向问题

    禁止自动重定向 python3的urllib.request模块发http请求的时候,如果服务器响应30x会自动跟随重定向,返回的结果是重定向后的最终结果而不是30x的响应结果. request是靠H ...

  7. string类运用:特殊的翻译

    特殊的翻译 小明的工作是对一串英语字符进行特殊的翻译:当出现连续且相同的小写字母时,须替换成该字母的大写形式,在大写字母的后面紧跟该小写字母此次连续出现的个数:与此同时,把连续的小写字母串的左侧和右侧 ...

  8. 【从头到脚品读 Linux 0.11 源码】第一回 最开始的两行代码

    从这一篇开始,您就将跟着我一起进入这操作系统的梦幻之旅! 别担心,每一章的内容会非常的少,而且你也不要抱着很大的负担去学习,只需要像读小说一样,跟着我一章一章读下去就好. 话不多说,直奔主题.当你按下 ...

  9. [atARC084F]XorShift

    如果异或变为加法和减法,那么根据扩欧,$k$合法当且仅当$k|\gcd_{i=1}^{n}a_{i}$ 换一种方式定义约数:$x$是$y$的约数当且仅当存在$p_{i}\in \{0,1\}$使得$\ ...

  10. [atACL001F]Center Rearranging

    有一个(比较显然又有点假的)结论:最优方案中(若存在),每一个数(指$3n$个)最多被移动1次 先$o(n^{2})$枚举移动到队首和队尾的操作次数(即目标状态的一个前缀和后缀),判定能否合法 首先, ...