15 декабря 2013 г.

проект django project на shared hosting хостинге mod_wsgi

Историческая заметка по большей части. Черновик схемы настройки проекта на django 1.4 на хостинге с mod_wsgi.

Установка virtualenv

wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
python ./virtualenv.py ~/env
source ~/env/bin/activate
Это устанавливает в home нам virtualenv. Можно добавить в ~/.bashrc или аналог, если других окружений нету и после захода по ssh сразу было активировано. Проверяем:
$ which python
/home/hosting_user/env/bin/python
Всякие модули будут установлены в ~/env/lib/python-xx/site-packages/

Установка и настройка django

Либо wget, либо логичнее устанавливать pip-ом.
pip install Django==1.4.7
Проверяем:
$ python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 4, 7, 'final', 0)
>>> quit()
Хотя и django и остальные пакеты/либы я переношу через pip и зависимости (типа pip install -r req.txt). Само приложение в каждом конкретном хостинге работает через файл с определённым именем (после создания проекта на хостинге через панель, например), в моём случае это был django.wsgi, у меня он был примерно таким в итоге:
#!/home/hosting_user/env/bin/python
# -*- coding: utf-8 -*-

import os
import sys

activate_this = '/home/hosting_user/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, '/home/hosting_user/env/lib/python2.6/site-packages')
sys.path.insert(0, '/home/hosting_user/projects/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Далее, статика собирается обычно:
python manage.py collectstatic
Остальное тоже:
python manage.py syncdb

Как установить другой python

На шаред-хостинге с mod_wsgi это бесполезно, т.к. приложение всё равно под ним запустить не получится по очевидным причинам. Но вообще всё просто, на всякий случай (у меня под ним собирались кое-какие пакеты):
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
tar xzf ./Python-2.7.3.tgz
cd Python-2.7.3
./configure --prefix=$HOME/Python27
 make
 make install
Если надо под ним virtualenv, то его надо пересоздать (но добавить в .bashrc например export PATH="$HOME/Python27/bin:$PATH").

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

  1. Круто, правда есть уже множество хостингов, что поддерживают Python / Django из коробки и устанавливают их в 1 клик. Тот же hosting4django.net

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