2017-06-22 86 views
-1

我試圖在Amazon EC2實例上運行我的燒瓶應用程序。我需要在端口80上運行它,因爲它低於1024我需要root權限。如何使用80端口上的root權限運行瓶式應用程序?

我做出口FLASK_APP = app.py然後如果我這樣做只是 flask run --host=0.0.0.0 一切都正常運行,但在端口5000..but我需要使用80

,當我嘗試做flask run --host=0.0.0.0 --port==80就像我說的,我得到一個權限被拒絕錯誤。

當我嘗試'sudo燒瓶運行--host = 0.0.0.0 --port = 80'它不能找到燒瓶作爲命令...所以我需要在它之前做python -m

當我做sudo python -m flask run --host=0.0.0.0 --port=80我再拿到Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.

因此,大家可以看到......我有種手忙腳亂這裏。

如何在端口80上使用root權限運行瓶式應用程序?

+0

你是否想在端口80上運行nginx/apache,在非特權端口上燒瓶,然後'代理'燒瓶應用的所有請求? –

+0

找到'flask'可執行文件的完整路徑,然後以根用戶身份運行它。您可能還需要您的python路徑 – Tamar

+0

@MauriceMeyer最終這可能是我要做的事情,但我想現在這樣做會更容易嗎?如果我理解正確,那就像燒瓶應用程序在端口5000上監聽並且具有從80到5000的nginx代理服務器? – Carson

回答

0

/\警告:運行瓶的應用,因爲根是危險的,最好是創建一個特定用戶(如flask用戶)來運行。

只是爲了回答你的問題:

要運行一個應用程序燒瓶

hello.py

from flask import Flask 

app = Flask(__name__) 
app.secret_key = 'secret' 

@app.route('/') 
def hello_world(): 
    return 'Hello, World!' 

然後:

sudo FLASK_APP=hello.py python3 -m flask run --host=0.0.0.0 --port=80

您必須導出FLASK_APP使用sudo,最好使用web服務器代理(如nginx)將端口80重定向到端口5000(端口默認端口)。

注意:如果端口80已被使用,您將有這個錯誤OSError:[Errno 98]地址已被使用。

+1

**不要在生產環境中運行'Flask.run',尤其是*作爲root用戶。這是非常危險的建議。** – davidism

+0

是的,這是事實,我精簡了現在的帖子。 – glegoux

+0

您的建議仍然很危險。你仍然建議他們在生產中運行'Flask.run'。開發者服務器不安全,高效或穩定。查看鏈接的副本。 – davidism

相關問題