Архивы: Ноябрь 2011

Использование Mod_wsgi с Django на Ubuntu с Apache

Ставим mod_wsgi

sudo apt-get install libapache2-mod-wsgi

Конфигурации виртуального хоста:

<VirtualHost *:80>

    ServerAdmin i@developtolive.com
    ServerName developtolive.com
    DocumentRoot /home/www

    # Django settings
    WSGIScriptAlias / /home/www/django_apps/developtolive_com/wsgi_handler.py
    WSGIDaemonProcess developtolive_com user=you group=you processes=1 threads=10
    WSGIProcessGroup developtolive_com

    # Non-Django directories
    Alias /static /home/www/django_apps/developtolive_com/static
    <Location "/static">
        SetHandler None
    </Location>

    # Non-Django directories
    Alias /media /home/www/django_apps/developtolive_com/media
    <Location "/media">
        SetHandler None
    </Location>

</VirtualHost>

Поместите файл с именем wsgi_handler.py в папке проекта:

import os, sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
os.environ['DJANGO_SETTINGS_MODULE'] = 'developtolive_com.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Набор полезных regexp’ов для python

Определение валидности e-mail

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

re.compile(
    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"
    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"'
    r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$'
, re.IGNORECASE)

Определение валидности http url

Здесь присутствуют проверки на протокол (http/https), допуск localhost в качестве домена, возможность указания ip адреса вместо домена, а также опциональный порт сервиса

url_re = re.compile(
    r'^https?://'
    r'(?:(?:[A-Z0-9-]+\.)+[A-Z]{2,6}|'
    r'localhost|'
    r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
    r'(?::\d+)?'
    r'(?:/?|/\S+)$', 
re.IGNORECASE)

проблема в mod_python3 с md5

Как я писал не так давно о том что питон переместил библиотеку md5 в другой пакет, но вот только не все разработчики ПО это приняли во внимание. Очередное столкновение у меня возникло с этой проблемой. В ПО под название mod_python3 как раз таки такая ситуация. Пакет вроде как последней версии mod_python3.1 но все же бага там есть и логи наполняются ошибками.

Проблему пока что можно решить только редактированием файла importer.py

Вот как логируется ошибка:

[Fri Aug 14 10:16:51 2011] [error] /usr/local/lib/python2.6/site-packages/mod_python/importer.py:32: DeprecationWarning: the md5 module is deprecated; use hashlib instead
[Fri Aug 14 10:16:51 2011] [error]   import md5

Лечим:
32 строка: import md5 меняем на from hashlib import md5
972 строка  return self._prefix + md5.new(file).hexdigest() меняем на return self._prefix + md5(file).hexdigest()