聊聊Django+uwsgi+nginx服务器部署问题

目录
  • 准备工作
    • 安装anaconda:
    • 安装需要的组件
    • 创建django程序(本地)
    • 使用文件传输工具将django程序传输到服务器
  • 部署工作
    • 配置uwsgi
    • 配置nginx
    • 配置ssl证书以提供https访问

准备工作

推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题

安装anaconda:

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh

一路回车,有提示后“yes”再回车,这里安装到的目录在/root下

把conda添加到环境变量

vim /etc/profile

在文件末尾添加

PATH=$PATH:/root/anaconda3/bin		# 根据目录情况
export PATH

启用环境变量

source /etc/profile

新增合适的虚拟环境

conda env list			# 查看环境
conda create -n myDjango python=3.7.5
conda activate myDjango
# 启动虚拟环境时可能需要先
source activate

安装需要的组件

需要的有django,uwsgi,nginx

pip install django		# 版本为4以上
pip install uwsgi
yum install nginx

使用查看版本语句查看是否安装成功

python -m django --version
uwsgi --version
nginx -V

创建django程序(本地)

可在pycharm中一键创建,也可以使用命令行创建

django-admin startproject mysite

获得目录如下

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • manage.py 用于启动项目 python manage.py runserver
  • 二级mysite可对项目进行整体配置
  • mysite/settings.py 项目配置文件,包含数据库,debug,语言时区等
  • mysite/urls.py 配置项目路由
  • mysite/wsgi.py 使用uwsgi管理django程序时需要用到

创建应用

python manage.py startapp myApp

得到app目录如下,可在此编写视图模块等,然后在urls内编写路由以提供访问,不再赘述

myApp/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

使用文件传输工具将django程序传输到服务器

可使用xftp,filezilla或宝塔之类

部署工作

配置uwsgi

在以放到服务器上的django项目目录下创建uwsgi.ini文件,即uwsgi配置

我的项目目录为/home/mysite

[uwsgi]
chdir=/home/djangoProject	# 项目位置
#socket=:8000				# 通过nginx使用的配置
http=:8000					# 单独启动时使用的配置
wsgi-file=/home/djangoProject/djangoProject/wsgi.py		# 项目中wsgi文件位置
process=4
threads=2
pidfile=uwsgi.pid			# 生产pid,log文件,以查看日志和pid信息
daemonize=uwsgi.log
master=True

此时可以启动uwsgi来启动项目

uwsgi --ini uwsgi.ini	# 通过刚创立的ini配置来启动,会生成pid和log文件
uwsgi --stop uwsgi.pid	# 必须使用pid文件来停止程序

此时可以使用端口查看语句查看程序是否已经运行

netstat -tlnp|grep 8000	# django程序默认开启端口为8000,也可在ini文件中自行修改

若已成功启动,一句可以通过访问域名/ip:8000访问django程序

配置nginx

首先需要将uwsgi.ini配置进行更改,取消http,打开socket

[uwsgi]
chdir=/home/djangoProject	# 项目位置
socket=:8000				# 通过nginx使用的配置
#http=:8000					# 单独启动时使用的配置
wsgi-file=/home/djangoProject/djangoProject/wsgi.py		# 项目中wsgi文件位置
process=4
threads=2
pidfile=uwsgi.pid			# 生产pid,log文件,以查看日志和pid信息
daemonize=uwsgi.log
master=True

nginx配置文件默认在/etc/nginx/nginx.conf,需要编辑的是http下的server内容
location中增加两个内容

uwsgi_pass 0.0.0.0:8000;			# 与uwsgi.ini文件配置的socket保持一致
include /etc/nginx/uwsgi_params;	# 引用nginx的uwsgi_params载入参数

server部分如下

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    location / {
    		uwsgi_pass 0.0.0.0:8000;
    		include /etc/nginx/uwsgi_params;
    }
}

可以用nginx -t语句检查是否合法
通过server语句启动/停止/重启 nginx

server nginx start/stop/restart

nginx默认开启端口为80,也可通过查看端口情况观察是否成功开启

netstat -tlnp|grep 80

若启动成功则nginx反向代理成功,已经可以通过访问80端口访问django程序

配置ssl证书以提供https访问

需要在服务器代理厂商处申请ssl证书并下载nginx版本,将得到包含域名在内的证书文件.pem和证书密钥.key,将两个文件传输到服务器nginx目录下,最好建立一个证书专用目录

更改nginx.conf配置文件server内容

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  _;
    root         /usr/share/nginx/html;

    ssl_certificate "/etc/nginx/cert/证书名.pem";
    ssl_certificate_key "/etc/nginx/证书密钥.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    location / {
            uwsgi_pass 0.0.0.0:8000;
            include /etc/nginx/uwsgi_params;
    }
    error_page 404 /404.html;
        location = /40x.html {
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
}

注:每次更改nginx配置都需要重启nginx服务才能生效

到此这篇关于Django+uwsgi+nginx服务器部署的文章就介绍到这了,更多相关Django+uwsgi+nginx服务器部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

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

  • Nginx+Uwsgi+Django 项目部署到服务器的思路详解

    首先先说一下思路: 1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了.这个时候需要用到data_files.glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. from distutils.core import setup import glob setup( name

  • 聊聊Django+uwsgi+nginx服务器部署问题

    目录 准备工作 安装anaconda: 安装需要的组件 创建django程序(本地) 使用文件传输工具将django程序传输到服务器 部署工作 配置uwsgi 配置nginx 配置ssl证书以提供https访问 准备工作 推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题 安装anaconda: wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh bash A

  • 详解Ubuntu环境下部署Django+uwsgi+nginx总结

    前言 这是我在搭建Django项目时候的过程,拿来总结记录,以备不时之需. 项目采用nginx+uwsgi的搭配方式. 项目依赖包采用 requirements.txt 文件管理的方式. 本地准备工作 确认项目能够运行起来,没有 bug 将当前环境的包导出 pip freeze > requirements.txt 将项目上传到服务器上的 /srv 目录下.这里以 git 的形式为例, 打开终端, 依次输入如下命令: $ git init $ git remote add origin xxx.

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

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

  • 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框架

  • Django+Uwsgi+Nginx如何实现生产环境部署

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

  • 详解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

  • 详解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 的生产环境部署详解

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

  • Diango + uwsgi + nginx项目部署的全过程(可外网访问)

    前言 自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 方法如下 安装Nginx: #安装nginx sudo apt-get install nginx #一些有用的命令 #启动nginx sudo /etc/init.d/nginx start #重启nginx 8sudo /etc/init.d/nginx restart #停止nginx sudo /etc/ini

随机推荐