Windows下django项目部署通过Apache2.4+mod_wsgi

Windows下django项目部署 通过Apache2.4+mod_wsgi[Python基础]

经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程

运行环境:

     先说下我使用的环境,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(python,Apache2.4)

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

下面这张图说明python与Apache的版本:

      版本信息:

Apache2.4VC14 64bit

Python 3.5.2-amd64

Django 2.2 #python3.5不支持django3.0以上版本**

MySQL 8.0.19

Apache2.4安装:

在Apache官网上找到对应的安装包

下载Apache2.4 VC14 地址:https://www.apachelounge.com/download/vc14/

打开httpd.conf文件(在Apache24/conf目录下)

Define SRVROOT "C:webApache24"

Listen 80

ServerName www.example.com:80

DocumentRoot "C:webApache24htdocs"

<Directory "C:webApache24htdocs">

具体如何安装Apache不多说了,下面这几条常用命令还是说明一下:

httpd -k install -n #安装Apache服务

net start/stop Apache2.4 #启动停止Apache服务

sc delete Apache2.4 #删除Apache服务

httpd -k uninstall #卸载Apache

python-3.5安装:

本文略

Mysql-8.0.19安装:

本文略;但运行时mysql库需配置好。

下面具体讲述mod_wsgi相关配置:

在上述完成之后,Apache启动访问IP地址访问出现 It WORKS! ,开始部署。

在Django项目文件夹下建一个虚拟环境:

pip install virtualenv #下载virtualenv包

virtualenv 1_env #新建环境1_env

activate #须cd到1_envScripts目录下运行activate

先将下载好的mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64.whl复制到Scripts目录

pip install "c:djangomode1_envmod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64.whl" #通过pip安装mod_wsgi

如果安装失败检测自己所下载对应的版本是否有问题,成功的话继续往下走;

mod_wsgi-express module-config #在刚才的环境里面运行命令,会得到两条配置信息,将信息拷贝下来,后面有用

两条像这样的配置信息:

LoadModule wsgi_module "c:/djangomode/1_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"

WSGIPythonHome "c:/djangomode/1_env"

注:可能你们看过其他博主输出的是三条配置,不过不要紧,我们无需设置LoadFile "c:/python35/python35.dll

在运行Apache服务时遇到启动不了,查看Apache24/logs/error.log文档发现错误如下:

Fatal Python error: Py_Initialize: unable to load the file system codec

LookupError: no codec search functions registered: can"t find encoding

注;Python找不到它的modules目录,所以它当然也可以不加载encodings

解决方法修改windows环境变量配置:

PYTHONPATH="C:python35DLLs;C:python35Lib;C:python35Libsite-packages" #路径之间用逗号;分开

PYTHONHOME=C:python35

注意,如果开发环境需要,您可能需要希望将任何其他库路径附加到PYTHONPATH中,但正确设置DLLs、Lib和site-packages是最重要的。

Django项目setting.py修改:

这里先说一下原因,setting配置相对路径信息在移到Apache与mod_wsgi运行时,相对路径会访问不了,需要修改为绝对路径。

在我修改为绝对路径时,运行Apache报了一个错

OSError: [Errno 22] Invalid argument: "C:\Djangomode emplates\500.html"

需要在文件路径前加上 r"filepath"

r"filepath":意思是指为了避免xx是一个转义字符而导致的错误,也就是说加上r之后,""里的就不再出现转义字符,编程纯的文件地址。

TEMPLATES = [{

"DIRS": [r"C:Djangomode emplates"]

]

注:这里只描述一处,其余相对路径也需改成绝对路径并加上 r 。

在项目正式上线时必须将DEBUG设为False:

DEBUG = False

可指定主机,若元素为"*",表示所有同一局域网内的网络均可被访问:

ALLOWED_HOSTS = ["*"]

配置Apache2.4的httpd.con文件:

DocumentRoot "C:Djangomode" #Djangomode为项目根目录

<Directory "C:Djangomode">

在文件底部加上下面代码(需根据实际环境更改参数)

##--------------- Django项目部署配置 ---------------##

LoadModule wsgi_module "c:/djangomode/1_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"

WSGIPythonHome "c:/djangomode/1_env"

#指定项目的"wsgi.py"配置文件路径

WSGIScriptAlias / "C:DjangomodeDjangomodewsgi.py"

#指定Django项目根目录

WSGIPythonPath "C:Djangomode"

<Directory "C:DjangomodeDjangomode">

<Files wsgi.py>

Require all granted

</Files>

</Directory>

#项目静态文件地址

Alias /static "C:Djangomodestatic"

<Directory "C:Djangomodestatic">

AllowOverride None

Options None

Require all granted

</Directory>

#项目上传文件根目录

Alias /uploads "C:Djangomodeuploads"

<Directory "C:Djangomodeuploads">

AllowOverride None

Options None

Require all granted

</Directory>

修改完之后重启Apache服务,Apache服务属性会被修改,如下图:

        在浏览器上输入IP地址端口或主机域名访问Django项目,在httpd.conf中配置的主机域名ServerName 

etc/hosts需加入域名如:

127.0.0.1 Djangomode

检查ip地址或域名是否正常,在cmd窗口输入ping如:

ping www.baidu.com #ping的通则正常

        访问成功!祝贺自己,耶!

以上是 Windows下django项目部署通过Apache2.4+mod_wsgi 的全部内容, 来源链接: utcz.com/z/537880.html

回到顶部