远程访问 virtualenv

Remote access to virtualenv

我在服务器 10.37.45.89 上安装了 apache httpd,在 it.I 中安装了 wsgi_module 已将我的 wsgi.conf 文件放在 [=17= 下] 详细信息如下:

<virtualhost *:80>
    ServerName my.webtool

    WSGIDaemonProcess webtool user=www-data group=www-data threads=5 home=/home/user/flask-dev
    WSGIScriptAlias / /home/user/flask-dev/webtool.wsgi

    <directory /home/user/flask-dev>
        WSGIProcessGroup webtool
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </directory>
</virtualhost>

我在另一台服务器 10.37.45.90 上安装了 Flask,其中我首先按照以下方式设置了 virtualenv

(user@ajdfhklfhasjdf01 [~/flask-dev]) sudo pip install virtualenv
(user@ajdfhklfhasjdf01 [~/flask-dev]) sudo virtualenv venv
(user@ajdfhklfhasjdf01 [~/flask-dev]) source venv/bin/activate
(venv)(user@ajdfhklfhasjdf01 [~/flask-dev])
(venv)(user@ajdfhklfhasjdf01 [~/flask-dev]) sudo pip install Flask

我的代码和 wsgi 文件具有以下层次结构:

(venv)(user@ajdfhklfhasjdf01 [~/flask-dev])$ ls
__init__.py*  webtool.wsgi*

(venv)(user@ajdfhklfhasjdf01 [~/flask-dev])$ cat webtool.wsgi
import sys
sys.path.append('/home/user/flask-dev')
from webtool import app as application

(venv)(user@ajdfhklfhasjdf01 [~/flask-dev])$ cat __init__.py
import socket
from flask import Flask
app = Flask(__name__)
host_ip_address = socket.gethostbyname(socket.gethostname())
@app.route("/")
def hello():
    return "Hello world!"
if __name__ == "__main__":
    app.run(debug=True,host=host_ip_address,port=30004)

我不确定如何在这两个服务器之间执行链接,以便 Flask 可以处理 httpd 给出的请求。

我不是这方面的专家,但我认为如果您 运行 您的 python 应用程序在不同的服务器上,WSGI 可能是不可能的/错误的选择。

而是:将您的 apache 设置为充当 reverse proxy

运行 远程服务器上的 Flask 应用程序使用 "production-quality" WSGI 服务器,而不是 Flask 的内置 werkzeug 开发 WSGI 服务器。 流行的选择是 uWSGI、gunicorn、gevent、...

我发现 waitress 是一个不错的选择。 它带有一个命令行工具,因此您可以通过发出以下命令来启动您的应用程序: waitress-serve --port=8080 myapp:wsgifunc

然后让你的 apache 代理到 http://:8080。