windows +apache + django + mod_wsgi 部署 Django 站点

2023-02-17 14:53:20 浏览数 (1)

前提、部署环境

1. windows 10 x64

2. apache 2.4 x64

3. python 3.5 x64

4. django 1.11

5. mod_wsgi: ap24vc14-cp35-cp35m-win_amd64

一、 下载文件 

1. 下载 apache2.4 x64(x64 代表给 64 位系统用的)

list: https://www.apachehaus.com/cgi-bin/download.plx

file: https://www.apachehaus.com/cgi-bin/download.plx?dli=XhkTpRVeNNzTUJ0KRxGa6BlVOpkVFVFdOhlR1FVU

2. 下载 mod_wsgi(ap24vc14-cp35-cp35m-win_amd64, ap 代表 Apache 版本、vc14 代表 Visual Studio C 2015、 vc15 Visual Studio C  2017、cp 代表 python 版本、amd 64 代表 64位系统)

list: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

file: http://www.lfd.uci.edu/~gohlke/pythonlibs/zhckc95n/mod_wsgi-4.5.19 ap24vc14-cp35-cp35m-win_amd64.whl

二、安装 apache2.4 x64

解压 httpd-2.4.28-o102l-x64-vc14.zip 复制 Apache24 文件夹到你指定的目录即可(本人路径:E:AppServhttpd-2.4.28-o102l-x64-vc14Apache24)

三、安装 mod_wsgi-4.5.19 ap24vc14-cp35-cp35m-win_amd64.whl

1. cmd 中执行:(没有 mod_wsgi.so 文件)

代码语言:javascript复制
pip install mod_wsgi-4.5.19 ap24vc14-cp35-cp35m-win_amd64.whl

2. 获取 mod_wsgi 载入代码(cmd 中执行)

代码语言:javascript复制
cd  E:Python35Scripts

mod_wsgi-express module-config

以下这段是替代原来的 LoadModule wsgi_module modules/mod_wsgi.so  载入 mod_wsgi 方法

代码语言:javascript复制
E:Python35Scripts>mod_wsgi-express module-config
LoadFile "e:/python35/python35.dll"
LoadModule wsgi_module "e:/python35/lib/site-packages/mod_wsgi/server/mod_wsgi.c
p35-win_amd64.pyd"
WSGIPythonHome "e:/python35"

四、配置 httpd.conf (E:AppServhttpd-2.4.28-o102l-x64-vc14Apache24conf, 参数详情介绍

代码语言:javascript复制
# 定义 SRVROOT 变量,引用使用 ${SRVROOT};定义服务运行路径 ServerRoot 
Define SRVROOT "E:/AppServ/httpd-2.4.28-o102l-x64-vc14/Apache24"
ServerRoot "E:/AppServ/httpd-2.4.28-o102l-x64-vc14/Apache24"

# 监听80端口
Listen 80

# 添加mod_wsgi.so 模块  
LoadFile "e:/python35/python35.dll"
LoadModule wsgi_module "e:/python35/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "e:/python35"

# 联系邮箱
ServerAdmin zhuoqun527@qq.com  

# 服务器域名或者 ip
ServerName 10.0.0.20

# 指定项目的 wsgi.py 配置文件路径    
WSGIScriptAlias / H:/Python_1608/joyoo/joyoo/wsgi.py

# 指定项目路径    
WSGIPythonPath H:/Python_1608/joyoo

# 指定 python 的目录
# 因为载入 mod_wsgi.pyd 时已经写了 python 目录这里就注释了
# WSGIPythonHome  E:/Python35  

# 添加wsgi的读取权限
<Directory H:/Python_1608/joyoo/joyoo>    
<Files wsgi.py>    
    Require all granted    
</Files>    
</Directory>    

# 声明 静态文件 的映射 
Alias /static H:/Python_1608/joyoo/static_root    
<Directory H:/Python_1608/joyoo/static_root>     
    AllowOverride None    
    Options None    
    Require all granted    
</Directory>

# 声明 media 文件的映射 
Alias /media H:/Python_1608/joyoo/media  
<Directory H:/Python_1608/joyoo/media>     
    AllowOverride None    
    Options None    
    Require all granted    
</Directory>

五、windows 添加删除服务

1. 添加服务:

命令:启动命令路径文件 -k install -n 服务名称

打开CMD窗口,输入:"E:AppServhttpd-2.4.28-o102l-x64-vc14Apache24bin>httpd.exe" -k install -n apache2.4x64

切记,包含引号。该命令的意思是,安装apache服务,并将该服务名称命名为 apache2.4x64(你也可以改成别的),回车。

cmd 中执行:

代码语言:javascript复制
E:AppServhttpd-2.4.28-o102l-x64-vc14Apache24bin>httpd.exe -k install -n apache2.4x64

Installing the 'apache2.4x64' service
The 'apache2.4x64' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.

2. 删除服务:

命令:sc delete 服务名称

E:Python35Scripts>sc delete apache2.4x64

[SC] DeleteService 成功

3. 局域网 固定本机电脑 IP:

六、部署出错了,咋办?

1. 检查 Apache 、python、mod_wsgi 版本是否匹配

2. 检查 httpd.conf 配置是否正确

3. 出错的日志,丢到搜索引擎去找答案,挨个尝试

4. 无法访问 80 端口,给系统入站规则 增加 TCP 80 端口可访问, 操作文档

5. 导入 pandas 包后,打开站点一直响应中,httpd.conf 增加一行:WSGIApplicationGroup %{GLOBAL},详情

七、centos7 下部署

centos7 virtualenv django uwsgi nginx 部署站点

0 人点赞