Django, 在 apache2, wsgi 設定
一開始讀著官方的 Tutorial 在學Django的時候,發現一開始的例子裡面並沒有說明怎麼設定才能用 apache2 來跑Django的project。後來才在比較後面的章節裡面發現這一類的教學,這著實讓我花了一番時間才找到...Orz..。
最基本的就是要讓 apache2 可以直接運行python程式,所以要在apache2上安裝可以跑python的模組,像是mod_wsgi, mod_python...等等有的沒的。這麼多方法當然不可能全都用一次吧,所以我就選擇比較推薦的mod_wsgi來用了,為何官方比較推薦這個模組我就不得而知了。
所以大原則就是指定apache2 server去跑你寫的一個python執行擋來運作Django。
=====================
安裝apache2的mod_wsgi:
=====================
安裝mod_wsgi的方法在Debian下很簡單:
sudo apt-get install libapache2-mod-wsgi
======================================
寫一個會去跑Django Project的python 執行檔
======================================
在這裡假設已經開始一個django project,名稱為"website",而此project在"/home/user"底下。
也就是說project的設定檔為"/home/user/website/setting.py"
寫一個python script檔叫apache2去執行它,在這裡假設檔名為 "app.wsgi",而裡面的內容就如下:
然後把app.wsgi放在"/home/user/apache2/"底下。(非限定,要放哪就放哪,只是對應的apache2設定檔要設定好)
然後接下來就要設定apache2去跑這個python script檔。去設定/etc/apache2/httpd.conf這個檔,加入以下內容:
然後重新sudo /etc/init.d/apache2 restart應該就ok了...
Reference:
https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/
最基本的就是要讓 apache2 可以直接運行python程式,所以要在apache2上安裝可以跑python的模組,像是mod_wsgi, mod_python...等等有的沒的。這麼多方法當然不可能全都用一次吧,所以我就選擇比較推薦的mod_wsgi來用了,為何官方比較推薦這個模組我就不得而知了。
所以大原則就是指定apache2 server去跑你寫的一個python執行擋來運作Django。
=====================
安裝apache2的mod_wsgi:
=====================
安裝mod_wsgi的方法在Debian下很簡單:
sudo apt-get install libapache2-mod-wsgi
======================================
寫一個會去跑Django Project的python 執行檔
======================================
在這裡假設已經開始一個django project,名稱為"website",而此project在"/home/user"底下。
也就是說project的設定檔為"/home/user/website/setting.py"
寫一個python script檔叫apache2去執行它,在這裡假設檔名為 "app.wsgi",而裡面的內容就如下:
#-*- coding: utf-8 -*- import os import sys path = '/home/user' # 上面這個path是django project的位置 if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE']= 'website.settings' # 上面這個website就是django project的名稱 import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() |
然後把app.wsgi放在"/home/user/apache2/"底下。(非限定,要放哪就放哪,只是對應的apache2設定檔要設定好)
然後接下來就要設定apache2去跑這個python script檔。去設定/etc/apache2/httpd.conf這個檔,加入以下內容:
WSGIScriptAlias /app /home/user/apache2/app.wsgi # http://你的主機位址/app 就會出現你的django所呈現的網頁 <Directory /home/user/website/apache2> Order deny,allow Allow from all </Directory> |
然後重新sudo /etc/init.d/apache2 restart應該就ok了...
Reference:
https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/
留言
張貼留言