Nginx概述

Nginx是一款轻量级的HTTP服务器,采用事件驱动和异步非阻塞处理方式框架,这让其具有极好的IO性能,市场用于服务端的反向代理和负载均衡

Nginx优点

  • 高并发连接:官方测试Nginx能够支撑5万并发连接,实际生产环境中更可以支撑2~4万并发连接数。

  • 内存消耗少:在主流的服务器中Nginx目前是内存消耗最小

  • 免费使用可以商业化:开源

  • 配置文件简单:网络和程序配置通俗易懂

环境搭建

Ubuntu下载nginx配置(下载最新版nginx)

http://nginx.org/en/linux_packages.html#stable (nginx官网)

  • 对于Ubuntu,请将以下内容追加到/etc/apt/source.list文件的末尾

  1. deb http://nginx.org/packages/ubuntu/ codename nginx
    deb-src http://nginx.org/packages/ubuntu/ codename nginx

codename为Ubuntu版本

Version codename Supported Platforms
16.04 xenial x86_64, i386, ppc64el, aarch64/arm64
17.10 artful x86_64, i386
18.04 bionic x86_64
  • 下载nginx

  1. apt-get update
  2. apt-get install nginx
  3.  
  4. 推荐:http://nginx.org/en/download.html 选择Stable version稳定版下载
  • 下载所需密钥,在/etc/apt目录下

  1. wget http://nginx.org/keys/nginx_signing.key
  2. sudo apt-key add nginx_signing.key
  • 在同级目录下解压安装其他扩展库,然后配置,编译安装:

    pcre,用于解析正则

    1. https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz

    zlib,用于压缩文件

    1. http://www.zlib.net/zlib-1.2.11.tar.gz

    openssl,用于支持https协议(这个是github的源码,在他releases已发布版本中找一个旧一点的版本如1.01右键复制链接)

    1. https://github.com/openssl/openssl

    进入nginx目录,进行编译配置

    1. ./configure
      --prefix=/usr/local/nginx
      --with-http_ssl_module
      --with-http_flv_module
      --with-http_stub_status_module
      --with-http_gzip_static_module
      --with-pcre=../pcre-8.42
      --with-zlib=../zlib-1.2.
      --with-openssl=../openssl-OpenSSL_1_0_1r

    安装

    1. make && sudo make install

    打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功

    1. sudo /usr/local/nginx/sbin/nginx

nginx命令

  1. sudu apt-get update
  2. # 更新

  3. sudo apt-get install nginx
  4. # 下载
  5. sudo apt-get remove nginx nginx-common
  6. # 卸载删除除了配置文件以外的所有文件。

  7. sudo apt-get purge nginx nginx-common
  8. # 卸载所有东东,包括删除配置文件。

  9. sudo apt-get autoremove
  10. # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。

  11. sudo apt-get remove nginx-full nginx-common
  12. #卸载删除两个主要的包。
  13. nginx -V
  14. # 查看版本 .14稳定版
  15. nginx
  16. # 运行
  17. killall nginx
  18. # 终止运行

此时浏览器打开 服务器公网ip 可以看到nginx欢迎页面

uwsgi概述

web服务器和web框架

web服务器是用来接收客户端请求,建立连接,转发响应的程序 web框架是处理业务逻辑 举例: web服务器:nginx web框架:flask

uWSGI和WSGI

WSGI:通信协议 uWSGI:属于WSGI协议的web服务器(nginx、nginx都是web服务器)

为什么需要nginx+uWSGI

利用nginx可以实现反向代理的能力,可以实现分布式服务器功能可以解决网络访问量过大的问题。

安装 pip

一般默认Ubuntu服务器自带python3.5但是却没有自带pip

  1. sudo apt-get install python3-pip

安装 uwsgi

  1. pip3 install uwsgi

Django自带wsgi为什么不直接使用,Django自带wsgi只是为了开发使用的是单进程的,不适合上线使用。

在项目根目录(manage.py同目录)下创建 uwsgi.ini 文件

uwsgi官网

  1. [uwsgi]
  2. socket = 127.0.0.1:
  3. chdir = /home/foobar/myproject/
  4. wsgi-file = myproject/wsgi.py
  5. processes =
  6. threads =
  7. stats = 127.0.0.1:

在etc/nginx/conf.d/default.conf 配置nginx

将其中如下代码注释

  1. #location / {
  2. # root /usr/share/nginx/html;
  3. # index index.html index.htm;
  4. #}

替换为

  1. location / {
  2. include uwsgi_params;
  3. uwsgi_pass 127.0.0.1:;
  4. }
  5. 运行Django程序
  • 检查项目异常

  1. python3 manage.py runserver
  • 下载项目所依赖包裹

  • 安装数据库

  1. sudo apt-get install mysql-server
  1. #期间设置数据库密码
  1. DEBUG = FALSE
  2. ALLOWED_HOSTS = ['*']
  1. + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

