首页 > 系统相关 >Django项目windows部署教程,详细踩坑总结

Django项目windows部署教程,详细踩坑总结

时间:2024-04-01 14:58:14浏览次数:29  
标签:教程 启动 windows wsgi Django project Apache django mod

Django项目windows部署教程,详细踩坑总结

本篇文章主要关于Django在Windows上利用Apache部署,如果你想通过IIS部署,推荐这篇文章在IIS服务器上部署django_django iis-CSDN博客,我之前尝试部署在IIS上,发现Django的定时任务失效了,上网查找了一番,普遍说法是被服务器回收了,经过了一番操作,还是不行,便放弃转向了Apache,话不多说,正文在下方。

原文链接:https://blog.csdn.net/weixin_48749340/article/details/134993384

1.Apache安装

地址:Apache VS17 binaries and modules download

apache对Visual C++的版本是有要求的,如何看自己需要什么版本呢?如果你电脑里已经安装了Visual C++可以在设置-应用和功能里找到,看总体的大版本就可以了。

1.1 VC++版本

win+r打开输入cmd运行命令窗口,输入python


大家根据表格对应下载版本的VC++即可,例如我的是1912,对应15.5版本。

1.2 安装Apache


点击这里下载其他版本,

选择与自己对应的版本

选择64位版本,将这个压缩包下载完后,解压到你常用的位置,这个文件夹就是Apache服务器,这张图是从服务器截图下来的是vc14,问题不大。

1.3 安装mod_wsgi

去官网下载 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

根据自己的python版本下载即可

下载完成后,复制文件的名称,打开文件所在位置,在文件位置cmd 进入命令窗口,pip install 文件名

验证安装是否成功,获取mod_wsgi的配置信息(后续有用)

mod_wsgi-express module-config

1.4 配置Apache(多端口,启动多个服务)

如果你害怕把配置文件改坏掉的话,建议复制一个副本文件。打开httpd.conf,编辑它。在网上看到的基本都是启动单个服务,如果是要启动多个服务的话需要用到虚拟端口配置文件,所以我们直接用启动多个端口的方式一劳永逸。



在配置文件最后加入mod_wsgi的配置信息,即上文通过mod_wsgi-express module-config得到的

LoadFile "C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python38.dll"
LoadModule wsgi_module "C:/Users/Administrator/AppData/Local/Programs/Python/Python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "C:/Users/Administrator/AppData/Local/Programs/Python/Python38"


再在末尾加上这几句话,Listen 后面跟你想启动的服务的端口,自己定义即可,我想启动两个就监听两个端口,不想启动服务注释掉即可。

LoadModule wsgi_module modules/mod_wsgi.so
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
 
#Listen 8001
 
Listen 8002

ok,我们再配置虚拟端口的配置文件,打开extra文件夹下的虚拟端口配置文件

直接拉到底,复制一个虚拟配置,自己改写。

<VirtualHost *:8002>
    # 服务名称填自己的IP 
    ServerName 127.0.0.1:8002
	# 如果django中使用了pandas、numpy等科学包,需要加上这个,不然django是无法访问的
    # 因为这些科学包在Python子解释器中无法工作。该指令将强制使用主解释器上下文
    WSGIApplicationGroup %{GLOBAL}
    #wsgi的路径,一般在django主项目文件夹下
    WSGIScriptAlias / C:\www\project\project\wsgi.py
    #项目的路径
    <Directory C:\www\project\project>
      <Files wsgi.py>
       Require all granted
      </Files>
    </Directory>
#静态文件的路径,有可以配置,没有可以不用
   Alias /static C:\www\project\static
    <Directory C:\www\project\static>
  Require all granted
    </Directory>  
#根目录
   DocumentRoot "C:\www\project"
    <Directory "C:\www\project"> 
        Options Indexes FollowSymLinks 
        AllowOverride None 
        Require all granted 
    </Directory> 
# 错误日志	
	 ErrorLog "logs/project-error.log"
    CustomLog "logs/project-access.log" common
</virtualHost> 

到目前为止,apache的配置文件就写完了,可以在bin目录下打开cmd,输入httpd -t检查自己的配置文件有没有语法错误,这里警告我两个示例的文件目录不存在,问题不大。

2.启动Apache

2.1配置python环境变量

网上有的网友不配置能启动,有的不能启动,我建议还是配置一下,如果安装了conda请不要配置。

打开命令行

python

import sys

print(sys.path)

如果安装了conda,配置环境变量后打开anaconda prompt会报错,不知道为什么,后续有机会更新

2.2 启动Apache服务

在bin目录下打开cmd输入httpd -k install -n "apache2.4" ,当然你也可以取自己想要的名字

此时电脑右下脚应该会有Apache的监控服务,如果没有,也可以手动打开上图中的ApacheMonitor.exe

这样就可以启动Apache服务了,请不要着急启动,看第3点注意事项。

3.注意事项(重要)

1.确保你的django sttings.py

DEBUG = False
 
ALLOWED_HOSTS = ['*']

2.确保你的服务器或电脑开放了对应的端口,保证正常访问

3.配置你项目的wsgi.py文件

