阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux环境Apache+Django+wsgi配置

133次阅读
没有评论

共计 2375 个字符,预计需要花费 6 分钟才能阅读完成。

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

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

推荐阅读:

Ubuntu Server 12.04 安装 Nginx+uWSGI+Django 环境 http://www.linuxidc.com/Linux/2012-05/60639.htm

Django 实战教程 http://www.linuxidc.com/Linux/2013-09/90277.htm

Django Python MySQL Linux 开发环境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm

——————————– 分割线 ——————————–

先介绍一下我的环境:

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 的集成。

Django 的详细介绍 :请点这里
Django 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2375字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中