当前位置: 首页 > news >正文

Django项目window环境部署

最近刚好有时间,把前端时间使用django框架开发的音乐网站部署到本地电脑上,在这里记录一下部署过程。

环境配置

Python 3.7.5

Django 3.2.20

Apache 2.4.39

电脑64位

生产环境配置

设置生产环境静态配置

示例如下:

# 生产环境静态资源配置
# 当配置属性DEBUG设为False时,Django不再提供静态文件代理服务,
此时需要设置STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

这时如果设置了STATICFILES_DIRS,如果路径一致,可能会有报错,

就可以把这一项注释掉,生产环境不再使用这项配置。

示例如下:

# STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

 

定义静态资源路径

当django设为上线模式时,它不再提供静态资源服务,该服务应交由服务器来完成,因此在项目的路由列表中添加静态资源的路由信息。

设置myMusic/urls.py中路由信息。

示例如下:

urlpatterns = [path('admin/', admin.site.urls),# 配置媒体资源路由re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),# 配置静态资源路由re_path('static/(?P<path>.*)', serve, {'document_root': settings.STATIC_ROOT}, name='static'),# 音乐网站前端路由path('', include(('player.urls', 'player'))),
]

切换运行模式

将Django设为上线模式(DEBUG=False),修改myMusic/settings.py中DEBUG=False.

示例如下:

DEBUG = False

设置允许访问

示例如下:

ALLOWED_HOSTS = ['*']

整理生产静态文件

使用Django内置指令collectstatic,它复制了静态资源文件夹static里面的所有静态资源,并且还复制了Admin后台系统的静态资源。

命令如下:

python manage.py collectstatic

效果如下:

安装mod_wsgi

Apache模块可以托管任何支持python wsgi规范的python web应用程序。Apache需要提前安装如果没有请先安装Apache。

下载mod_wsgi

地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

 

下载适合自己的mod_wsgi模块,比如我的python版本为3.7,电脑为64位,就选择cp37,win_amd64那一项。

点击进行下载

安装mod_wsgi

直接在下载的文件夹中右键打开CMD窗口安装mod_wsgi。

命令如下

pip install mod_wsgi-4.9.0-cp37-cp37m-win_amd64

安装如下:

 

查看模块配置信息

使用命令mod_wsgi-express module-config查看模块配置信息。

配置信息在之后的服务器配置时需要使用。

配置信息如下:

 

Apache配置django

打开Apache的配置文件httpd.conf,在配置文件的末尾,配置你的Django项目信息如下:

配置如下:

# Django项目部署
# 添加mod_wsgi.so模块
# 之前安装mod_wsgi时查看配置的信息
LoadFile "E:/python/python37.dll"
LoadModule wsgi_module "E:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "E:/python"# 指定django项目的wsgi配置文件路径
WSGIScriptAlias / E:/lianxipy/myMusic/myMusic/wsgi.py# 配置django项目后台路径
WSGIPythonPath E:/lianxipy/myMusic
<Directory E:/lianxipy/myMusic/myMusic>
<Files wsgi.py>Require all granted
</Files>
</Directory>
# 配置django项目静态文件路径
Alias /static E:/lianxipy/myMusic/static
<Directory E:/lianxipy/myMusic/static>AllowOverride NoneOptions NoneRequire all granted
</Directory>

配置后重启apache,访问127.0.0.1发现访问成功,效果如下:

绑定本地域名访问

直接配置到httpd.conf中后,发现配置的其他域名都无法访问了;

故配置了单独的域名,并把配置文件改到vhost中。

创建网站

使用study_pro创建网站指定python项目路径。

修改网站配置

因为网站是使用python django开发的,所以配置需要修改。

通过【设置】->【配置文件】使用记事本打开local.music.com配置文件。

项目路径改为你的项目路径和python环境地址。

修改配置文件如下:

# Django项目部署
# 添加mod_wsgi.so模块
LoadFile "E:/python/python37.dll"
LoadModule wsgi_module "E:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "E:/python"
# 配置后台路径
WSGIPythonPath E:/lianxipy/myMusic<VirtualHost *:80>DocumentRoot "E:/lianxipy/myMusic/myMusic"ServerName local.music.com# 指定django项目的wsgi配置文件路径WSGIScriptAlias / E:/lianxipy/myMusic/myMusic/wsgi.py<Directory E:/lianxipy/myMusic/myMusic><Files wsgi.py>Require all granted</Files></Directory># 配置静态文件Alias /static E:/lianxipy/myMusic/static<Directory E:/lianxipy/myMusic/static>AllowOverride NoneOptions NoneRequire all granted</Directory>
</VirtualHost>

修改保存后,重启服务器,访问local.music.com。

效果如下:

总结

这就是在window部署django的全过程,中间配置遇到一些问题,不过都解决了目前的配置经过验证成功的配置,有需要的可以借鉴一下。

相关文章:

  • Python之Pygame游戏编程详解
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)
  • Missing file libarclite_iphoneos.a 问题解决方案
  • Halcon Solution Guide I basics(4): Blob Analysis(连通性解析)
  • 【Java】认识异常
  • 数据提取PDF SDK的对比推荐
  • Photoshop下载秘籍:附送7款不用下载的在线PS工具!
  • 12.docker的网络-host模式
  • ModuleNotFoundError: No module named ‘torch_sparse‘
  • 浅谈Linux bash脚本----getopts获取脚本POSIX标准传参
  • 弹窗msvcp140_1.dll丢失的解决方法,超简单的方法分享
  • TrustAsia亮相Matter开发者大会,荣获Matter优秀赋能者奖
  • 【Spring进阶系列丨第四篇】学习Spring中的Bean管理(基于xml配置)
  • Vue 2使用element ui 表格不显示
  • iOS APP包分析工具 | 京东云技术团队
  • php的引用
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [deviceone开发]-do_Webview的基本示例
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • extjs4学习之配置
  • js对象的深浅拷贝
  • Linux链接文件
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • node和express搭建代理服务器(源码)
  • Vue官网教程学习过程中值得记录的一些事情
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 力扣(LeetCode)56
  • 前端攻城师
  • 嵌入式文件系统
  • 设计模式 开闭原则
  • 通过git安装npm私有模块
  • 学习HTTP相关知识笔记
  • 学习笔记TF060:图像语音结合,看图说话
  • k8s使用glusterfs实现动态持久化存储
  • NLPIR智能语义技术让大数据挖掘更简单
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Kafka_深入探秘者(2):kafka 生产者
  • ###C语言程序设计-----C语言学习(6)#
  • (10)ATF MMU转换表
  • (2)leetcode 234.回文链表 141.环形链表
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (力扣)1314.矩阵区域和
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三十五)大数据实战——Superset可视化平台搭建
  • (学习日记)2024.01.09
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET MVC之AOP
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net反混淆脱壳工具de4dot的使用
  • .net专家(高海东的专栏)