前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux环境Apache+Django+wsgi配置

Linux环境Apache+Django+wsgi配置

作者头像
星哥玩云
发布2022-06-30 21:43:42
1.1K0
发布2022-06-30 21:43:42
举报
文章被收录于专栏:开源部署开源部署

在Django的开发环境,我们简单的通过“Python manage.py runserver 0.0.0.0:8000”就可以启动一个简单的HTTP服务器进行Django的开发。当项目开发完成进行发布的时候,这个简单的应用服务器就不能满足需求了。这时候一个比较好的方案是把Django应用集成到Apache

Django已经为我们做了许多工作,所以将Django集成到Apache是非常简单的事情。Django集成到Apache有两种方式:python_mod和wsgi,后者相对于前者更加稳定,所以这里我们通过wsgi的方式来进行集成。

--------------------------------分割线--------------------------------

先介绍一下我的环境:

0.CentOS X64

1.Apache 2.2.3

2.Django 1.6.1

集成第一步:安装mod_wsgi

yum insall python26-mod_wsgi.x86_64

安装完成之后检查Apache目录/etc/httpd/conf.d/会出现python26-mod_wsgi.conf,里边已经自动为我们好了加载mod_wsgi.so的配置:

################################################################################# # Do not enable mod_python and mod_wsgi in the same apache process. ################################################################################# #

# NOTE: By default python26-mod_python with not load if mod_wsgi is installed # and enabled.? Only load if mod_python and mod_wsgi are not already loaded.

<IfModule !python_module> ? ? <IfModule !wsgi_module> ? ? ? ? LoadModule wsgi_module modules/python26-mod_wsgi.so ? ? </IfModule> </IfModule>

集成第二步:编辑python26-mod_wsgi.conf

WSGIScriptAlias / "/search/lizhigang/mysite/mysite/wsgi.py" WSGIPythonPath /search/lizhigang/mysite

<Directory "/search/lizhigang/mysite/mysite"> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory>

这里需要说明一下,我的Django工程位于“/search/lizhigang/mysite/”,请根据自己工程的位置进行替换。

集成第三步:重启Apache

service apache restart

在浏览器访问你的Django应用(不是8000端口,而是Apache的端口),正常情况下这时候会提示“500,服务器内部错误”。 检查/etc/httpd/logs/error_log,看是否有如下错误:

[Errno 13] Permission denied: '/var/www/.python-eggs'

这时候需要编辑“/search/lizhigang/mysite/mysite/wsgi.py”,对“PYTHON_EGG_CACHE”进行设置:

import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") os.environ.setdefault("PYTHON_EGG_CACHE", "/tmp/.python-eggs")

from django.core.wsgi import get_wsgi_application application = get_wsgi_application()

刷新浏览器,这时候Django就成功集成到Apache了。

但是,如果你的应用使用了静态资源,比如图片、css、js,这些,就需要配置static了。我们假设这些资源均位于mysite/static目录。

集成第四步:配置static

打开python26-mod_wsgi.conf,加入对static/访问的支持:

Alias /static/ /search/lizhigang/mysite/static/ <Directory "/static/"> ? ? Order allow,deny ? ? Options Indexes ? ? Allow from all ? ? IndexOptions FancyIndexing </Directory>

刷新网站试试,是不是所有功能都与8000端口开发相同? 至此,我们就完成了Django到Apache的集成。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com