Удаленный доступ к virtualenv
У меня есть apache 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 ответ
Я не эксперт по этой теме, но я думаю, что если вы запускаете свое приложение python на другом сервере, WSGI может оказаться невозможным / неправильным выбором.
Вместо этого: установите ваш Apache, чтобы действовать как обратный прокси
Запустите приложение фляги на удаленном сервере, используя WSGI-сервер "производственного качества" вместо встроенного в флеш-сервер werkzeug для разработки. Популярными вариантами являются uWSGI, gunicorn, gevent,...
Я нашел официантку, чтобы быть хорошим выбором для этого. Он поставляется с инструментом командной строки, поэтому вы можете запустить свое приложение, выполнив:waitress-serve --port=8080 myapp:wsgifunc
Затем обратитесь к прокси-серверу Apache по адресу http://:8080.