Django项目uwsgi+Nginx保姆级部署教程实现

写在最前:

非常抱歉的是,因为突如其来的疫情,我的hadoop系列断更了,很难受,因为我的分布式环境在学校,我的笔记本配置带不起来,代码跑不起来我是不敢写博客的,然后寒假在家写代码也没啥意思,看了非常多的书,把计网和操作系统重新学了一遍。因为实习的需要,未来我更多的技术可能在Python这块,但是java相关的内容我也会努力保持更新,同时也会出更多的入门教程给大家谢谢大家。

背景:

最近在学习django的过程中,用django做了一个小demo,所以试试看能不能部署到服务器上,自己顺便也熟悉一下Django整个部署的流程,因为之前学习flask的时候,就使用的uwsgi来作为python web服务器来部署的,所以这次也就选择了nginx+uwsgi这样的一个组合。

当时买完云服务器之后,就顺手把宝塔装上了,之前用宝塔部署php项目是真的很容易,所以就偷懒试试宝塔能不能部署django,苦试一个小时,无果,遂放弃,还是老老实实用原生的uwsgi配合Nginx来部署吧。然后下面的流程我会争取把有可能是坑的地方重点标注出来,将来如果发博客或者自己需要再次部署的时候,也可以少写很多配置文件。

环境:

系统版本 :centos7.5

python 版本:3.6.5

nginx 版本:1.16.1

uwsgi 版本:2.0.18

如环境不同,还请查阅其他资料另行配置。

环境准备:

在部署之前,请确保你的linux服务器正确安装了对应的python版本,如果需要python3版本,请自行查阅资料进行升级安装。

首先为了更好的独立部署,避免对其他的项目产生干扰,我们需要安装python 虚拟环境:

sudo pip install virtualenv
sudo pip install virtualenvwrapper

virtualenvwrapper 是virtualenv的扩展管理包,可以将所有的虚拟环境整合在一个目录下。

配置虚拟环境:

mkdir ~/.virtualenvs

打开.bashrc:

sudo vim ~/.bashrc

在.bashrc的末尾增加下面内容:

export WORKON_HOME=$HOME/.virtualenvs # 所有虚拟环境存储的目录
source /usr/local/python3/bin/virtualenvwrapper.sh

注意!:这里的/usr/local/bin/virtualenvwrapper.sh只是针对于我当前系统环境的一个位置,并不是所有的服务器都是在这个位置,如果自己不知道virtualenvwrapper.sh在哪里,可以搜索文件来找到它在系统中的位置,并且修改.bashrc。

启用配置文件:

source ~/.bashrc

这个时候如果不报错,就代表我们的虚拟环境配置成功了,一般常见的报错就是virtualenvwrapper.sh文件找不对。

创建虚拟环境:

找一个你自己觉得能记住的地方,新建一个env 文件夹:

cd /www
mkdir env
cd env #进入env目录

新建一个虚拟环境:

mkvirtualenv -p /usr/bin/python3 orange_env  # my_env是虚拟环境的名称

注意:如果你的软连接/usr/bin/python3没有的话,会报错误,找不到/usr/bin/python3,这个时候就需要你自己新建一个软连接:

如果报错:

ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 路径要改成自己的python安装路径

之后便可以进入我们的虚拟环境了:

source /www/env/orange_env/bin/activate

进去虚拟环境之后,前面会出现一个括号,里面是你虚拟环境的名字:

(orange_env) [root@iz2ze1cvux96riiwfh05qqz ~]# 

在虚拟环境中安装uwsgi:

pip install uwsgi

退出虚拟环境:

deactivate

再次在主环境中安装uwsgi:

pip install uwsgi

注意:如果你有其他的依赖,比如django,msqlclient这些,记得一定要在虚拟环境里pip安装一下。

部署过程:

找一个你认为比较合适的地方,新建一个文件夹,将你的Django项目上传进去:

以我为例:

cd /www
mkdir orange

上传解压操作略,记得是上传项目根目录,就是直接带manage.py的那个目录。

新建一个uswgi配置文件,uswgi支持多种配置文件类型,比如yaml,xml,json,ini,这里我选的是xml。

vim mysite.xml #记得mysite.xml 要和你项目的manage.py 在一个目录下。

mysite.xml内容如下:

<uwsgi>
  <socket>127.0.0.1:8080</socket><!-- 内部端口,自定义 -->
  <chdir>/www/orange/</chdir><!-- 项目路径 -->
  <module>orangeproject.wsgi</module> <!-- 一般模块名 项目名+wsgi -->
  <processes>4</processes> <!-- 进程数 -->
  <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

安装Nginx:

Nginx 我之前有写过一系列的基础入门教程,如果对安装启动重启这些不是很熟练的可以看下面这篇文章:

