我有一个通过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上运行,但可以用某种方式重定向主网站域?
因为apache2
在端口80上运行,所以它会抛出错误消息。
如果这是为了开发,我会把它留在5000端口上。
如果是用于生产:
不推荐
Apache2
;不推荐,如文档中所述:
您可以在开发期间使用内置服务器,但对于生产应用程序,您应该使用完全部署选项。(不要在生产中使用内置的开发服务器。)
推荐
HTTP
通过Apache2
到flask的流量。这样,Apache2
就可以处理所有静态文件(它非常擅长这一点--比Flask内置的调试服务器好得多),并充当动态内容的反向代理,将请求传递给Flask。
下面是关于使用Apache+mod_wsgi设置Flask的官方文档的链接。
编辑1-@djack的澄清
通过apache2到Flask的代理HTTP流量
当请求到达端口80(HTTP
)或端口443(HTTPS
)上的服务器时,web服务器(如Apache或Nginx)将处理请求的连接,并确定如何处理请求。在我们的示例中,应该将接收到的请求配置为通过WSGI协议传递到Flask,并由Python代码处理。这就是“动态”部分。
动态内容的反向代理
像上面这样配置您的web服务器有几个优点;
问题内容: 我的目标是在端口80上运行Node.js。这是因为我发现node.js被某些网络阻止,这些网络不允许来自任何其他端口的流量。 看来最好的方法是通过Node.js代理Apache。我已经尝试使用node-http- proxy 来做到这一点,但是我没有任何运气。 我正在使用的代码在这里: 但是我一直收到端口80的错误“地址正在使用”。我一定做错了。 如何使用node-http-proxy
问题内容: 我有一个通过端口5000运行的Flask服务器,很好。我可以在http://example.com:5000上访问它 但是是否可以在http://example.com上简单地访问它?我假设这意味着我必须将端口从5000更改为80。但是当我在Flask上尝试使用该端口时,运行该错误消息。 连续lsof -i :80收益 我需要先杀死这些进程吗?这样安全吗?还是有另一种方法可以让Flas
问题内容: 我正在运行Ubuntu 11.10,并已在该系统上安装Jenkins。 我看过一些有关如何设置反向代理(Apache,Nginx等)的教程,但是,这是专门用于jenkins的VM,我想让jenkins在端口80上运行时尽可能保持精简。 我发现了新贵的配置,并将端口修改为80 当我通过启动jenkins时,显示它运行了几秒钟然后终止。 这是因为jenkins 在特权端口上以用户身份运行吗
我正在尝试在Centos tomcat7上托管一个网站,如果我在端口80上运行tomcat7,一切正常,即74.208.164.45,但如果我想使用https://74.208.164.45/,它不起作用,但如果我这样尝试https://74.208.164.45:8443/添加密钥库之后,它就可以正常工作了。 所以,我需要一种在80和https上运行tomcat的方法,即https://74.2
我将按照本教程学习如何用Python构建应用程序。 教程(接近尾声)讲述了如何在python中获得一个发布的AJAX json,如下所示: 超文本标记语言代码: Python代码: 当我运行脚本并在浏览器中点击按钮“点击我”时,当我检查浏览器中的响应时,我会得到“500内部服务器错误”。如果我打印数据变量,它会在单击事件的终端中打印出无。我尝试了评论中给出的建议,在python脚本中使用get_j
问题内容: 我无法在端口80上启动应用程序。 我已经在本地计算机(使用我的IDE和本地服务器)上尝试过,没有运气。 我检查了其他类似的帖子,并确保我在具有root用户的服务器上运行jar。 这是错误: 问题答案: 在Linux上,只能由root用户打开低于1024的端口,因此默认情况下限制端口80 如果要在80端口上发布应用,则需要将请求从80端口重定向到要运行springapp(例如8080)端