ubuntu python apache2 wsgi django架構

來源:互聯網
上載者:User

標籤:

在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架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.