запуск примера Flask jQuery под прокси-сервером Apache

Я могу успешно запустить пример jQuery Flask (как указано внизу < href="http://flask.pocoo.org/docs/patterns/jquery" rel="nofollow">страница Flask "AJAX with jQuery".) Он работает на сервере разработки flask и доступен в http://localhost:5000.

Как мне проксировать страницу, чтобы я мог получить доступ к тому же приложению под http://localhost/jqueryexample?

Я добавил это в свою запись Apache VirtualHost, думая, что это поможет:

ProxyPass /jqueryexample http://localhost:5000/
ProxyPassReverse /jqueryexample http://localhost:5000/

Но новый URL дает ошибку 404:

GET http://localhost/_add_numbers?a=6&b=2 404 (Not Found)

Как я могу заставить пример работать правильно под «каноническим URL-адресом» (не уверен, что это правильная терминология)? Или как изменить приложение или конфигурацию Apache, чтобы этот пример jQuery работал для обоих URL-адресов?


Кстати, вот как вы загружаете и запускаете ванильный пример Flask jQuery, о котором идет речь :

git clone http://github.com/mitsuhiko/flask 
cd flask/examples/jqueryexample/ 
python jqueryexample.py

person Velimir Mlaker    schedule 02.07.2013    source источник


Ответы (2)


Хорошо, изучив это дальше, я думаю, что ответил на свой вопрос:

По-видимому, вместо того, чтобы запускать сервер разработки flask и пытаться проксировать его через Apache httpd, лучше всего развернуть приложение непосредственно на Apache с помощью mod_wsgi. Рекомендации о том, как это сделать, подробно описаны здесь. На самом деле, для производства сервер разработки вообще не рекомендуется (см. здесь).

Что касается развертывания самого примера jQuery Flask, вот что вам нужно сделать ( предполагая, что ваш DocumentRoot равен /var/www/html):

# Get the example code.
git clone http://github.com/mitsuhiko/flask 
cd flask/examples/jqueryexample/

# Create WSGI file.
echo "\
import sys\
sys.path.insert(0, '/var/www/html/jqueryexample')\
from jqueryexample import app as application\
" > jqueryexample.wsgi

# Deploy to httpd.
sudo mkdir /var/www/html/jqueryexample
sudo cp -r * /var/www/html/jqueryexample/

Теперь добавьте это к вашему VirtualHost:

WSGIScriptAlias /jqueryexample /var/www/html/jqueryexample/jqueryexample.wsgi
<Location /var/www/html/jqueryexample>
    Allow from all
    Order allow,deny
</Location>

Затем перезапустите httpd. Теперь проверьте работающее приложение по адресу http://localhost/jqueryexample. Вуаля!

person Velimir Mlaker    schedule 10.07.2013

Передо мной нет установки Apache, но если вы проксируете приложение, не следует ли вам изменить строку 6 index.html с

$.getJSON($SCRIPT_ROOT + '/_add_numbers', {

to

$.getJSON($SCRIPT_ROOT + '/jqueryexample/_add_numbers', {
person John    schedule 02.07.2013
comment
Спасибо, но не сработало - ошибки нет, но не запускается служба _add_numbers. Кроме того, теперь http://localhost:5000 выдает ошибку 404. - person Velimir Mlaker; 03.07.2013