今人不見古時月,今月曾經照古人。生命是如此的美麗與短暫!
學習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.tgz cd 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.3 sudo 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.7
make
make 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/mysite WSGIScriptAlias / "/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 os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
5. 重啟httpd service: service httpd restart
至少則配置問題基本解決. 如果遇到新的問題,就得上stackoverflow再去查一下了。
下一篇講一下怎么用django建blog網站。
