Linux 远程访问virtualenv

Linux 远程访问virtualenv,linux,apache,flask,virtualenv,wsgi,Linux,Apache,Flask,Virtualenv,Wsgi,我在服务器10.37.45.89上安装了apachehttpd,该服务器中安装了wsgi_模块。我已将我的wsgi.conf文件放在/etc/apache2/conf.d位置下,详细信息如下: <virtualhost *:80> ServerName my.webtool WSGIDaemonProcess webtool user=www-data group=www-data threads=5 home=/home/user/flask-dev WS

我在服务器
10.37.45.89
上安装了apache
httpd
,该服务器中安装了
wsgi_模块
。我已将我的
wsgi.conf
文件放在
/etc/apache2/conf.d
位置下,详细信息如下:

<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>
我的代码和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设置为充当

使用“生产质量”WSGI服务器而不是flask的内置werkzeug开发WSGI服务器在远程服务器上运行flask应用程序。 受欢迎的选择有uWSGI、gunicorn、gevent等

我发现这是一个很好的选择。 它附带一个命令行工具,因此您可以通过发布以下命令启动应用程序:
waiterserve--port=8080 myapp:wsgifunc


然后让您的apache代理访问http://:8080。

谢谢sebastian,我发现它非常有用,并使用了
waitress
来设置它。一个问题是,我的两个ec2实例都可以在特定端口上侦听对方,因此我在该
host\u ip\u地址:host\u port
上设置了waitss。因此,在apache中也确实需要设置反向代理。
(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)