不同项目的环境通常不同,所以我们通常使用虚拟环境,使用虚拟环境请写虚拟环境的python包文件夹,不是虚拟环境同样写下自己python包的位置即可。再设置项目的配置文件。

import os, sys
from django.core.wsgi import get_wsgi_application
 
 
virtualenv_dir = r'C:\www\project\venv\Lib\site-packages'  # 虚拟环境python包文件夹
sys.path.insert(0, virtualenv_dir)  # 加入导包路径
# 项目所在文件夹,python解释器才知道在哪里运行项目
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, PROJECT_DIR)  # 项目加入导包路径
 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') # 将project.settings改成自己的配置名称
 
application = get_wsgi_application()
 
# 如果你的项目在启动时需要运行一些语句,请写在本条注释以下

至此,所有的配置全部完成。

4.杂谈

我在使用Apache部署项目的时候,因为我需要做一些后台任务,需要系统启动的时候就启动定时任务,而貌似Apache通过wsgi启动项目的时候会运行多个线程,导致定时任务被多次执行,我第一次使用的时候貌似执行了四次。可以参考这篇文章,通过分布式锁来解决定时任务的重复执行问题,主要看最后即可。Django+nginx+uwsgi +apscheduler任务重复执行问题_django apscheduler动态添加任务-CSDN博客

另外貌似Apache是通过监听端口来启动服务的,如果没有请求,定时任务并不会启动,所以我每次启动服务的时候都需要手动访问一次项目,定时任务才会启动,目前也没有找到好的方法。

标签:教程,启动,windows,wsgi,Django,project,Apache,django,mod
From: https://www.cnblogs.com/HeroZhang/p/18108385

相关文章

  • windows版本docker修改存储目录
    dockerdesktop里面,settings=>resource=>advance 或者手动操作1使用wsl--list-v在cmd终端,查看桌面是否关闭,如果没有关闭,使用wsl--shutdown立即终止所有正在运行的发行版和WSL2轻量级实用程序虚拟机2.查看存储地址默认情况下,DockerDesktopforWindow会创建如下......
  • Django——初探路由
    第3章初探路由3.1路由定义规则​ 路由称为URL,也可以称为URLconf,是对可以从互联网上得到的资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每一个文件都有一个唯一的路由,用于指出网站文件的路径位置。简单地说,路由可视为我们常说的网址,每个网址代表......
  • Veritas NetBackup 10.4 (Unix, Linux, Windows) - 领先的企业备份解决方案
    VeritasNetBackup10.4(Unix,Linux,Windows)-领先的企业备份解决方案The#1enterprisebackupandrecoverysolution.请访问原文链接:https://sysin.org/blog/veritas-netbackup-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org备份和恢复软件解决方案领......
  • Nexpose v6.6.244 for Linux & Windows - 漏洞扫描
    Nexposev6.6.244forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseMar27,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • cJSON(API的详细使用教程)
    我们今天来学习一般嵌入式的必备库,JSON库1,json和cJSON那什么是JSON什么是cJSON,他们之间有什么样的关联呢,让我们一起来探究一下吧。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它易于人阅读和编写,也易于机器解析和生成。JSON采用键值对的方式来表示数据,通常用......
  • Python教程01-基础知识
    1.注释1.1什么是注释从小我们知道看书时,可以做一些笔记,能够把当时的灵感想法记录下来,以便在以后再次阅读时快速想起来同样,Python编程语言是由英文编写的,很多时候怕忘记这些代码的作用以及注意点等,也需要写一点“笔记”,此时这些帮助我们的信息就成为“注释”1.2注释的作用......
  • 跨境电商系统搭建教程
    1、系统环境4h8g,centos7.9,php7.4,mysql8.0.24,nginx1.21.42、创建站点创建站点的时候,顺便创建数据库。暂存一下创建的数据库链接信息3、上传源码将api.zip源码文件上传到创建的站点点击开始上传将上传的源码文件解压4、配置伪静态选择laravel5规则5、配置网站目......
  • Django-xadmin+rule对象级权限的实现方式
    Django-xadmin+rule对象级权限的实现方式1.需求vs现状1.1需求要求做一个ERP后台辅助管理的程序,有以下几项基本要求:基本的增删改查功能基于对象的权限控制(如:系统用户分为平台运营人员和商家用户,商家用户小A只能查看编辑所属商家记录,而管理员可以纵览全局)数据库记录导......
  • django安装xadmin及问题解决
    django安装xadmin及问题解决环境:Windows10专业版pycharmpro2020.3django3.2.1xadmin选django2的版本一,安装这里我选择从GitHub安装:pipinstallgit+https://github.com/sshwsfc/xadmin.git结果如下:Successfullyinstalleddefusedxml-0.7.1diff-match-patch......
  • WPF中动画教程(DoubleAnimation的基本使用)
    实现效果今天以一个交互式小球的例子跟大家分享一下wpf动画中DoubleAnimation的基本使用。该小球会移动到我们鼠标左键或右键点击的地方。该示例的实现效果如下所示:页面设计xaml如下所示:<Windowx:Class="AnimationDemo.MainWindow"xmlns="http://schemas.microsof......