在远程主机(非本地)上使用 flask virtualenv
using flask virtualenv on remote host (not locally)
我有一个 CentOS 7 WSGI 启用 Apache Httpd 服务器(在 VirtualBox 机器上),它在 http://www.myflask.com 端口 80 上为我开发的 Flask 站点提供服务。
因为我无法在那里进行调试(即使我尽我所能),就像我可以在 http://127.0.0.1:5000 的 virutalenv 中设置的本地版本一样,我试图这样做:
- 在 VB 服务器上设置一个名为 myflaskv (/var/www/myflaskv)
的 virtualenv(安装了 flask)
- 将 myflask 目录放入 myflaskv (/var/www/myflaskv/myflask)
我确实以以下 httpd.conf 虚拟主机部分结束:
<VirtualHost *:80>
DocumentRoot "/var/www/myflaskv/myflask"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/myflaskv/myflask">
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/myflaskv/myflask/index.wsgi
ServerName www.myflask.com:80
</VirtualHost>
我可以加载页面 http://www.myflask.com(即使激活了 virtualenv)但是我无法加载页面 http://www.myflask.com:5000正如我想调试的那样。
所以我尝试在端口 5000 上添加一个虚拟主机:
<VirtualHost *:5000>
DocumentRoot "/var/www/myflaskv/myflask"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/myflaskv/myflask">
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/myflaskv/myflask/index.wsgi
ServerName www.myflaskv.com:5000
</VirtualHost>
假设这样我可以加载 http://www.myfaskv.com,但我不能 (ERR_CONNECTION_REFUSED)。
顺便说一句,我暂时停用了 ip-tables 和 se-linux。
那么有没有办法从浏览器加载远程主机的 127.0.0.1:5000 ip 地址?
或者有更好的方法在 wsgi apache 开发环境中调试 flask 吗?
如果您想从框外访问 url,您必须 运行 位于 0.0.0.0:5000
的服务器。
url http://127.0.0.1:5000
无法从您 运行 进入的框外访问。
当您使用 wsgi 访问您的应用程序时,错误消息和堆栈跟踪将写入 Web 服务器错误日志,默认情况下位于 /var/log/apache2/error.log。您不需要使用 virtualenv 网络服务器。只需将您需要的任何调试输出写入本地日志文件(如果您有要打印的调试输入)并在 Apache 错误日志中查找堆栈跟踪。
我有一个 CentOS 7 WSGI 启用 Apache Httpd 服务器(在 VirtualBox 机器上),它在 http://www.myflask.com 端口 80 上为我开发的 Flask 站点提供服务。
因为我无法在那里进行调试(即使我尽我所能),就像我可以在 http://127.0.0.1:5000 的 virutalenv 中设置的本地版本一样,我试图这样做:
- 在 VB 服务器上设置一个名为 myflaskv (/var/www/myflaskv) 的 virtualenv(安装了 flask)
- 将 myflask 目录放入 myflaskv (/var/www/myflaskv/myflask)
我确实以以下 httpd.conf 虚拟主机部分结束:
<VirtualHost *:80>
DocumentRoot "/var/www/myflaskv/myflask"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/myflaskv/myflask">
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/myflaskv/myflask/index.wsgi
ServerName www.myflask.com:80
</VirtualHost>
我可以加载页面 http://www.myflask.com(即使激活了 virtualenv)但是我无法加载页面 http://www.myflask.com:5000正如我想调试的那样。
所以我尝试在端口 5000 上添加一个虚拟主机:
<VirtualHost *:5000>
DocumentRoot "/var/www/myflaskv/myflask"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/myflaskv/myflask">
Options Indexes FollowSymLinks MultiViews
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/myflaskv/myflask/index.wsgi
ServerName www.myflaskv.com:5000
</VirtualHost>
假设这样我可以加载 http://www.myfaskv.com,但我不能 (ERR_CONNECTION_REFUSED)。
顺便说一句,我暂时停用了 ip-tables 和 se-linux。
那么有没有办法从浏览器加载远程主机的 127.0.0.1:5000 ip 地址? 或者有更好的方法在 wsgi apache 开发环境中调试 flask 吗?
如果您想从框外访问 url,您必须 运行 位于 0.0.0.0:5000
的服务器。
url http://127.0.0.1:5000
无法从您 运行 进入的框外访问。
当您使用 wsgi 访问您的应用程序时,错误消息和堆栈跟踪将写入 Web 服务器错误日志,默认情况下位于 /var/log/apache2/error.log。您不需要使用 virtualenv 网络服务器。只需将您需要的任何调试输出写入本地日志文件(如果您有要打印的调试输入)并在 Apache 错误日志中查找堆栈跟踪。