標籤:
前言
新公司的第一個項目,伺服器端打算用python作為restful api。所以需要在Centos上搭建nginx+fastcgi+python的開發環境,但後面網上很多言論都說uwsgi比fastcgi在很多方面存在優勢,推薦用uwsgi而不是fastcgi,詳見:http://sunxiunan.com/?p=1778。因此,改為搭建nginx+uwsgi+python這樣的技術組合。
正題
步入正題,開始搭建環境。http://www.cnblogs.com/xiongpq/p/3381069.html,這篇博文對於整個搭建的過程介紹得最詳細,但實際搭建過程中,卻遇到一個難題始終無法解決。當到第八步測試時,瀏覽器顯示“Internal server error”,可以確定的是uwsgi和django的串連有問題,估計是配置uwsgi有問題。於是找了另一篇技術貼來解決我的問題,見http://django-china.cn/topic/101/。這篇文章對於搭建的過程進行了拆分,協助理解搭建的過程。但當我配置完成django後,串連django和uwsgi時,出現一個問題,後台顯示:
django.core.exceptions.AppRegistryNotReady: Models aren’t loaded yet。之後,在網上找到了原因,django1.4和django1.5版本,wsgi.py為:
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘myapp.settings‘
application = WSGIHandler()
但當django1.7時,應改為
import os
import sys
from django.core.wsgi import get_wsgi_application
os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘myapp.settings‘
application = get_wsgi_application()
哎,這實在是個坑。好了,問題解決後,django和uwsgi就成功的串連起來了,所有請求都是經過uwsgi傳遞給django程式處理。繼續按照該文章的步驟來,又遇到問題了。所有配置完畢後,啟動uwsgi服務的時候,執行uwsgi -x djangochina_socket.xml 命令時提示:uwsgi:invalid option --‘x’,繼續度娘,找到答案:這個問題是因為編譯uwsgi的時候少了libxml2庫導致的,應該先安裝庫在編譯,否則會少了xml的支援。這裡需要注意的是,必須先安裝libxm,再安裝uwsgi,否則無效。由於我已經安裝了uwsgi,所以需要先卸載uwsgi,用命令pip uninstall uwsgi,這時就體現出第一篇博文的優點了,用pip安裝卸載程式非常方便。接著,yum install libxml*安裝libxml2庫。
OK,終於所有問題都解決,瀏覽器訪問:http://127.0.0.1/admin,就能出現django後台管理登入介面,大功告成!
Centos+nginx+uwsgi+Python多網站環境搭建