链接: 写给后端的Nginx初级入门教程:实战篇

查看nginx 配置文件路径:

nginx -t

记得备份nginx之前的配置文件,然后把之前的配置全部删了,直接加入下面内容:

worker_processes 1;
events {
  worker_connections 1024;
}
http {
  include    mime.types;
  default_type application/octet-stream;
  sendfile    on;
  server {
    listen    8000;
    server_name 你的域名;
    charset utf-8;
    location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8080;
      uwsgi_param UWSGI_SCRIPT orangeproject.wsgi;
      uwsgi_param UWSGI_CHDIR /www/orange/;

    }
    location /static/ {
    alias /www/orange/transfer/static/;
    }
  }
}

注意模块名要保持一致,而且你nginx监听的端口不能和你django启动的端口一样,要不uswgi会因为nginx占用端口启动失败。alias /www/orange/transfer/static/; 这个是你的静态文件地址,css,img这些。

检查nginx是否配置成功:

nginx -t

重启nginx:

nginx -s reload

之后,再次进入我们的虚拟环境orange_env中,启动我们的uwsgi服务器:

cd /www/orange
uwsgi -x mysite.xml

然后打开我们的本地浏览器,输入:域名:8000,备案过的可以改nginx配置文件成80。

大功告成:

到此这篇关于Django项目uwsgi+Nginx保姆级部署教程实现的文章就介绍到这了,更多相关Django uwsgi+Nginx 部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Centos部署django服务nginx+uwsgi的方法

    1.安装python3 yum -y install wget gcc make zlib-devel readline-devel bzip2-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel openssl-devel wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz xz -d Python-3.6.1.tar.xz tar -xvf P

  • 详解Django+Uwsgi+Nginx 实现生产环境部署

    uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信. 而u

  • nginx+uwsgi+django环境搭建的方法步骤

    环境搭建 1.安装uwsgi.nginx和django apt install nginx pip install uwsgi pip install django 2.测试uwsgi和nginx的连接 PS:下面的例子采用的是 unix socket 的链接发送 创文件foobar.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b

  • 详解Django+uwsgi+Nginx上线最佳实战

    什么是uwsgi? uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换.WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范. WSGI是一种通信协议. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信.uwsgi协议是一个uWSGI服务器自有的协议,

  • 详解Django+Uwsgi+Nginx的生产环境部署

    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

  • 使用Nginx+uWsgi实现Python的Django框架站点动静分离

    由于: Django处理静态文件不太友好: 以后有可能需要处理php或者其他资源的请求: 所以考虑结合nginx,使用nignx做它擅长的路由分发功能:同时做动静分离,即Http请求统一由Nginx进行分发,静态文件由Nginx处理,并返回给客户端:而动态的请求,则分发到uWsgi,由uWsgi再分发给Django进行处理.即客户端 <-> nginx <-> socket <-> uwsgi <-> Django 一.环境 系统:centOS 6 pyth

  • Ubuntu系统搭建django+nginx+uwsgi的教程详解

    1. 在开发机上的准备工作 1.确认项目没有bug. 2.用pip freeze > requirements.txt将当前环境的包导出到requirements.txt文件中,方便在部署的时候安装. 3.将项目上传到服务器上的/srv目录下.这里以git的形式为例,打开终端,依次输入如下命令 •git init •git remote add origin xxx.git •git add . •git commit -m 'first commit' •git pull origin mas

  • Django uwsgi Nginx 的生产环境部署详解

    配置生产环境 #setting.py 文件中 DEBUG = False # 生产环境 # 允许访问的域名,域名前加一个点表示允许访问该域名下的子域名,比如 www.zmrenwu.com. # test.zmrenwu.com 等二级域名同样允许访问.如果不加前面的点则只允许访问 zmrenwu.com ALLOWED_HOSTS = ["127.0.0.1",".blogzjl.site"] 创建Python虚拟环境 安装 virtualenv sudo pip

  • django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

    1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器)2.FileZilla(用于从客户端将项目包上传到服务器)3.Navicat 12 (用于同步数据库) 4.环境云 服务器/云主机:京东云 (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种

  • Django + Uwsgi + Nginx 实现生产环境部署的方法

    如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. 1.WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架

  • uwsgi+nginx部署Django项目操作示例

    本文实例讲述了uwsgi+nginx部署Django项目操作.分享给大家供大家参考,具体如下: uWSGI概述 uWSGI 是一个全功能的 HTTP 服务器,可以把 HTTP 协议转化成语言支持的网络协议. 安装uwsgi 使用pip安装即可 pip install uwsgi 安装完成后可测试 #vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/ht

随机推荐