ubuntu+Django + nginx + uwsgi 部署

0.前期准备

注意:以下几件事都必须在激活虚拟环境下完成

  1. 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个requirements.txt的文件

读取requirements.txt文件,并安装项目依赖命令!

  1.  pip3 install -r requirements.txt
  1. 搜集项目的静态文件

在项目的配置文件settings.py文件中添加添加静态文件路径

  1.  STATIC_ROOT = '/home/zic/singleBlog/static/'

这将会把所有的静态文件拷贝至STATIC_ROOT配置的路径!

1.安装nginx

  1. sudo apt-get install nginx

并且重启

使用本机地址是否能访问成功

2.虚拟环境

一、进入Nginx用来默认放置网站的文件夹

  1. cd /home/zic

二、克隆项目到该文件夹

  1. git clone git@gitee.com:but-chen-chen/single-blog.git

三、创建虚拟环境

  1. python3 -m venv venv

四、激活虚拟环境

  1. linux: . venv/bin/activate
  2. windows: venv\Scripts\activate

五、安装依赖

  1. pip3 install -r requirements.txt -i [https://pypi.tuna.tsinghua.edu.cn/simple/](https://pypi.tuna.tsinghua.edu.cn/simple/)

3.安装uwsgi

linux-ubuntu安装uwsgi

对于 Python3.x 版本

  1. sudo apt-get install python3-dev
  2. sudo apt-get install python3-pip
  3. sudo pip3 install uwsgi

4.创建uwsgi配置文件

在项目目录下创建一个deploy的文件,创建一个uwsgi.ini的文件

  1. cd /var/www/django-blog
  2. mkdir deploy
  3. cd deploy
  4. touch uwsgi.ini

使用vim打开uwsgi.ini文件vim uwsgi.ini,复制以下代码并加以修改

  1. #配置域应该是uwsgi,记住这个不能丢,否则会报错
  2. [uwsgi]
  3. #uwsgi监听的socket,可以为socket文件或ip地址+端口号,用nginx的时候就配socket , 直接运行的时候配 http, http-socket = 127.0.0.1:8080
  4. socket = 127.0.0.1:8001
  5. #指定项目的目录,在app加载前切换到当前目录
  6. chdir = /home/zic/Desktop/singleBlog
  7. # Django的wsgi文件,用来加载blog2/wsgi.py这个模块
  8. module = singleBlog.wsgi
  9. # Python虚拟环境的路径
  10. home = /home/zic/Desktop/singleBlog/venv
  11. # master 启动主进程。
  12. master = true
  13. # 最大数量的工作进程数
  14. processes = 10
  15. # 指定工作进程中的线程数
  16. threads = 2
  17. # 设置socket的权限
  18. chmod-socket = 664
  19. # 退出的时候是否清理环境,自动移除unix Socket 和 Pid 文件
  20. vacuum = true
  21. #日志文件路径
  22. daemonize = /home/zic/Desktop/singleBlog/deploy/uwsgi.log
  23. # pid文件
  24. pidfile = /home/zic/Desktop/singleBlog/deploy/uwsgi.pid

5.创建项目nginx的配置文件

进入:cd /etc/nginx/sites-enabled

创建:touch blog

用vim编辑打开刚才创建的blog文件,将下边的内容填写进去,具体参考注释说明:

  1. # 配置文件内容:
  2. # 转发给哪个服务器,可以通过upstream配置项让nginx实现负载均衡
  3. upstream django {
  4. server 127.0.0.1:8001; # 这里的端口号必须和uwsgi里的保持一致
  5. server 127.0.1.1:8001;
  6. }
  7. # 设定虚拟主机配置,一个http中可以有多个server。
  8. server {
  9. # 启动的nginx进程监听请求的端口
  10. listen 80;
  11. #定义使用域名访问
  12. server_name 192.168.153.146;
  13. charset utf-8;
  14. # max upload size
  15. client_max_body_size 75M; # adjust to taste
  16. # location 配置请求静态文件多媒体文件。
  17. location /media {
  18. alias /home/zic/Desktop/singleBlog/media/;
  19. }
  20. # 静态文件访问的url
  21. location /static {
  22. # 指定静态文件存放的目录
  23. alias /home/zic/Desktop/singleBlog/static/;
  24. }
  25. # 将所有非媒体请求转到Django服务器上
  26. location / {
  27. # 包含uwsgi的请求参数,路径为qmblog_uwsgi_params绝对路径
  28. include /home/zic/Desktop/singleBlog/deploy/params;
  29. # 转交请求给uwsgi
  30. # uwsgi_pass 127.0.0.1:8000;
  31. uwsgi_pass django;
  32. #这个django对应开头出的,对于动态请求,转发到本机的端口,也就是uwsgi监听的端口,uwsgi运行的主机和ip,后面我们会在本机的该端口上运行uwsgi进程
  33. # 下面两个配置意思是如果比如通过http://www.xxx.com直接访问的是static下的index.html或者index.htm页面,一般用于将首页静态化
  34. #root /root/src/www/CainiaoBlog/static/;
  35. #index index.html index.htm;
  36. }
  37. # 精确匹配不同于上面/,这里http://www.xxx.com会匹配这个,根据这个配置将请求转发给另外nginx服务器,
  38. # 让另外服务器提供静态首页。同上面的访问index.html在另外同一台服务器上同一配置文件中结合。
  39. # location = / {
  40. # proxy_pass http://ip:port;
  41. # }
  42. }

最后,重启nginx,具体请参考nginx常用命令!

6.启动uwsgi服务

备注:请务必在激活虚拟环境下运行

  1. cd /var/www/django-blog
  2. uwsgi --ini deploy/uwsgi.ini

出现[uWSGI] getting INI configuration from deploy/uwsgi.ini类似这行的命令说明启动成功,直接去浏览器访问即可!

7.启动停止重启

uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。

uWSGI 启动:uwsgi --ini xxx.ini

uwsgi 重启:uwsgi --reload xxx.pid

uwsgi 停止:uwsgi --stop xxx.pid

如果不行,执行

sudo pkill -f uwsgi -9

ubuntu+Django + nginx + uwsgi 部署的更多相关文章

  1. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  2. Ubuntu + Django + Nginx + uwsgi

    环境 Ubuntu 14.04 Python 2.7 Django 1.8.4 1 安装Nginx     sudo apt-get install nginx 测试  sudo /etc/init. ...

  3. Django+Nginx+uWSGI部署

    一.介绍 Django的部署可以有多种方式,采用nginx+uwsgi的方式是最常见的一种方式.在这种方式中,将nginx作为服务器前端,接收WEB的所有请求,统一管理请求.nginx把所有静态请求自 ...

  4. Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)

    在线教育平台项目演示地址 项目部署教程 1.1.工作原理介绍 django 一个基于python的开源web框架 uwsgi 一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 ...

  5. Django+nginx+uwsgi部署教程

    00-所需工具 xshell:https://www.netsarang.com/zh/downloading/?token=ZlZnVUNsWDJuM0VaZnVPUjZST1dwd0AzYlNte ...

  6. centos django+Nginx+uwsgi部署

    第五天 部署python3+uwsgi+nginx的博客系统 ================================ mysql基本命令 mysql mysql -p mysqladmin ...

  7. django+nginx+uwsgi 部署配置

    django官方文档在这 https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/uwsgi/ 第一步:先收集静态文件 之前要先设置 S ...

  8. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  9. [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器

    部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...

随机推荐

  1. 轻松月薪过万,NISP证书含金量有多重|NISP管理中心|网安伴|nisp

    nisp一级证书含金量 NISP一级证书是面向各个行业工作人员信息安全意识普及化和网络信息安全基础培训的国家级验证.持NISP一级证书可以从信息安全保密较高的单位得到加分.证书由中国信息安全测评中心授 ...

  2. Github文件在线加速下载

    众所周知,GitHub是一个巨大的开源宝库,以及程序员和编程爱好者的聚集地,诸多优秀的开源项目全部都是位于GitHub上.但是每当我们看到优秀的开源项目,准备去下(bai)载(piao)时,会发现速度 ...

  3. 【java】学习路径25-ArrayList类,Vector类,LinkedList类的使用和区别,Iterator迭代器的使用

    ArrayList的使用 ArrayList类:可变化长度的数组. 与一般的数组不同的是,其长度不固定,可以添加任意类型的数据. 也可以添加不同类型的数据,但是一般不这么做. ArrayList类位于 ...

  4. DES|3DES|AES|RSA|DH | CA | SSL(HTTPS)

    1.对称密钥算法: 加解密速度块,算法使安全的,已知算法无法推出密钥.但是密钥的分发困难. DES:对称密钥算法,是一种块加密算法,只有一个密钥.加解密都是用一个密钥. 3DES:与DES一样,可以认 ...

  5. 01_Django-介绍-项目结构-URL和视图函数

    01_Django-介绍-项目结构-URL和视图函数 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn.net/c ...

  6. openstack中Nova组件简解

    一.Nova组件概述 计算节点通过Nova Computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信. Nova位于Openstack架 ...

  7. 在 Kubernetes 中部署 Redis 集群

    在 Kubernetes 中部署 Redis 集群 在Kubernetes中部署Redis集群面临挑战,因为每个 Redis 实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此,我们需 ...

  8. AVL Tree (1) - Definition, find and Rotation

    1. 定义 (15-1) [AVL tree]: 一棵空二叉树是 AVL tree; 若 T 是一棵非空二叉树, 则 T 满足以下两个条件时, T 是一棵 AVL tree: T_LeftSubtre ...

  9. Java的lamda表达式/函数式接口/流式计算

    在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...

  10. Java的线程状态

    在我们平时写code的时候,经常会使用到多线程.其中线程所处的状态就是我们需要进程思考的问题. 线程有哪些状态 NEW: 一个线程刚被创建,但是没有被使用就是处于这个状态 RUNNABLE: 一个线程 ...