【发布时间】:2019-01-13 21:01:40
【问题描述】:
我有一台通过 VirtualBox 运行 Linux Mint 来宾的 Windows 10 主机。在 Linux 上,我使用 Visual Studio Code 构建了一个 Python-Flask Web 服务,并托管在 Apache 2 上。
关于客人:
- http://127.0.0.1/ 返回 Apache 登录页面。成功。
- 在 VSC 中调试代码时,http://127.0.0.1:5000 和 http://0.0.0.0:5000 返回 Web 服务方法。成功。
- XX.com reutrns web 服务方法。成功。
- http://192.168.56.101 返回 Apache 登录页面。成功。
服务实例位于:/var/www/ZZ。以下是字典结构:
- __init__.py
- ZZ.wsgi
- 静态文件夹(空)
- 模板文件夹(空)
__init__.py 实现具有以下内容:
...
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
ZZ.wsgi 实现如下:
#!/usr/bin/python
import sys
sys.path.insert(0,"/var/www/ZZ")
from __init__ import app as application
在 /etc/apache2/sites-available/ 配置 ZZ.conf 如下:
<VirtualHost *:80>
ServerName XX.com
WSGIDaemonProcess ZZ user=YY group=YY threads=5
WSGIScriptAlias / /var/www/ZZ/ZZ.wsgi
<Directory /var/www/ZZ>
WSGIProcessGroup ZZ
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
我已经运行:sudo a2ensite ZZ,即 /etc/apache2/sites-enabled 中已经有一个指向 ZZ.conf 的链接。
/etc/ 中的 hosts 文件有以下内容:
127.0.0.1 localhost
127.0.1.1 YY-VirtualBox
192.168.56.101 XX.com
# 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
我已经运行:sudo service apache2 restart。
运行:id -gn,并且; id -Gn,确认用户YY和组YY。
另外,Apache 版本是:Apache/2.4.18。 Python 版本为:3.5.2。
在主机上(Windows 10):
- http://127.0.0.1/ 返回“无法到达”。成功(Windows 上没有托管任何内容)。
- http://127.0.0.1:8080 返回 Apache 登录页面。成功。
- http://192.168.56.101 返回 Apache 登录页面。成功。
- XX.com 返回“无法访问”——这就是问题所在。
我的 VirtualBox 网络设置是:
- 适配器 1. NAT。没有端口转发。
- 适配器 2。仅限主机。
所以 - 问题是如何从主机(Windows 10)访问 XX.com? IE。如何从外部调用者(到 Linux 来宾)调用/访问 Web 服务?
我尝试过端口转发,但没有成功。任何帮助深表感谢。提前谢谢你。
【问题讨论】:
标签: python apache flask virtualbox