远程访问 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。
我在服务器 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。