代码之家  ›  专栏  ›  技术社区  ›  Arshanvit

远程访问virtualenv

  •  -1
  • Arshanvit  · 技术社区  · 6 年前

    我有阿帕奇 httpd 安装在服务器上 10.37.45.89 它正在 wsgi_module 安装在里面,我已经把 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>
    

    我有 Flask 安装在另一台服务器上 10.37.45.90 我第一次在那里 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给出的请求。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sebastian Loehner    6 年前

    我不是这个主题的专家,但我认为如果您在不同的服务器上运行您的python应用程序,那么wsgi可能是不可能的/错误的选择。

    相反:将Apache设置为 reverse proxy

    在远程服务器上运行flask应用程序,使用“生产质量”wsgi服务器,而不是flask内置的werkzeug开发wsgi服务器。 最受欢迎的选择是Uwsgi,Gunicorn,Gevent,…

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

    然后让您的Apache代理到http://:8080。