標籤:
在ubuntu上通過apatch2和wsgi部署django
(親手做過!!!)
一,我的python、django、apatch2版本:
python:python -V
2.7.3
django:python -c "import django; print(django.VERSION)"
(1, 9, 4, ‘final‘, 0)
apache2:/usr/sbin/apachectl -v
Server version: Apache/2.2.22 (Ubuntu)
Server built: Jul 24 2015 17:25:52
二,安裝python 和django。
三,安裝apache2 和 wsgi。
sudo apt-get insall apache2
sudo apt-get install libapache2-mod-wsgi
如果之前安裝配置過apache2的並且配置很亂,無法修複,建議還是完全卸載之後再安裝。完全卸載的命令:
sudo apt-get --purge remove apache*
sudo apt-get --purge remove apache-common
安裝完以後,去 /etc/apache2/ 下的 mods-available 和mods-enabled 中查看是否都存在 wsgi.conf 和wsgi.load 兩個檔案。有則說明wsgi模組載入到apache2成功。
四,配置apache 和 wsgi
(PS 假設你是在目錄/var/www/mysite 下面 django-admin.py startproject testproject )
我項目的tree:
1、apache的配置:
在/etc/apache2/site-available中建立一個檔案 testdjango.conf (PS中文注釋都刪除)
<VirtualHost *:80> ServerName testdjango.com #ServerName這個無所謂,只要在host中把你的ip地址映射到這個上面就可以了。不想改host最簡單的方法就是用 sudo a2dissite 000-default.conf 等虛擬機器主機給disable掉,只留 testdjango.conf。(PS.site-enabled中的檔案是link site-availabel下的檔案,如果存在link檔案則是enable的,可以根據這個來查看) DocumentRoot /var/www/mysite/testproject #這一條是指向網站的根目錄 <Directory /var/www/mysite/testproject> Order allow,deny Allow from all </Directory> WSGIDaemonProcess testdjango.com processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup testdjango.com #對應前面的ServerName
WSGIScriptAlias / /var/www/mysite/testproject/apache/django.wsgi #將後面的那個路徑指向網站的根目錄。第一個“/”表示外部存取時的網站根目錄,當有新的requset的時候,apache從這裡開始解析。
</VirtualHost>
2、wsgi的配置
在/var/www/mysite/testproject/下建立dir:apache 。在./apache下建立檔案django.wsgi。(檔案名稱對應前面的WSGIScriptAlias第二個路徑下的檔案名稱)
#coding:utf-8
import osimport syspath = ‘/var/www/mysite‘if path not in sys.path: sys.path.insert(0, ‘/var/www/mysite/testproject‘) #將網站工程目錄臨時加入ubuntu系統內容中os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘testproject.settings‘ #建立一個環境變數DJANGO_SETTINGS_MODULE,目的是指向django工程的settings.py,這裡
#import django.core.handlers.wsgi #old version use
#application = django.core.handlers.wsgi.WSGIHandler()
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
五,驗證
sudo a2ensite testdjango.conf #enable testjango.conf
sudo service apache2 reload (PS 如果reload時出現 apache2: Could not reliably determine the server‘s fully qualified domain name, using 127.0.1.1 for ServerName。雖然不影響但有個warning讓人不爽,可以在/etc/apatch2/httpd.conf 中加入ServerName localhost)
最後瀏覽器 http://127.0.0.1或localhost或你ubunt的IP 就可以看見django的初始頁面了。
其它機器的瀏覽器也可以通過你的ubuntu的IP來查看你django的項目的頁面。
六,常見錯誤及log:
apache2的error log檔案:/var/log/apache2/error.log
錯誤1:Internal Server Error 如
應該是django.wsgi裡用了我注釋的 django.core.handlers.wsgi 這個方法。用下面的那個get_wsgi_application 就沒問題了。
ubuntu python apache2 wsgi django架構