服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 聊聊Django+uwsgi+nginx服务器部署问题

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

2022-03-02 21:48Jason 20 Nginx

这篇文章主要介绍了Django+uwsgi+nginx服务器部署的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

准备工作

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

安装anaconda:

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

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

把conda添加到环境变量

?
1
vim /etc/profile

在文件末尾添加

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

启用环境变量

?
1
source /etc/profile

新增合适的虚拟环境

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

安装需要的组件

需要的有django,uwsgi,nginx

?
1
2
3
pip install django      # 版本为4以上
pip install uwsgi      
yum install nginx

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

?
1
2
3
python -m django --version
uwsgi --version
nginx -V

创建django程序(本地)

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

?
1
django-admin startproject mysite

获得目录如下

?
1
2
3
4
5
6
7
8
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程序时需要用到

创建应用

?
1
python manage.py startapp myApp

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

?
1
2
3
4
5
6
7
8
9
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

?
1
2
3
4
5
6
7
8
9
10
[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来启动项目

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

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

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

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

配置nginx

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

?
1
2
3
4
5
6
7
8
9
10
[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中增加两个内容

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

server部分如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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

?
1
server nginx start/stop/restart

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

?
1
netstat -tlnp|grep 80

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

配置ssl证书以提供https访问

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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服务器部署内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_48878393/article/details/123196851

延伸 · 阅读

精彩推荐
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08