Apache + mod_wsgi + Django#
source link: https://solovyov.net/blog/2007/apache--modwsgi--django/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Apache + mod_wsgi + Django#
Меня тут попросили описать то, как я запускаю джанговские приложения в апаче. Я решил не растягивать резину в долгий ящик и просто привести свой конфиг с комментариями. :)
<VirtualHost *>
ServerAdmin [email protected]
ServerName piranha.org.ua
ServerAlias www.piranha.org.ua
# директива говорит о том, что это конкретное приложение будет исполняться
# в процессе-демоне с названием piranha
WSGIProcessGroup piranha
# Собственно описание этого демона. 2 процесса, максимум 1000 запросов.
# Сайт не нагруженный, больше и не надо. :)
WSGIDaemonProcess piranha user=piranha group=www-data threads=2 maximum-requests=1000
# Главная, практически, директива. Файлик с описанием приложения. См. ниже.
WSGIScriptAlias / /home/piranha/web/byteflow/byteflow/django.wsgi
# Решил оставить, чтоб не забывали про него. :)
# Кеширование картинок и прочих статических файлов.
<IfModule mod_expires.c>
<FilesMatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 3 days"
</FilesMatch>
</IfModule>
# Описание расположения статических файлов.
Alias "/admin-media/" "/usr/local/lib/python2.4/site-packages/django/contrib/admin/media/"
<Location "/admin-media/">
SetHandler None
</Location>
Alias "/media/" "/home/piranha/web/byteflow/media/"
<Location "/media/">
SetHandler None
</Location>
# Логи. ;)
LogLevel warn
CustomLog /home/piranha/web/logs/piranha.access.log combined
ErrorLog /home/piranha/web/logs/piranha.error.log
</VirtualHost>
А вот тот самый файлик, в котором описывается, как запускать приложение:
import sys
import os
import os.path
sys.path.insert(0, os.path.dirname(__file__))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
Кратко и незамысловато. Годится для любого проекта в силу независимости от места расположения. :)
Вот и всё. Файлик django.wsgi лежит в директории проекта, джанга лежит в пути Python
‘а
(у меня вот в /usr/local/
, потому как последний trunk и пакета для него, естественно, нету),
всё работает прекрасно.
P.S. И, естественно, апач надо релоадить (apache2ctl graceful
) после изменений в конфиге или в питон-коде приложения.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK