【问题标题】:Custom name instead of IP address to access Flask Applications on remote server自定义名称而不是 IP 地址来访问远程服务器上的 Flask 应用程序
【发布时间】:2021-08-15 20:23:36
【问题描述】:

我有一个在 Ubuntu 20.04 服务器上运行的 Flask Web 应用程序 我按如下方式运行它-

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

我想使用应用名称访问它 - http://[app.name]:5000 而不是 http://0.0.0.0:5000,即使用服务器的 IP 地址。

我尝试了以下方法 - 更改了主机名

$ sudo nano /etc/hostname

并且还更改了hosts 文件

$ sudo nano /etc/hosts

127.0.0.1 app.name
[ip address] app.name
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我已经重启了服务器并在main中更改了以下内容

if __name__ == '__main__':
    app.config['SERVER_NAME']='app.name:5000'
    app.run()

这个方法不行,能帮我看看是什么问题吗?

提前致谢!

【问题讨论】:

    标签: python flask ubuntu-20.04


    【解决方案1】:

    您不需要更改 SERVER_NAME - 0.0.0.0 意味着它接受来自任何地方的连接(而不是 127.0.0.1 只接受本地主机连接)。

    您的 /etc/hosts 文件看起来正确 - 只要它包含 127.0.0.1 app.name 条目,您就可以开始了。

    然后在你的应用文件中,保留

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

    这里有一些示例代码:

    test.py:

    from flask import *
    
    app = Flask(__name__)
    
    @app.route("/")
    def hi():
      return "bye"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0')
    

    /etc/hosts:

    127.0.0.1  app.name
    

    访问http://app.name:5000/ 有效。

    【讨论】:

    • 这对我不起作用。我再次尝试了同样的事情,这是在远程 ubuntu 服务器上
    • @heisenbug29 也许这里的东西可能会有所帮助:serverfault.com/questions/452268/…。此外,重新启动浏览器(如果您还没有尝试过)也可能会解决问题
    • 我们正在做一个 app.run('0.0.0.0') 这意味着机器的 IP 地址对吗?在 etc/hosts 文件中,我们在 localhost 上设置应用程序名称?为什么不在机器的IP上,别人怎么访问呢
    • 0.0.0.0 只是意味着它可以接受来自任何人的连接,而不仅仅是本地机器。
    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2012-02-17
    • 2021-06-13
    • 2013-02-04
    • 2011-07-13
    • 2019-10-12
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多