1. 首页
  2. 技术知识

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

目录

    准备工作

      安装anaconda: 安装需要的组件 创建django程序(本地) 使用文件传输工具将django程序传输到服务器

    部署工作

      配置uwsgi 配置nginx 配置ssl证书以提供https访问

准备工作

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

安装anaconda:

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

bash Anaconda3-2022.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反向X成功,已经可以通过访问80端口访问django程序

配置ssl证书以提供https访问

需要在服务器X厂商处申请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服务器部署内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/105721.html

联系我们