我有一个Flask服务器通过端口5000运行,它很好。我可以在http://example.com:5000上访问它

但是是否可以通过http://example.com访问呢?我假设这意味着我必须将端口从5000更改为80。但是当我在Flask上尝试时,当我运行它时,我得到这个错误消息。

Traceback (most recent call last):
  File "xxxxxx.py", line 31, in <module>
app.run(host="0.0.0.0", port=int("80"), debug=True)
   File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 772, in run
run_simple(host, port, self, **options)
  File "/usr/local/lib/python2.6/dist-packages/werkzeug/serving.py", line 706, in run_simple
    test_socket.bind((hostname, port))
  File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use

运行lsof -i:80返回

COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
apache2   467     root    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)
apache2  4413 www-data    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)
apache2 14346 www-data    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)
apache2 14570 www-data    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)
apache2 14571 www-data    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)
apache2 14573 www-data    3u  IPv4 92108840      0t0  TCP *:www (LISTEN)

我需要先终止这些进程吗?这样安全吗?或者有没有另一种方法来保持Flask在端口5000上运行,但有主网站域名以某种方式重定向?


当前回答

在我的场景中,以下步骤非常有效:

安装包: PIP安装——升级PIP PIP安装python-dotenv 创建一个隐藏文件在我的应用程序目录“flaskr/.flaskenv” 新增如下内容: FLASK_APP = flaskr FLASK_RUN_HOST = localhost FLASK_RUN_PORT = 8000 最后,再次运行flask命令: 瓶运行 我正在制作的版本是: PIP冻结|grep -i烧瓶 瓶= = 1.1.1

其他回答

1-停止使用80端口的其他应用程序。 2-运行端口为80的应用程序:

if __name__ == '__main__':
      app.run(host='0.0.0.0', port=80)

最简单和最佳的解决方案

将.py文件保存在一个文件夹中。在这个案例中,我的文件夹名为test。在命令提示符中执行以下命令

c:\test> set FLASK_APP=application.py
c:\test> set FLASK_RUN_PORT=8000
c:\test> flask run

----------------- 后会返回 ----------------

 * Serving Flask app "application.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:8000/ (Press CTRL+C to quit)
127.0.0.1 - - [23/Aug/2019 09:40:04] "[37mGET / HTTP/1.1[0m" 200 -
127.0.0.1 - - [23/Aug/2019 09:40:04] "[33mGET /favicon.ico HTTP/1.1[0m" 404 -

现在在浏览器中键入:http://127.0.0.1:8000。谢谢

使用以下方式修改端口或主机:

if __name__ == '__main__':
  app.run(host='0.0.0.0', port=80)

使用下面的代码启动服务器(我的flask的主入口是app.py):

python app.py

而不是使用:

flask run

对于外部可见的服务器,你不使用apache或其他web服务器,你只需要输入

flask run --host=0.0.0.0 --port=80

使用app.run设置端口(port=80,debug=True) 在开发环境中,应该将debug设置为true