专栏首页叉叉敌Django用Apache和mod_wsgi部署

Django用Apache和mod_wsgi部署

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42514606/article/details/102930166

背景

最近写了一个Djangowindows上运行,但是用的vbs命令,导致在后台运行的时候,必须用户登录才可以运行,还有就是登录之后,有其他进程可能被干掉。

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c D:\xxd\run.bat",vbhide

` bat 内容
C:\Python37\python3.exe manage.py runserver 0.0.0.0:8000 >> console.log

第二种创建task的方式,也是只能是用户登录后才可以,不是service级别的,不能开机就运行。

第三种就是用sc创建服务来运行,不过这个需要文件是程序必须是二进制的可执行程序,这就排除了脚本语言和虚拟机语言;其次,程序必须按系统服务的格式编写,编写过程繁琐,可以参考下面的连接:

https://code.msdn.microsoft.com/windowsapps/CppWindowsService-cacf4948。

不过这个有现成的轮子可以拿来用,就用脚本语言、python/bat等可以直接用,他的名字就是EasyService。但是今天要讲的不是这个,是用apache和mod_wsgi来部署django。

后面可以从windows迁移到linux也可以运行的话,用Apache httpd来运行,是非常不错的

准备

  1. 环境准备
python3.7
mysql5~8
还有apache -httpd
mod_wsgi

保证python和apache都是统一的,都是32位或者都是64位。

下面是我的pip requirement list

asn1crypto==0.24.0
cffi==1.11.5
cryptography==2.3
Django==2.0.7
idna==2.7
mod-wsgi==4.5.24+ap24vc14
pip==19.3.1
pycparser==2.18
PyMySQL==0.9.2
pytz==2018.5
setuptools==41.6.0
six==1.11.0
wheel==0.31.1

配置

创建工程,搭建mysql环境,以及怎么启动。可以参考

https://www.djangoproject.com/start/

重点是讲下标题的用 apache和mod_wsgi来部署django。 什么是mod_wsgi

mod_wsgi is an Apache HTTP Server module by Graham Dumpleton that provides a WSGI compliant interface for hosting Python based web applications under Apache. As of version 4.5.3, mod_wsgi supports Python 2 and 3 (starting from 2.6 and 3.2).

  1. 安装apahce, 并设置一个环境变量
key: MOD_WSGI_APACHE_ROOTDIR
value: C:\wamp64\bin\apache\apache<version>\
  1. 创建一个virtualHost启动文件,根据自己的修改工程名字和路径
import os
import sys
import site

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('C:/Python37/Lib/site-packages')

# Add the app's directory to the PYTHONPATH
sys.path.append('D:/xxd/Assetlog')
sys.path.append('D:/xxd/Assetlog/AssetLog')

os.environ['DJANGO_SETTINGS_MODULE'] = 'AssetLog.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "AssetLog.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
  1. 安装mod_wdgi
pip3 install mod_wsgi
或者直接用pip3 install whl文件
pip3 install mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl 
# https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下载
  1. 配置apache和mod_wsgi 查看apache配置信息mod_wsgi-express module-config, 如果执行mod_wsgi-express失败,在python安装目录里面找C:\Python37\Scripts,我的在这个目录下。
LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIPythonHome "c:/python37"

把这个信息追加到apache配置文件httpd.conf的最后

最后在配置文件

下面配置apache虚拟主机,如果有多个django工程,可以添加多个。配置文件在conf\extra\httpd_vhosts.conf里面

<VirtualHost *:8000>
    ServerName localhost 
    WSGIPassAuthorization On
    ErrorLog "logs/asset.error.log"
    CustomLog "logs/asset.access.log" combined
    WSGIScriptAlias /  "D:/xxd/Assetlog/AssetLog/wsgi_win.py"
    <Directory "D:/xxd/Assetlog/AssetLog">
        <Files wsgi_win.py>
            Require all granted
        </Files>
    </Directory>

    Alias /static "D:/xxd/Assetlog/static"
    <Directory "D:/xxd/Assetlog/static">
        Require all granted
    </Directory>  
</VirtualHost>

参考

  • Apache 虚拟机配置 https://blog.csdn.net/leoly612200/article/details/74913049
  • How to use Django with Apache and mod_wsgi https://django.readthedocs.io/en/2.2.x/howto/deployment/wsgi/modwsgi.html
  • Deploying a Django application in Windows with Apache and mod_wsgi https://www.codementor.io/aswinmurugesh/deploying-a-django-application-in-windows-with-apache-and-mod_wsgi-uhl2xq09e
  • http://terokarvinen.com/2017/django-on-apache-with-python-3-on-ubuntu-16-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实战:人脸识别的Arcface实现 | CSDN博文精选

    本文将简单讲述arcface从训练到部署的整个过程,主要包括前期的数据筛选和准备,模型训练以及模型部署。

    AI科技大本营
  • 实战:基于tensorflow 的中文语音识别模型 | CSDN博文精选

    目前网上关于tensorflow 的中文语音识别实现较少,而且结构功能较为简单。而百度在PaddlePaddle上的 Deepspeech2 实现功能却很强大,...

    AI科技大本营
  • 闲鱼疯转6800份!大厂内部数据分析资料首公开

    在任何一个企业中,每个运转的环节都会产出其对应的数据,当企业出现问题时,正确完整的数据分析可以帮助决策者做出明智有利的决策。

    乔戈里
  • 神器!输错命令,fuck 一下,就能自动纠正!

    她是一位程序员,Netlify 开发者体验团队负责人,Vue 核心团队成员。她也是一位非常有趣的美女,个人网站起名 bomb site。

    用户6543014
  • MySQL日期和时间类型笔记

    最近在看《MySQL技术内幕:SQL编程》并做了笔记,这是一篇笔记类型博客,分享出来方便自己复习,也可以帮助其他人

    用户1208223
  • 重装系统快速恢复使用习惯(各种图标摆放位置、环境变量、C盘可能存放的文件备份、编辑器配置、语言环境导出)

    本文的操作是借助于移动硬盘来实现的(同时也默认你有 东西不常放C盘 的好习惯),你可以

    suwanbin
  • C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”

    SciSharp 是怎样的一个社区?它是如何构建一个基于 .NET 的机器学习生态?它在做的事情对开发者来说有何意义?本次,AI 科技大本营与 SciSharp...

    AI科技大本营
  • Python 工匠:使用装饰器的技巧

    01 前言 装饰器(Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 @ 符...

    腾讯NEXT学位
  • Python的内置函数(二十九)、 strip()

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • Python类中的方法要加self的理由

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇

扫码关注云+社区

领取腾讯云代金券