Django用Apache和mod_wsgi部署

摘要:
Setws=CreateObject(“Wscript.Shell”)ws.run“cmd/cd:使用apache和mod_wsgi部署django。//www.djangoproject.com/start/关注以下主题:使用apache或mod_wsg部署django。设置环境变量键:
背景

最近写了一个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

免责声明:文章转载自《Django用Apache和mod_wsgi部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android项目中JNI技术生成并调用.so动态库实现详解【Win10应用开发】自定义磁贴通知的排版下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter远程多机负载进行性能测试

使用多台机器产生负载的操作步骤如下: (1)确保所有的agent 机器上面都安装好了jmeter和JDK (2) 运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.9.99 和192.168.9.130 作为agent) (3)在controller机器的jmeter的bin目录下,找到jmeter.prope...

python环境搭建

目录 python安装 配置python环境变量 pycharm安装 pycharm使用 python安装 打开官网:http://www.python.org,点击Downloads下载,如下图 进入python版本下载页面,选择对应版本以及电脑位数进行下载,如下图(红色为windows64位,蓝色为Windows32位) 下载完成,双...

oracle sqlldr导入数据和导入去除空格

1.新建目录E:load把需要导入的数据文件放到目录下面  这是我自己造的测试数据。。。 2.在文件下新建脚本文件 Load data infile 'E:loadinfo.txt' into table "TEST_TABLE" fields terminated by "!" TRAILING NULLCOLS( T1, T2, T3 )  3....

织梦cms dedecms程序安装问题

织梦程序的安装及使用 程序安装使用 1.下载程序解压到本地目录; 2.上传程序目录中的/uploads到网站根目录 3.运行http://xxx.xxx.xxx/install/index.php(xxx.xxx.xxx表示你的域名) ,之后按照安装说明进行程序安装 注意事项: 1、安装时候,数据库地址、数据库用户、密码、数据库名这四项是空间商提供的,如果...

JConsole远程配置

JConsole是JDK自带的内存监控工具 1、linux配置tomcat-9.x      修改setenv.sh文件(默认没有的,需自己创建),增加配置: #!/bin/sh JAVA_HOME=/usr/local/jdk1.8.0_221/ CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.host...

Nginx大文件(百M以上)的上传下载实现技术

javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求     1. 通过form表单向后端发送请求          <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" m...