数据库常用命令

  1. mysql -u root -p
  2. # 登录数据库
  3. show databases;
  4. # 查看数据库
  5. CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  6. # 创建数据库
  7. quit;
  8. # 退出数据库

执行迁移

  1. python manage.py migrate

uwsgi运行

  1. uwsgi uwsgi.ini

到此服务器部署成功,接下来就是设置静态文件了。

设置静态文件

因为此时服务器路由统一由nginx管理,所以我们需要进行配置nginx,etc/nginx/conf.d/default.conf

  1. location /static {
  2. autoindex on;
  3. alias /home/ydh/<项目根目录>/static;
  4. }

将项目中的文件同一管理

  • 在项目settion.py中设置STATIC_ROOT 静态文件根目录

  1. STATIC_ROOT = os.path.join(BASE_DIR,'static')
  • 在项目根目录创建 static

  • 执行命令

  1. python3 manage.py collectstatic
  2. # 将静态文件收集到STATIC_ROOT

重启nginx

ubuntu16.4+nginx+uwsgi+Django 部署上线的更多相关文章

  1. Nginx+uWSGI+Django部署web服务器

    目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...

  2. nginx+uwsgi+django 部署原理

    python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...

  3. nginx+uwsgi+django部署流程

    当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...

  4. 10、nginx+uwsgi+django部署(动静分离)

    10.1.说明: 1.介绍: 创建Django项目,可以通过 pyhon3 manage.py runserver 0.0.0.0:8080 & 命令更方便地调试程序,但是如果当一个项目完成了 ...

  5. 在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

    网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依 ...

  6. Ubuntu-18.04.2系统 Nginx+uWSGI+Django 部署生产环境

    首先准备环境: 1.使用虚拟机 VMware Workstation Pro (也可以不用),安装Ubuntu-18.04.2系统 开始搭建环境 (因为ubuntu18.4.2集成了python3.6 ...

  7. ubantu+nginx+uwsgi+django部署

    1.更新ubantu的apt apt-get update 必要时候更新系统:      apt-get upgrade 2.远程连接服务器 ssh 用户名@ip 上传代码 :        scp ...

  8. 使用docker-compose+nginx+uwsgi+django部署项目

    (1)centos上下载docker + docker-compose (2)基础目录 (3)首先创建一个纯净的python+django+uwsgi的镜像,便于后期使用(也可不用创建,后期docke ...

  9. Nginx+uwsgi+django部署项目

    nginx把请求转发给uwsgi,然后把uwsgi处理得到的结果返回给浏览器. 安装nginx: yum -y install gcc pcre-devel openssl-devel #安装Ngin ...

随机推荐

  1. JavaScript Boolean( new Boolean(false) ) 其实是true

    Boolean类型是JavaScript原始数据类型(primitive type)之一:常用来表示 真或假,是或否:这个类型只有两个值:保留字true和false 一般用于控制语句:如下 if(Bo ...

  2. postgresql-pg_prewarm数据预加载。

    pg_prewarm数据预加载. http://francs3.blog.163.com/blog/static/405767272014419114519709/   https://www.kan ...

  3. 12-01 Java Scanner类,Scanner类中的nextLine()产生的换行符问题

    分析理解:Scanner sc = new Scanner(System.in); package cn.itcast_01; /* * Scanner:用于接收键盘录入数据. * * 前面的时候: ...

  4. (转)如何入门 Python 爬虫

    “入门”是良好的动机,但是可能作用缓慢.如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习. 另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么 ...

  5. Stack Overflow 2016 最新架构探秘

    原文:http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 转载:http://www ...

  6. 【JAVA】判断当前日期是否在时间点内

    public static boolean isInDate(Date date, String strDateBegin, String strDateEnd) { SimpleDateFormat ...

  7. Chapter 3 Phenomenon——24

    My mom was in hysterics, of course. 我的母亲当时是歇斯底里的发疯了. I had to tell her I felt fine at least thirty t ...

  8. spring boot实现ssm(1)功能

    前面完成了ssm的整合, 整个过程可以说很繁杂, 各种配置, 很容易让人晕掉. 这里使用spring boot 的方式来实现ssm(1)中的功能. 一. 建项目 1. 使用 idea 来创建 spri ...

  9. 快速搭建一个“微视”类短视频 App

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 " ...

  10. elasticSearch6源码分析(9)ActionModule

    1.ActionModule概述 /** * Builds and binds the generic action map, all {@link TransportAction}s, and {@ ...