尝试在Ubuntu 18.04 vps上托管python flask应用程序。我使用的是Python 3.6版,而不是使用虚拟环境,因为该vps仅用于托管一个应用程序。
这是此应用程序的apache2配置文件的内容:
<VirtualHost *:80>
ServerName 15.16.541.21
WSGIScriptAlias / /var/www/psoftware-nis-app/Backend/flask-api/api.wsgi
<Directory /var/www/psoftware-nis-app/Backend/flask-api>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
我提供的静态IP地址当然不是真实的,但是在conf中,它是托管此应用的计算机的真实静态IP地址。
卷曲http://localhost/api/test_endpoint
时(从vps)得到有效响应。
但是当我从笔记本电脑卷曲http://15.16.541.21/api/test_endpoint
时,我会得到:
连接超时
当我执行此操作时:nmap -p 80 15.16.541.21
我得到:
主机似乎掉线了。如果确实启动,但阻止了我们的ping探测, 尝试-Pn
因此,当我添加-Pn
并执行:nmap -p 80 18.191.182.118 -Pn
时,我得到:
主机已启动。端口状态服务80 / tcp过滤的http
我的配置文件有问题吗?或其他任何想法,为什么该应用程序对外界不可见?
编辑: 我已经配置了主要的python模块,设置了主机选项:
if __name__ == '__main__':
app.run(host='0.0.0.0')
答案 0 :(得分:-1)
默认情况下,flask应用仅对本地访问可见。您需要指定主机选项--host=0.0.0.0
,以使其对其他网络可见。
外部可见服务器
如果运行服务器,您将注意到该服务器仅 可以从您自己的计算机访问,而不能从网络中的任何其他设备访问。 这是默认设置,因为在调试模式下, 应用程序可以在计算机上执行任意Python代码。
如果禁用了调试器或信任网络上的用户, 您只需添加以下内容即可使服务器公开可用 --host = 0.0.0.0到命令行:
烧瓶运行--host = 0.0.0.0
这告诉您的操作系统侦听所有公共IP。