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
上安装了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
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)