在Apache服务器上部署Django应用程序

时间:2019-08-10 12:52:24

标签: python django apache

我正在尝试在apache服务器(Xampp)上部署django应用程序

当前版本:-

Python 3.7.3
Xampp :- 3.2.4
Apache :- 2.4
windows 10

注意:-我正在使用虚拟环境

正在搜索操作方法并遇到了Tutorial

但是,进行与django文档相同的更改后。我的apache服务器未运行

引发错误

  

错误:Apache意外关闭。这可能是由于被阻止   端口,缺少依赖项,权限不当,崩溃或   通过另一种方法关闭。按日志按钮查看错误日志   并检查Windows事件查看器以获取更多线索。   帮助,复制并在论坛上发布整个日志窗口

我确实将 httpd.conf 中的端口更改为其他应用程序未使用的其他端口,我无法确定问题所在。

已添加到httpd.conf

LoadModule wsgi_module "c:/users/xxxx/appdata/local/programs/python/python37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIScriptAlias / "K:/Work/DevNet/first_project/first_project/wsgi.py"
WSGIPythonHome "C:/Users/xxxx/AppData/Local/Programs/Python/Python37-32"
WSGIPythonPath "K:/Work/Net/first_project"


<Directory "K:/Work/Net/first_project">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

在httpd.conf中,如果我评论添加的行,则apache可以正常工作,但是当我取消注释这些行时,apache则行不通。 :-(

感谢那些乐于助人的人。 :-)

Windows事件查看器日志:-

[Sat Aug 10 19:00:05.852622 2019] [ssl:warn] [pid 9612:tid 560] AH01909: www.example.com:4433:0 server certificate does NOT include an ID which matches the server name
[Sat Aug 10 19:00:05.928109 2019] [core:warn] [pid 9612:tid 560] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sat Aug 10 19:00:06.027802 2019] [ssl:warn] [pid 9612:tid 560] AH01909: www.example.com:4433:0 server certificate does NOT include an ID which matches the server name
[Sat Aug 10 19:00:06.049409 2019] [mpm_winnt:notice] [pid 9612:tid 560] AH00455: Apache/2.4.39 (Win64) OpenSSL/1.0.2s PHP/7.1.30 configured -- resuming normal operations
[Sat Aug 10 19:00:06.049409 2019] [mpm_winnt:notice] [pid 9612:tid 560] AH00456: Apache Lounge VC14 Server built: May 29 2019 14:38:49
[Sat Aug 10 19:00:06.049409 2019] [core:notice] [pid 9612:tid 560] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Sat Aug 10 19:00:06.072102 2019] [mpm_winnt:notice] [pid 9612:tid 560] AH00418: Parent: Created child process 12636
[Sat Aug 10 19:00:06.769853 2019] [ssl:warn] [pid 12636:tid 524] AH01909: www.example.com:4433:0 server certificate does NOT include an ID which matches the server name
[Sat Aug 10 19:00:06.959523 2019] [ssl:warn] [pid 12636:tid 524] AH01909: www.example.com:4433:0 server certificate does NOT include an ID which matches the server name
[Sat Aug 10 19:00:06.981305 2019] [mpm_winnt:notice] [pid 12636:tid 524] AH00354: Child: Starting 150 worker threads.

2 个答案:

答案 0 :(得分:1)

https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst这里有四个要求,您应该遵守。

据我所知,您没有遵循第一条规则,因为您拥有Apache Win64版本Apache/2.4.39 (Win64),但您使用的是32位python版本和mod_wsgi python37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd

此外,我注意到您说您正在使用虚拟环境。确保您的wsgi.py首先加载虚拟环境。我的文件是这样开始的:

python_home='/path/to/the/djangoproject/venv'
activate_this=python_home+'/bin/activate_this.py'
with open(activate_this) as file_:
        exec(file_.read(), dict(__file__=activate_this))

此外,我建议通过在VirtualHost文件中指定WSGIDaemonProcess和WSGIProcessGroup指令,将mod_wsgi配置为在守护程序模式下运行。

答案 1 :(得分:0)

在日志中(在配置的步骤中),它也应该显示WSGI模块版本。 但是您的日志中没有任何关于WSGI的信息-因此我怀疑您没有正确进行WSGI设置。 我已经从我的apache发布了一个示例日志(当然,它是不同的操作系统,但是应该相似)。

[Fri Aug 02 13:51:39.962856 2019] AH00163: Apache/2.4.39 (Unix) mod_wsgi/4.6.7 Python/3.7 configured -- resuming normal operations