Пассажирский суб юри - PullRequest
       7

Пассажирский суб юри

1 голос
/ 28 января 2020

Инструкции пассажира Phusion великолепны в большинстве случаев. Они имеют намного лучшие, чем в среднем, инструкции по установке NGINX, пассажирскому приложению, тестированию python и т. Д. Инструкции по настройке нескольких отдельных приложений на одном сервере, ну, в общем, недостачи. Основной причиной, по которой я принял Passenger, является возможность размещения нескольких приложений.

Я следовал инструкциям Phusion Passenger для настройки сервера NGINX с дополнительным URI (https://www.phusionpassenger.com/library/deploy/nginx/deploy/python/). Я думал, что это позволит мне запускать отдельные приложения с разными подпапками. У меня есть несколько python приложений в /var/www, например так:

/var/www/dashboard
/var/www/peniso

У меня есть виртуальная среда Python для каждого из них, в отдельных подпапках venv. Каждый работает индивидуально. Но как сделать все доступным сразу? Проблема, которую я вижу, заключается в том, что независимо от того, какой суб URI используется, одно и то же приложение запускается.

Вот что я попробовал в моем файле /etc/nginx/sites-enable/dashboard.conf:

server {
    listen 80;
    server_name testapp.myexample.com;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/dashboard/public;

    passenger_app_type wsgi;
    passenger_startup_file passenger_wsgi.py;

    # Turn on Passenger
    passenger_enabled on;
    passenger_python /var/www/dashboard/venv/bin/python3.7;

    location ~ ^/mydash(/.*|$) {
        alias /var/www/dashboard/public$1;
        passenger_base_uri /mydash;
        passenger_app_root /var/www/dashboard;
        passenger_document_root /var/www/dashboard/public;
        passenger_enabled on;
        passenger_python /var/www/dashboard/venv/bin/python3.7;
   }


   location ~ ^/efergy(/.*|$) {
        alias /var/www/peniso/public$1;
        passenger_base_uri /efergy;
        passenger_app_root /var/www/peniso;
        passenger_document_root /var/www/peniso/public;
        passenger_enabled on;
        passenger_app_env development;
        passenger_python /var/www/peniso/venv/bin/python3.7;
   }
}

Я просматриваю http://testapp.myexample.com/mydash или http://testapp.myexample.com/efergy Я вижу, что отображается то же самое приложение. В верхней части, перед подразделами, я могу заменить «приборную панель» на «peniso», и это меняет, какое приложение запускается. Я перевернул порядок папок, также изменил root с одной на другую. Похоже, что доступно только одно приложение.

Как настроить Passenger для работы с несколькими различными приложениями?

В конце концов мне нужно разместить несколько Python и несколько Node.js приложений, как только я пойму, как получить каталоги под / var / www to работать правильно.

1 Ответ

0 голосов
/ 20 февраля 2020

У меня есть решение, которое определено от c до Python Панель инструментов Ploty, написанная со слоем абстракции с именем Da sh. Я ожидаю, что подобное исправление может быть найдено для всех приложений Plotly, но не реализовало его. Приложение Da sh Plotly может быть изменено, чтобы понять suburi вызова. Если веб-URL http://example.com/energy, то внутри приложения Plotly требуется простое изменение.

Начните со стандартного стандартного раздела:

app = dash.Dash(__name__,
    meta_tags=[
        {
            "name": "viewport",
            "content": "width=device-width"
        }
    ]
)

, чтобы включить последнюю часть сети адрес

app = dash.Dash(__name__,
    meta_tags=[
        {
            "name": "viewport",
            "content": "width=device-width"
        }
    ],
    requests_pathname_prefix='/energy/'
)
app.config.suppress_callback_exceptions = True

В последней строке есть кое-что, что я обнаружил в списке Plotly одновременно, я не знаю, жизненно ли это важно.

В документации для пассажиров я обнаружил, что проблема sub-uri является серьезной для всех видов приложений, кроме Rails, где у них есть решение исключительно для пассажиров. Все это не очень хорошо задокументировано. Но у них есть предупреждение в node.js документах (https://www.phusionpassenger.com/library/deploy/nginx/deploy/nodejs/):

Sub-URI deployments in Node.js require framework-specific 
adjustments in the application. For example, in Express 4.0+, 
you should use a router. An alternative is to use url 
rewriting to avoid the need for sub-URIs altogether. 

В списке выпусков Passenger GitHub я создал запрос на детализацию документации по " использование переписывания URL-адресов ", поскольку в большинстве случаев это представляется единственным действительно возможным ответом (https://github.com/phusion/passenger/issues/2254). Для меня нереально определить фиксированные c фиксированные для каждого случая исправления для каждого приложения node.js, которое мы хотим запустить.

Точно так же, как все понимают ситуацию, структура фреймворка Passenger действительно помогает сервер в нужную папку, но когда придет время действительно запустить приложение, nginx & Passenger, по причинам, которые я не понимаю, вернитесь к запуску первого приложения, которое они найдут в файле конфигурации. Как только вы исправите это, чтобы каждое приложение знало, как его вызывать - может быть, nginx читает их объявления ?? - тогда это работает.

...