windows下django项目部署nginx+waitress |
您所在的位置:网站首页 › apache部署Django请求的url不存在 › windows下django项目部署nginx+waitress |
django项目部署
django项目部署的最流行的方法是linux系统下Nginx+uWSGI,这方面的教程是比较多的,部署也比较方便的,但是奈何作者不是一个正经程序员,用惯了windows,Linux再好,也懒得去学习。。。所以只能选择uWSGI的替代品waitress进行动态内容的处理。当然还有其他替代品可以使用。 在Windows系统下,如果你在寻找uWSGI的替代品,有几个选项可以考虑(ps:GPT-4:): Daphne: Daphne是一个HTTP, HTTP2和WebSocket协议服务器,为Django项目提供服务,尤其是在使用Channels时。虽然它主要是为了支持Django Channels设计的,但它也可以作为一个普通的ASGI服务器来运行其他Python web应用。 Hypercorn: Hypercorn支持HTTP/1, HTTP/2, 和WebSocket协议,并且能够运行任何ASGI兼容的Python应用。这包括由Django, FastAPI, 和Quart等框架构建的应用。Hypercorn是uWSGI和Gunicorn的一个现代替代品,特别适合于需要异步功能的应用。 Waitress: Waitress是一个纯Python编写的WSGI服务器,适用于Windows和其他操作系统。它被设计为全面兼容,并且能够承载各种类型的Python web应用。如果你的应用是基于WSGI的,而不是ASGI,Waitress是一个很好的选择。 Gunicorn: 虽然Gunicorn主要是为Unix系统设计的,但它也可以在Windows上通过WSL(Windows子系统Linux)运行。如果你的开发环境接近于生产环境(通常是Linux),使用WSL运行Gunicorn可能是一个不错的选择。 每个服务器都有其特点和最佳使用场景,所以选择哪一个取决于你的具体需求,比如你的应用是基于WSGI还是ASGI,你是否需要异步处理,以及你是否偏好纯Python解决方案等等。 django项目部署准备(当然项目必须先上传至服务器了) 修改settings.py,将开发者模式关闭 # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False ALLOWED_HOSTS = ['*'] #也可以设为服务器ip settings.py设置STATIC_ROOT STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") 项目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) cmd命令收集静态资源,这里可能会存在一些未知的问题,建议收集后,将开发时指定的静态文件路径下的内容拷贝一份复制到static_root路径下,替换其自动收集的文件。 python manage.py collectstaticPS:另外关于静态资源文件这里,对于项目上传至github,有一个小坑(某些方面也不算坑):本地仓库的文件上传至GitHub后,空文件夹都消失了。。。。再加上相关代码没有处理好文件操作,出现了一些小问题。 如果使用的mysql之类的非django自带的数据库,请在服务器上搭建好对应的环境,要能和settings.py里的数据库相关配置对应。别忘了项目依赖的包。在服务器上不建议使用虚拟环境,虽然不知道为什么,但是也的确没必要去新建一个环境,毕竟本地开发的时候的环境上传至github时是自动被忽略的。数据库环境准备好后,使用cmd进行项目数据库的建立。以及新建超级用户。 python manage.py makemigrations python manage.py migrate python manage.py createsuperuser至此,django的部署准备就完成了 waitress安装部署waitress的安装部署应该是简单的不能再简单了,作者也没有去深究一些更细节的配置之类的,下面是一个最简单的能跑起来的方法。 首先pip安装waitress pip install waitress 在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安装部署 至官网下载Nginx https://nginx.org/en/download.html![]() 至此,nginx部署完毕,可通过127.0.0.1直接访问,域名绑定之类的,请自行配置。 结语虽然并不算太复杂,但是摸索下来,也花了一个下午才完成,为什么一定要使用其他服务器替代django默认的服务器,django文档中有说明其自带的服务器并不安全与稳定,不适合生产环境部署,于是得使用Nginx等其他服务器进行替代,但是waitress的性能究竟如何,笔者尚未进行验证,或许后续会进行相关的测试。就本次实践而言,后续为异步服务器AWSGI也可以很方便的进行扩展。Daphne可能是个不错的选择,对于django特有的channels而言。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |