Python 學習筆記13:Python + wsgi + django 配置。坑爹的python3和wsgi不相容的解決

來源:互聯網
上載者:User

標籤:

今人不見古時月,今月曾經照古人。生命是如此的美麗與短暫!

學習Python已經兩個月了,Python的文法通過做簡單的文法題和看Python文法介紹,有了初步的瞭解。但上班還是要做別的事情,所以感覺學起來特別慢。有一種時不我待的感覺。

 

基本的文法瞭解了,接下來就要儘快進入到項目的實戰。這樣才能快速的遇到問題,並解決問題,迅速提升能力。

開始當然就是先按網上的一般步驟,用django寫個部落格網站出來。

接下來就是血淚啊!配置這個Python + wsgi + django, 其噁心已達到足以讓我嘔出幾十兩血的程度。來看:

 

***********************

安裝環境:

Centos5.6

Python2.7

Mod_wsgi: mod_wsgi-4.4.13

Apache: httpd2.2

Django: Django-1.8.3

***********************

 

1. 安裝Python: Python2.7

    本來系統裡已經內建了Python2.6, 為了我的追求極致,裝逼的完美主義,我又安裝了Python3.4. 並且把 /usr/local/bin/python 直接指向Python3.4. 將其設為python的主要程式。

 此處就為悲劇的根源了。因為Python3 和 mod_wsgi 不相容 (註:至少到現在我還沒有找到能用使用python3 來安裝的wsgi),我安裝的時候直接使用 ./Configure   make    makeinstall 命令,導致系統先擇了將apache 的python版本設定成了python2.6. (註:wsgi: 即為 the python web server gateway interface, 其作用就是apache能通過它來串連並使用Python)

但是由於我的django是用Python3安裝的。最終導致apache根本就串連不上django, 我查詢httpd下的error_log來回無數遍,終於發現httpd使用的是python2.6。所以只能果斷使用python2了, 但是新的問題又出現了,因為下載的django版本過高,python2.6安裝不了,所以最終結果就是:安裝python2.7!

命令:

tar -xvf Python-2.7.10.tgzcd Python-2.7./configure --enable-shared

make

make install

可能遇到問題:python: error while loading shared  libraries: libpython2.7.so.1.0: 
  cannot open shared object file: No such file 

原因: python2.7 的庫找不到了

解決方案:1. 進入/etc/ld.so.conf.d/,

     2. 建立檔案:vim python2.7.conf

     3. 添加python2.7的庫的所在路徑: /usr/local/lib

              4. 儲存並退出,然後執行命令:ldconfig

 

2. 安裝django: Django-1.8.3

直接進入安裝包檔案夾使用python安裝

tar xzvf  Django-1.8.3 .tar.gz cd  Django-1.8.3sudo python  setup.py install

 

3. 安裝mod_wsgi: mod_wsgi-4.4.13

:https://pypi.python.org/pypi/mod_wsgi

安裝命令:

./configure --with-python=/usr/local/bin/python2.7makemake install

 

可能遇到問題:

           3-1. apxs: command not found

               原因: apache 組件 httpd-devel 沒有安裝

               解決辦法: yum install httpd-devel

           3-2. 在make時編譯失敗。查看錯誤第一行,發現:Sorry, Python developer package does not appear to be installed.

                        原因:python組件 python-devel沒有安裝

                        解決辦法: yum install python-devel

           參考連結: http://www.cnblogs.com/bolddream/p/mod_wsgi.html

4. 配置httpd(註:此目的為能讓httpd能通過wsgi來使用python,並訪問django的網站目錄) 非常重要,也很容易出問題:

          4-1. 為httpd添加wsgi的動態連結程式庫.so檔案的連結:

                 1. vim /etc/httpd/conf/httpd.conf

                 2. 新增內容:LoadModule  wsgi_module modules/mod_wsgi.so

                 3. 儲存退出。

          4-2. 繼續修改httpd.conf, 添加django項目的路徑,比如我建立的django網站的路徑為:/var/www/html/mysite, 則配置為如下:

WSGIPythonPath /var/www/html/mysiteWSGIScriptAlias / "/var/www/html/mysite/mysite/wsgi.py"<Directory "/var/www/html/mysite/mysite">                Order Allow,Deny                Allow from all        <Files wsgi.py>                Order allow,deny                Allow from all        </Files></Directory>

         4-3. 配置wsgi檔案

                一般django產生項目時會自動幫你配置好wsgi.py檔案。不需要自己配的,前提是你的wsgi得裝好了。我的/var/www/html/mysite/mysite/wsgi.py 內容如下:

import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()

 

5. 重啟httpd service: service httpd restart

 

至少則配置問題基本解決. 如果遇到新的問題,就得上stackoverflow再去查一下了。

下一篇講一下怎麼用django建blog網站。

 

Python 學習筆記13:Python + wsgi + django 配置。坑爹的python3和wsgi不相容的解決

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.