我有一個騰訊云的服務(wù)器,使用flask,uwsgi,nginx來搭建一個服務(wù)器。
按照網(wǎng)上的方法是這樣寫的。
我的nginx配置是
我修改的是這個文件 /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配置是這么寫的:
[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是這么寫的:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1> hello world! </h1>'
if __name__ =='__main__':
app.run(debug=True)
我先是運行nginx,然后在運行uwsgi,但是會報這個錯誤:
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)
我也查了不少文章都沒有解決我這個問題。特來求教!
謝謝大家!!
我是這樣修改的,首先把nginx的配置文件修改了一下。
至于為什么這么改,還不清楚,就是看了別人的帖子,然后嘗試做了修改,起碼驗證是可以用的
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的同時,加入了一個stats。
這樣的先后運行nginx和uwsgi之后,在瀏覽器輸入ip地址就可以直接跳轉(zhuǎn)到hello world界面了。
說一下蛋疼菊緊的事情,上面這個配置文件是我自己手敲的new.ini。我在之前的uwsgi.ini文件上同樣的內(nèi)容,但是報錯,找不到app。我比來比去發(fā)現(xiàn),這個uwsgi文件是我從網(wǎng)上直接copy的在“callable=app”前面一行有非常多的空格,看是看不出的,有可能有特殊字符或者什么的。把空格刪了就OK了。
這是個坑,以后還是自己手動敲吧。
[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)容。
對比一下你的 uwsgi.ini 配置文件,有兩處不一樣。
第一處明顯的錯誤
chidir = /home/ubuntu/project/test # 應(yīng)該是 chdir,不是 chidir
wsgi-file = /home/ubuntu/project/test/test.py # 應(yīng)該是相對路徑
應(yīng)該改為
chdir = /home/ubuntu/project/test # 應(yīng)該是 chdir,不是 chidir
wsgi-file = test.py # 應(yīng)該是相對路徑
第二處是
socket = 127.0.0.1:8080
改為
stats = 127.0.0.1:8080北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。