最近在搭建服務器,版本是CentOS6.5,在測試uwsgi的安裝是否正確的時候,就出現了問題,如題。
其中網上也查了下,有好多種方案,我也試過了大多方案,但是結果都是不可以的。
日志里面報類似於“Mon Mar 23 10:26:49 2015 – — no python application found, check your startup logs for errors —”這類錯誤時,需要好好檢查一下xml文件
這個文件里面行尾不能有空格,參數左右也不能有空格,這個問題坑了我一晚上!!!
日志里面報類似於”ImportError: No module named wsgi”這類錯誤,需要檢查一下你的xml文件的pythonpath選項
在虛擬環境下,需要配置到uwsgi所在目錄(非虛擬環境下,只需要配置到項目所在路徑即可)
1
2
3
4
看到這里,我覺得問題應該如上面所說的那些,應該是出在配置文件的身上:
# yaml格式
uwsgi:
http: 0.0.0.0:80
chdir: /project_name_path
module: project.wsgi
processes: 4
listen : 100
daemonize: /tmp/uwsgi.log
pidfile: /tmp/uwsgi.pid
master: true
disable-logging : true
stats: /tmp/uwsgi.socket
enable-threads: true
buffer-size: 32768
1
2
3
4
5
6
7
8
9
10
11
12
13
14
我的配置文件,我用光標走了一遍,真的沒有感覺到有空格的問題。但是我根據報錯的信息(如題),可以判斷應該是 配置文件中的chdir和module的問題,但是我又到服務器上再次確認了下,這個路徑和項目的路徑確實沒有問題。
首先我發現這個問題的是這樣的:
1.我在服務器上根據uwsgi的配置文件啟動uwsgi,並無報錯信息,然后我 ps aux | grep uwsgi 一下,並沒有看到uwsgi的進程。意識到有問題。
2.然后我就查看uwsgi的日志/tmp/uwsgi.log
3.tail -f /tmp/uwsgi.log 動態查看日志,並發現如題報錯。
然而,我只看了小半屏幕的日志,沒有向上查看日志,后來偶然我想起上次出現問題的時候,也是因為只看了一小半的報錯信息而漏掉了關鍵的提示。所以我果斷將日志向上翻了翻,沒想到,真的找到了問題的所在。
我看到日志中標記的啟動uwsgi的時候,調用的是python2.6.6,系統默認的版本。但是我使用的是python2.7.9的版本啊,我做過相關的升級的,為什么還會用老的python版本呢?
看系統變量
我看了系統的環境變量PATH,其中有/usr/lib64/bin 路徑(python2.6.6的),但是沒有/usr/local/bin 路徑(python2.7.9的),所以
去/etc/profile 里添加 export PATH=/usr/local/bin:$PATH ,退出登錄,重新登錄一下,再啟動uwsgi就沒有問題了。
回過頭來,我們在來看下,為什么會報標題的錯呢?因為我其實是在python2.6.6的基礎上,又安裝了python2.7.9,我只是做了軟連接,並沒有將python2.7.9的環境變量加入到系統的環境變量中,而我項目的環境、第三方包等都是安裝到了python2.7.9的下面,啟動uwsgi的時候,根據uwsgi的配置信息chdir和module找到項目的位置,但是加載代碼的時候因為找不到第三方的庫,出現大量的導入錯誤(上翻日志,一屏顯示不下的,容易忽略錯誤),所以,uwsgi的配置文件module這步沒有做通,導致的結果就是no python application found ,報這個錯誤就不稀奇了。
另一問題:我將uwsgi的配置文件中 http 換成 socket的時候,uwsgi服務是可以啟動的,但是,並沒有提供服務,瀏覽器是訪問不到的。
---------------------
作者:空氣中的臭氧
來源:CSDN
原文:https://blog.csdn.net/dqchouyang/article/details/78762432
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!