windows下django项目部署nginx+waitress

本文介绍了在Windows环境下部署Django项目时,使用Waitress作为uWSGI替代品,以及Nginx作为反向代理服务器的过程,包括修改settings.py、配置静态资源和数据库,以及安装和部署Waitress和Nginx的基本步骤。
摘要由CSDN通过智能技术生成

django项目部署

django项目部署的最流行的方法是linux系统下Nginx+uWSGI,这方面的教程是比较多的,部署也比较方便的,但是奈何作者不是一个正经程序员,用惯了windows,Linux再好,也懒得去学习。。。所以只能选择uWSGI的替代品waitress进行动态内容的处理。当然还有其他替代品可以使用。
在Windows系统下,如果你在寻找uWSGI的替代品,有几个选项可以考虑(ps:GPT-4:):

  1. Daphne: Daphne是一个HTTP, HTTP2和WebSocket协议服务器,为Django项目提供服务,尤其是在使用Channels时。虽然它主要是为了支持Django Channels设计的,但它也可以作为一个普通的ASGI服务器来运行其他Python web应用。

  2. Hypercorn: Hypercorn支持HTTP/1, HTTP/2, 和WebSocket协议,并且能够运行任何ASGI兼容的Python应用。这包括由Django, FastAPI, 和Quart等框架构建的应用。Hypercorn是uWSGI和Gunicorn的一个现代替代品,特别适合于需要异步功能的应用。

  3. Waitress: Waitress是一个纯Python编写的WSGI服务器,适用于Windows和其他操作系统。它被设计为全面兼容,并且能够承载各种类型的Python web应用。如果你的应用是基于WSGI的,而不是ASGI,Waitress是一个很好的选择。

  4. Gunicorn: 虽然Gunicorn主要是为Unix系统设计的,但它也可以在Windows上通过WSL(Windows子系统Linux)运行。如果你的开发环境接近于生产环境(通常是Linux),使用WSL运行Gunicorn可能是一个不错的选择。

每个服务器都有其特点和最佳使用场景,所以选择哪一个取决于你的具体需求,比如你的应用是基于WSGI还是ASGI,你是否需要异步处理,以及你是否偏好纯Python解决方案等等。

django项目部署准备(当然项目必须先上传至服务器了)

  1. 修改settings.py,将开发者模式关闭
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['*'] #也可以设为服务器ip
  1. settings.py设置STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
  1. 项目url配置增加静态资源访问url,开发时用到静态资源的地方都应该早做准备
# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])
else:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  1. cmd命令收集静态资源,这里可能会存在一些未知的问题,建议收集后,将开发时指定的静态文件路径下的内容拷贝一份复制到static_root路径下,替换其自动收集的文件。
python manage.py collectstatic

PS:另外关于静态资源文件这里,对于项目上传至github,有一个小坑(某些方面也不算坑):本地仓库的文件上传至GitHub后,空文件夹都消失了。。。。再加上相关代码没有处理好文件操作,出现了一些小问题。

  1. 如果使用的mysql之类的非django自带的数据库,请在服务器上搭建好对应的环境,要能和settings.py里的数据库相关配置对应。
  2. 别忘了项目依赖的包。在服务器上不建议使用虚拟环境,虽然不知道为什么,但是也的确没必要去新建一个环境,毕竟本地开发的时候的环境上传至github时是自动被忽略的。
  3. 数据库环境准备好后,使用cmd进行项目数据库的建立。以及新建超级用户。
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

至此,django的部署准备就完成了

waitress安装部署

waitress的安装部署应该是简单的不能再简单了,作者也没有去深究一些更细节的配置之类的,下面是一个最简单的能跑起来的方法。

  1. 首先pip安装waitress
pip install waitress
  1. 在django项目下新建一个run.py文件
#run.py
from waitress import serve
from ChaoFanOnline.wsgi import application

serve(
    app=application,
    host='127.0.0.1',
    port=8080
)

这样,waitress就部署完成,用python执行这个文件,waitress服务器就可以运行了

python run.py

在这里插入图片描述
在这里插入图片描述

此时已经可以像django自带的runserver一样通过指定端口进行访问了,注意端口号不要设置为80和443.

Nginx安装部署

  1. 至官网下载Nginx https://nginx.org/en/download.html
    在这里插入图片描述
  2. 解压后,配置nginx-1.24.0\conf\nginx.conf文件,主要为以下两部分,一部分是动态部分的请求转发,一部分是静态文件请求的直接处理。其他的一些Nginx配置的相关内容不再赘述。
 location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8080;#注意和waitress服务端口保持一致
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }

#域名/static/与服务端的静态文件路径间的映射
#用于配置处理静态文件路径 /static/ 的请求的规则。在这里,使用 alias 指令指定静态文件的根目录。
location /static/ {
            alias ../staticfiles/;  # 将路径替换为你的静态文件路径(最后的斜杠不能少)根据nginx文件位置自行配置相对路径或者绝对路径。
        }
  1. 使用cmd命令执行nginx.exe文件,开启nginx服务
nginx.exe
  1. 如果是在服务运行中修改的配置文件,需要重启服务
nginx.exe -s reload

至此,nginx部署完毕,可通过127.0.0.1直接访问,域名绑定之类的,请自行配置。

结语

虽然并不算太复杂,但是摸索下来,也花了一个下午才完成,为什么一定要使用其他服务器替代django默认的服务器,django文档中有说明其自带的服务器并不安全与稳定,不适合生产环境部署,于是得使用Nginx等其他服务器进行替代,但是waitress的性能究竟如何,笔者尚未进行验证,或许后续会进行相关的测试。就本次实践而言,后续为异步服务器AWSGI也可以很方便的进行扩展。Daphne可能是个不错的选择,对于django特有的channels而言。

  • 41
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Ubuntu是一个自由开源的操作系统,其中有很多的工具和服务可以用于搭建与开发Web应用。其中,常用的Web应用栈是使用Nginx作为Web服务器,UWSGI作为应用程序服务器,Django作为Web框架,MySQL作为关系型数据库。 要安装和配置这些服务,需要进行以下步骤: 1. 安装Ubuntu操作系统,可以选择最新版本的Ubuntu LTS或者最新的Ubuntu发行版。 2. 安装Nginx服务,并配置Nginx服务器来处理并转发HTTP请求。这里可以使用apt-get install命令来安装Nginx包。 3. 安装UWSGI服务,并配置UWSGI服务器来处理Django应用程序。这里可以使用pip install命令来安装UWSGI包。 4. 安装Django,并编写一个基本的Django应用程序。然后配置UWSGI服务器以运行Django应用程序。可以使用pip install命令来安装Django包。可以使用此教程 - https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html 5. 安装MySQL数据库服务,并配置MySQL服务器以使用Django应用程序。可以使用apt-get install命令来安装MySQL包。 6. 在Django应用程序中配置MySQL数据库连接参数,并创建 MySQL数据库及表。 7. 配置Nginx服务器以使用UWSGI服务器来处理Django应用程序。可以使用上面的教程来完成这一步骤。 8. 启动Nginx和UWSGI服务器,并测试Django应用程序是否可以访问。 在进行以上的步骤时,需要注意安全措施,防止 Web 应用程序被攻击和入侵。同时,也需要进行充分的测试,保证 Web 应用程序的稳定性和可用性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝凡FR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值