如何使用wsgi在centos上运行django

Posted

技术标签:

【中文标题】如何使用wsgi在centos上运行django【英文标题】:how can run django on centos using wsgi 【发布时间】:2014-09-05 19:20:55 【问题描述】:

我尝试了 2 种方式来配置 wsgi 以在我的网站上使用 Django。 我的根项目文件在 /var/run/myApp. 这是我的 wsgi.py :

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myApp.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

1.我安装了在 apache 上运行 Django 并使用 centos 作为操作系统所需的一切。我使用this 站点来运行 wsgi。我使用这个命令来设置我的服务器:

mod_wsgi-express setup-server wsgi.py --port=80 --user test --group test --server-root=/var/run/myApp/mod_wsgi-express-80

之后我运行这个命令,一切都很好:

/var/run/myApp/mod_wsgi-express-80/apachectl start

但是当我浏览我的网站时出现错误500 : Internal Server Error

2.我也已经尝试过另一种配置 apache conf 文件的方法,但我在 apache 的 error_log 中收到此错误:

" Target WSGI script not found or unable to stat: /run "

这就是我在 httpd.conf 中写的:

WSGIDaemonProcess mySite user=test group=test
WSGIProcessGroup mySite

<VirtualHost *:80>
    WSGIScriptAlias / run/myApp/my_App/wsgi.py
    <Directory run/myApp/my_App>
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

什么问题?谢谢。

【问题讨论】:

看起来很明显:你的路径是/var/run/myApp...,但你的httpd.conf只有run/myApp... 我尝试 /var/run/myApp... 但没有成功 500:内部服务器错误意味着您的代码有问题。请尝试独立运行此应用程序。如果它工作正常,然后使用 apache 运行。还要检查 apache_error.log 是否有 wsgi 脚本中的错误。 我在将我的应用程序放到 apache 上之前对其进行了测试,它工作正常。当我尝试方法 #1 时,日志文件中没有错误 检查 apache 错误日志。 【参考方案1】:

如果使用 Django,最好使用 Django 的 mod_wsgi express 集成。

因此,在 Django settings.py 中将 'mod_wsgi.server' 添加到 INSTALLED_APPS

然后在runmodwsgi管理命令中使用--setup-only选项:

python manage.py runmodwsgi --setup-only --port=80 --user test --group test --server-root=/var/run/myApp/mod_wsgi-express-80

这不是使用mod_wsgi-express setup-server

然后您可以使用:

/var/run/myApp/mod_wsgi-express-80/apachectl start

作为根用户。

通过使用runmodwsgi 管理命令,mod_wsgi express 将考虑 Django 静态文件目录并自动将其添加到生成的 Apache 配置中。

在使用静态文件时,只要记住运行:

python manage.py collectstatic

以便将所有静态文件复制到您在 Django settings.py 文件中指定的 STATIC_ROOT 目录。

在使用管理命令时,mod_wsgi express 还应正确设置 Django 的***目录作为应用程序的主目录,并确保正确设置模块搜索路径,以便找到您的项目模块。

【讨论】:

以上是关于如何使用wsgi在centos上运行django的主要内容,如果未能解决你的问题,请参考以下文章

使用 mod_wsgi 在 Centos 6.5 上部署基于 python3.4 的 Django 项目:可行吗?

使用 Apache 和 mod_wsgi 在 Centos 上设置 Django

'使用mod_wsgi在apache上部署django app时,没有名为'encodings''的模块

使用 mod_wsgi 在 apache 上设置 Django

在 ubuntu 17 上通过 wsgi 运行 django 应用程序的问题

使用 apache2 在 mod_wsgi 上运行 django python 3.4