我有一個(gè)騰訊云的服務(wù)器,使用flask,uwsgi,nginx來(lái)搭建一個(gè)服務(wù)器。
按照網(wǎng)上的方法是這樣寫(xiě)的。
我的nginx配置是
我修改的是這個(gè)文件 /etc/nginx/sites-enabled/default
server {
listen 80;
server_name 111.230.140.182;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
uwsgi_param UWSGI_PYTHON /usr/bin/python;
uwsgi_param UWSGI_CHDIR /home/ubuntu/project/test;
uwsgi_param UWSGI_SCRIPT test:app ;
}
}
然后我的uwsgi.ini配置是這么寫(xiě)的:
[uwsgi]
socket = 127.0.0.1:8080
plugins = python
chidir = /home/ubuntu/project/test
wsgi-file = /home/ubuntu/project/test/test.py
callable = app # 程序變量名
protocol=http
module=test
processes = 4
threads = 2
然后我的test.py是這么寫(xiě)的:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1> hello world! </h1>'
if __name__ =='__main__':
app.run(debug=True)
我先是運(yùn)行nginx,然后在運(yùn)行uwsgi,但是會(huì)報(bào)這個(gè)錯(cuò)誤:
mapped 332288 bytes (324 KB) for 8 cores
Operational MODE: preforking+threaded
unable to load app 0 (mountpoint='') (callable not found or import error)
unable to find "application" callable in file /home/ubuntu/project/test/test.py
unable to load app 0 (mountpoint='') (callable not found or import error)
我也查了不少文章都沒(méi)有解決我這個(gè)問(wèn)題。特來(lái)求教!
謝謝大家??!
我是這樣修改的,首先把nginx的配置文件修改了一下。
至于為什么這么改,還不清楚,就是看了別人的帖子,然后嘗試做了修改,起碼驗(yàn)證是可以用的
server {
listen 80;
server_name 111.230.140.182;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
#uwsgi_param UWSGI_PYTHON /usr/bin/python; //注釋掉
#uwsgi_param UWSGI_CHDIR /home/ubuntu/project/test; //注釋掉
#uwsgi_param UWSGI_SCRIPT test:app ; //注釋掉
}
}
然后將uwsgi的配置文件也改為:
[uwsgi]
socket=127.0.0.1:8080
plugins = python
wsgi-file=test.py
master=true
processes=4
threads=2
callable=app
stats=127.0.0.1:9191
從上面看修改,將chdir去掉了,然后加入了master=true,保留socket的同時(shí),加入了一個(gè)stats。
這樣的先后運(yùn)行nginx和uwsgi之后,在瀏覽器輸入ip地址就可以直接跳轉(zhuǎn)到hello world界面了。
說(shuō)一下蛋疼菊緊的事情,上面這個(gè)配置文件是我自己手敲的new.ini。我在之前的uwsgi.ini文件上同樣的內(nèi)容,但是報(bào)錯(cuò),找不到app。我比來(lái)比去發(fā)現(xiàn),這個(gè)uwsgi文件是我從網(wǎng)上直接copy的在“callable=app”前面一行有非常多的空格,看是看不出的,有可能有特殊字符或者什么的。把空格刪了就OK了。
這是個(gè)坑,以后還是自己手動(dòng)敲吧。
[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191
以上是 官方文檔 里的內(nèi)容。
對(duì)比一下你的 uwsgi.ini 配置文件,有兩處不一樣。
第一處明顯的錯(cuò)誤
chidir = /home/ubuntu/project/test # 應(yīng)該是 chdir,不是 chidir
wsgi-file = /home/ubuntu/project/test/test.py # 應(yīng)該是相對(duì)路徑
應(yīng)該改為
chdir = /home/ubuntu/project/test # 應(yīng)該是 chdir,不是 chidir
wsgi-file = test.py # 應(yīng)該是相對(duì)路徑
第二處是
socket = 127.0.0.1:8080
改為
stats = 127.0.0.1:8080
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。