如何使用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