mod_wsgi — ‘Hello World’ Пример

Модуль Apache mod_wsgi служит для хостинга написанных на Python веб приложений.

Эта небольшая статья описывает как создать простое WSGI приложение и запустить его на Apache используя mod_wsgi.

Ниже приведена инструкция по созданию виртуального хоста в Apache и публикации простого WSGI приложения, которое выводит сообщение «Hello World!».

Я предполагаю что у вас уже установлен Apache вместе с модулем WSGI.

Дельный Совет: Проверьте активирован ли модуль WSGI или нет! Читать далее →

Создайте 2 директории:

# mkdir -p /usr/local/www/{documents,wsgi-scripts}
Директория Назначение
/usr/local/www/documents Для статических файлов (DocumentRoot)
/usr/local/www/wsgi-scripts Для WSGI приложений

Утечка исходников! Файлы скриптов с WSGI приложениями НЕ ДОЛЖНЫ размещаться внутри существующего корня сайта (DocumentRoot). В противном случае любой сможет скачать исходники вашего приложения.

Создайте конфиг виртуального хоста в Apache:

<VirtualHost *:80>
    ServerName example.com

    DocumentRoot /usr/local/www/documents
    <Directory /usr/local/www/documents>
    Order allow,deny
    Allow from all
    </Directory>

    WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
    <Directory /usr/local/www/wsgi-scripts>
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

В зависимости от используемого дистрибутива, сохраните его в /etc/httpd/conf.d/example.com.conf если вы используете CentOS, RHEL и т.п., или в /etc/apache2/conf.d/example.com.conf для Debian, Ubuntu и т.п.

В конфиге виртуального хоста с помощью директивы WSGIScriptAlias мы указываем что при обращении к http://example.com/myapp, сервер будет отвечать запуском WSGI приложения /usr/local/www/wsgi-scripts/myapp.wsgi.

Создайте очень простое WSGI приложение myapp.wsgi, которое возвращает HTTP статус код 200 OK и выводит сообщение «Hello World!»:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!\n'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

Сохраните его в файл /usr/local/www/wsgi-scripts/myapp.wsgi.

Дельный Совет: Всегда используйте последнюю стабильную версию модуля WSGI! Какую версию вы используете в данный момент? Читать далее →

Выполните одну из следующих команд для применения изменений.

Для CentOS, RHEL и т.п.:

# service httpd reload

Для Debian, Ubuntu и т.п.:

# service apache2 reload

Пропишите example.com в файле hosts на вашем веб-сервере:

# cat /etc/hosts
127.0.0.1   localhost example.com

Теперь, непосредственно с командной строки веб-сервера, с помощью curl, вы можете вызывать ваше WSGI приложение:

# curl http://example.com/myapp
Hello World!

Также, если вы в своем локальном hosts файле пропишете что example.com указывает на IP адрес вашего веб-сервера, то вы сможете запустить WSGI приложение из браузера, просто перейдя по ссылке http://example.com/myapp.

One Reply to “mod_wsgi — ‘Hello World’ Пример”

  1. wsgi файл, это питоновский скрипт?

Добавить комментарий