вторник, 12 апреля 2011 г.

Ubuntu + Apache2 + WSGI (mod_wsgi) в системе LAMP - LAMPython

 Пришла необходимость, что бы некоторые скрипты работали на сервере
Apache. Задачу решал подобным образом

Предпологается, что уже установлены Apache2, PHP, Python, mySQL и phpmyadmin.

Необходимо доустановить модуль:

sudo apt-get install libapache2-mod-wsgi
После установки активируйте модуль:
 sudo a2enmod mod-wsgi

Перезапустите Apache2:
sudo /etc/init.d/apache2 restart
Модуль готов  к работе. На виртульном домене необходимо добавить ассоциацию расширения ".wsgi" с данным модулем,
что заставит файлы с расширениями .wsgi обрабатываться модулем wsgi.
Откройте /etc/apache2/sites-available/default:
sudo gedit /etc/apache2/sites-available/default

Найдите похожее на:
<directory var="" www="">
 Options Indexes FollowSymLinks MultiViews ExecCGI
 AllowOverride None
 Order allow,deny
 allow from all
</directory>

Замените на:
<directory var="" www="">
 Options Indexes FollowSymLinks MultiViews ExecCGI
 AddHandler cgi-script .cgi
 AddHandler wsgi-script .wsgi
 
 AllowOverride None
 Order allow,deny
 allow from all
</directory>

Если вы не хотите всё заменять, вам необходимо добавить "ExecCGI" в
список настроек, и добавить на обработчики cgi и wsgi скриптов, как показано выше.
Перезапустите Apache:

sudo /etc/init.d/apache2 restart

Пример пробной программы:
def application(environ, start_response):
 status = '200 OK'
 output = 'Hello World!'

 response_headers = [('Content-type', 'text/plain'),
      ('Content-Length', str(len(output)))]
 start_response(status, response_headers)
 return [output]
Это всё!

если вы желаете, что бы "index.wsgi" работал как index вашей директории
(так же как index.htm, index.html, index.php), откройте /etc/apache2/mods-enabled/dir.conf:

sudo gedit /etc/apache2/mods-enabled/dir.conf
Измените строку с опцией DirectoryIndex на:
 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.wsgi

Статья взята с форума

1 комментарий:

  1. sudo a2enmod mod-wsgi - ERROR: Module mod-wsgi does not exist!

    У меня так:

    a2enmod wsgi

    ОтветитьУдалить