2

Я - пользователь служб IIS - Internet Information Services (Microsoft Windows) и хочу перейти на Nginx.

Как я могу опубликовать несколько веб-приложений в Python, используя виртуальные каталоги (стиль IIS), и получить к ним доступ через IP и имя каталога (например, http://HOST_IP/APP_DIRECTORY) в Nginx?

Используемая мной серверная операционная система - Ubuntu Server 12.04.1 LTS AMD64.

[] 'S

1 ответ1

2

Цель этой темы, которую я задавал и на которую отвечал сам, состоит в том, чтобы установить короткий, простой и точный путь для пользователей из IIS - Internet Information Services (Microsoft Windows), которые хотят мигрировать и / или использовать Nginx с Python. Поэтому я прошу всех помочь достичь этой цели!

Рассмотренные аспекты:

  1. Используйте Ubuntu Server 12.04.1 LTS AMD64;
  2. Использовать веб-приложения Python;
  3. Доступ к нескольким приложениям осуществляется с использованием модели http://HOST_IP/APP_DIRECTORY ;

Я мало знаю о Nginx. Я подчеркиваю, что целью здесь является создание веб-приложений Python для тестирования и разработки простым и легким способом, без присутствия домена (например, www.domain.com) и доступа к ним через IP и виртуальный каталог.

Я не знаю, является ли это лучшим способом публикации приложений с использованием виртуальных каталогов. Комментарии по этому аспекту очень приветствуются.

ЗДЕСЬ МОЙ ОТВЕТ!

  • Установите Nginx и uWSGI, которые будут запускать приложения Python;

    apt-get установить nginx-full uwsgi uwsgi-plugin-python

  • Создайте файл конфигурации для Nginx. Он будет содержать список виртуальных каталогов, которые будут доступны в Nginx (папка «sites-available»):

    nano /etc /nginx /sites-available / Applications

Содержание архива:

server
{
        listen          80;
        server_name     $hostname;
        access_log /srv/www/applications/logs/access.log;
        error_log /srv/www/applications/logs/error.log;

        location /pytest0
        {
            #uwsgi_pass      127.0.0.1:9001;
            uwsgi_pass      unix:///run/uwsgi/app/pytest0/pytest0.socket;
            include         uwsgi_params;
            uwsgi_param     UWSGI_SCHEME $scheme;
            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
        }

        location /pytest1
        {
            #uwsgi_pass      127.0.0.1:9001;
            uwsgi_pass      unix:///run/uwsgi/app/pytest1/pytest1.socket;
            include         uwsgi_params;
            uwsgi_param     UWSGI_SCHEME $scheme;
            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
        }
}
  • Создайте каталог, в котором Nginx будет сохранять логи:

    mkdir -p /srv /www / Applications / logs

  • Поместите список приложений, которые вы создали, в набор включенных приложений (папка «apps-enabled»):

    ln -s / etc / nginx / sites-available / Applications / etc / nginx / sites-enabled / Applications

  • Удалите ссылку на виртуальный хост по умолчанию, введя следующую команду:

    rm / etc / nginx / sites-enabled / default

    Примечание: с помощью этого действия легче диагностировать возможные ошибки, потому что в случае сбоя NGINX возвращает ошибку вместо стандартной страницы.

  • Создайте папки для 1-го тестового приложения Python:

    mkdir -p /srv /www / pytest0 / public_html / static

    mkdir /srv /www / pytest0 / application

  • Установите 1-е тестовое приложение и сделайте его доступным в uWSGI (папка «apps-available»):

    mkdir -p / etc / uwsgi / apps-available /

    nano /etc/uwsgi/apps-available/pytest0.xml

Содержание архива:

<uwsgi>
    <plugin>python</plugin>
    <socket>/run/uwsgi/app/pytest0/pytest0.socket</socket>
    <pythonpath>/srv/www/pytest0/application/</pythonpath>
    <app mountpoint="/">

        <script>wsgi_configuration_module</script>

    </app>
    <master/>
    <processes>4</processes>
    <harakiri>60</harakiri>
    <reload-mercy>8</reload-mercy>
    <cpu-affinity>1</cpu-affinity>
    <stats>/tmp/stats.socket</stats>
    <max-requests>2000</max-requests>
    <limit-as>512</limit-as>
    <reload-on-as>256</reload-on-as>
    <reload-on-rss>192</reload-on-rss>
    <no-orphans/>
    <vacuum/>
</uwsgi>
  • Поместите первое тестовое приложение как включенное в uWSGI (папка «apps-enabled»):

    ln -s /etc/uwsgi/apps-available/pytest0.xml /etc/uwsgi/apps-enabled/pytest0.xml

  • "Создайте" 1-е тестовое приложение в uWSGI:

    nano /srv/www/pytest0/application/wsgi_configuration_module.py

Содержание архива:

import os
import sys

sys.path.append('/srv/www/pytest0/application')

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/pytest0/.python-egg'

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello pytest0!'

    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]
  • Создайте папки для второго тестового приложения Python:

    mkdir -p /srv /www /pytest1 /public_html /static

    mkdir /srv /www /pytest1 /application

  • Установите второе тестовое приложение и сделайте его доступным в uWSGI (папка «apps-available»):

    nano /etc/uwsgi/apps-available/pytest1.xml

Содержание архива:

<uwsgi>
    <plugin>python</plugin>
    <socket>/run/uwsgi/app/pytest1/pytest1.socket</socket>
    <pythonpath>/srv/www/pytest1/application/</pythonpath>
    <app mountpoint="/">

        <script>wsgi_configuration_module</script>

    </app>
    <master/>
    <processes>4</processes>
    <harakiri>60</harakiri>
    <reload-mercy>8</reload-mercy>
    <cpu-affinity>1</cpu-affinity>
    <stats>/tmp/stats.socket</stats>
    <max-requests>2000</max-requests>
    <limit-as>512</limit-as>
    <reload-on-as>256</reload-on-as>
    <reload-on-rss>192</reload-on-rss>
    <no-orphans/>
    <vacuum/>
</uwsgi>
  • Поместите второе тестовое приложение как включенное в uWSGI (папка «apps-enabled»):

    ln -s /etc/uwsgi/apps-available/pytest1.xml /etc/uwsgi/apps-enabled/pytest1.xml

  • "Создайте" 2-е тестовое приложение в uWSGI:

    nano /srv/www/pytest1/application/wsgi_configuration_module.py

Содержание архива:

import os
import sys

sys.path.append('/srv/www/pytest1/application')

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/pytest1/.python-egg'

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello pytest1!'

    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]
  • Перезапустите сервисы:

    перезапуск службы uwsgi

    перезапуск службы nginx

ПРОКОММЕНТИРУЙТЕ, ПОЖАЛУЙСТА!

  • Рекомендации:

https://library.linode.com/web-servers/nginx/python-uwsgi/ubuntu-12.04-precise-pangolin

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .