程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Linux環境Apache+Django+wsgi配置

編輯:Python

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


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved