Установка и настройка Django CMS на сервере Debian 7 и Ubuntu 13

Вступление

Django CMS – система управления контентом, разработанная для веб-приложений на основе фреймворка Django. Сегодня из трех десятков других доступных  вариантов данная система, пожалуй, является самой популярной

Безусловно, эта зрелая, готовая к производству CMS, которой доверяют многие профессионалы и известные бренды со всего мира – великолепный выбор для разработки проектов.

Данная статья описывает установку и настройку Django CMS на Debian 7 и Ubuntu 13 VPS, а также подготовку данной системы к использованию. Если вы заинтересованы в работе с Django [CMS], но не имеете навыков использования фреймворков или языка программирования Python, не стоит беспокоиться: с Django CMS поставляется относительно простая и довольно информативная документация по разработке, с которой будет полезно ознакомиться после прочтения этого руководства. Последнюю версию документации можно найти по этой ссылке.

Pip: менеджер пакетов Python

Pip – менеджер пакетов, помогающий установить необходимые программные пакеты (инструменты, библиотеки, приложения и др.).

Setuptools: утилита распространение пакета Python

Библиотека setuptools, единственная зависимость pip, основана на функциональности набора стандартных утилит распространения программного обеспечения языка Python под названием distutils.

Virtualenv: построитель виртуальной среды Python

В Python многие задачи выполняются очень легко, и установка пакетов и приложений – не исключение. Тем не менее, значительное количество этих пакетов поставляется в зависимости от других пакетов. При инсталляции они становятся общесистемными – то есть, любое приложение Python может подключаться к этим библиотекам и использовать их.

При определенных обстоятельствах это может привести к серьезным сбоям уже настроенных и стабильно работающих приложений. Любой установленный или удаленный пакет так или иначе влияет на всю систему; следовательно, неверная версия библиотеки или модуля может стать причиной общесистемных повреждений. Потому часто на начальном этапе разработки необходима чистая рабочая среда.

Именно для этого существует инструмент virtualenv; с его помощью можно отделить репозиторий приложения Django CMS и его сложные зависимости от всей системы, что одновременно помогает поддерживать порядок в системе и облегчает техническое обслуживание.

Установка Django CMS

Процесс установки состоит из пяти действий.

1: Подготовка операционной системы

Примечание: Данное руководство использует новый, чистый VPS. Это помогает избежать возникновения связанных с ПО или безопасностью проблем.

Для начала нужно обновить систему. Обновите список программного обеспечения репозитория, а затем – установленные на машине инструменты до более актуальных версий:

aptitude update
aptitude upgrade

Теперь можно приступить к установке других необходимых программных средств и библиотек, а именно:

  • python-dev: этот пакет расширяет установку Python по умолчанию на систему.
  • libjpeg-dev/libpng-dev: эти библиотеки будут необходимы для обработки изображений с PIL.
  • libpq-dev: версия libpq (PostgreSQL), которая понадобится при разработке.

Чтобы скачать и установить их, запустите:

aptitude install libpq-dev python-dev libjpeg-dev libpng-dev

2: Установка виртуальной среды

Все нужные пакеты работают на Python. Установка Debian 7 по умолчанию поставляется с версией Python 2.7, которая отвечает требованиям разработки. Потому можно перейти к инсталляции pip, который понадобится для установки virtualenv (и других пакетов).

Прежде чем установить pip, необходимо установить его зависимость – setuptools.

2.1: Установка setuptools

Загрузить установочные файлы setuptools можно с помощью инструмента под названием curl. Данные файлы не только автоматизируют процесс установки, но и предоставят последнюю версию необходимой программы. На данном этапе curl проверит SSL-сертификаты из исходного кода и передаст данные интерпретатору Python.

Выполните следующую команду:

$ curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -

Это позволит установить setuptools в рамках всей системы.

Теперь можно установить и настроить pip.

2.2: Установка pip

Для загрузки и установки инструмента снова используйте curl. Запустите следующее:

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -

Это позволит установить pip общесистемно.

По умолчанию pip устанавливает файлы в /usr/local/bin. Этот путь нужно внести в PATH, чтобы иметь возможность запускать данный инструмент с помощью команды pip. Итак, выполните:

export PATH="/usr/local/bin:$PATH"

После инсталляции менеджера пакетов pip установка всех остальных пакетов сводится к одной строке: pip install имя_пакета. Тем не менее, чтобы получить последнюю версию virtualenv, нужно указать pip ее адрес.

2.3: Установка virtualenv

Чтобы pip установил virtualenv, запустите следующее:

pip install https://github.com/pypa/virtualenv/tarball/1.9.X

Это установит virtualenv общесистемно.

Стандартная установка virtualenv имеет следующий вид:

pip install virtualenv

Это также установит virtualenv в рамках всей системы.

3: Подготовка виртуальной среды (venv) для Django CMS

Теперь все необходимые инструменты готовы, можно переходить к подготовке виртуальной среды для хранения Django CMS.

Для начала нужно инициировать venv (virtual environment) под названием django_cms с помощью инструмента virtualenv и перйти в папку проекта:

virtualenv django_cms
cd django_cms

В данном случае имя папки репозитория проекта – django_cms, но можно, конечно, установить любое имя. Имейте в виду, имя, никак не связанное с проектом, в будущем может привести к проблемам с обслуживанием.

Для использования виртуальной среды необходимо ее активировать.

source bin/activate

Для дезактивации среды используется команда deactivate.

4: Установка зависимостей Django CMS

4.1: Установка pillow (замена PIL)

Одна из необходимых зависимостей – это библиотека Python Imaging Library (или PIL), которая используется Django CMS (вместе с другими библиотеками, установленными ранее) для обработки изображений.

Но вместо PIL иногда лучше использовать более удобное ответвление данной библиотеки под названием Pillow. Данный пакет совместим с setuptools и автоматически устраняет некоторые проблемы, связанные с использованием PIL в виртуальной среде.

Чтобы скачать и установить Pillow, запустите:

django_cms$ pip install pillow

Поскольку виртуальная среда была активирована, Pillow не будет установлена общесистемно.

4.2: Установка драйверов базы данных

Django [CMS] позволяет выбрать несколько процессоров базы данных для питания приложения, а именно PostgreSQL, MySQL, Oracle и SQLite. Проект Django рекомендует использовать PostgreSQL (для этого необходимо установить некоторые библиотеки и драйвера, которые позволят использовать PostgreSQL в качестве внутреннего интерфейса приложения).

Адаптер базы данных PostgreSQL, который использует Django, называется psycopg2. Для его работы нужна библиотека libpq-dev (была установлена в начале руководства). Поэтому можно просто выполнить следующую команду для установки psycopg2 в venv:

django_cms$ pip install psycopg2

Поскольку venv активирована, psycopg2 не будет установлен общесистемно.

Примечание: данная команда подготавливает PostgreSQL для Django, но не выполняет полностью настроенной установки. Чтобы получить инструкции по дальнейшей работе PostgreSQL на Django, читайте данную статью.

Далее используется база данных SQLite. Для дальнейшей работы с PostgreSQL, пожалуйста, установите данный параметр.

5: Установка и настройка Django CMS внутри виртуальной среды Python

5.1: Установка Django CMS

Django CMS поставляется с рядом других зависимостей, которые еще необходимо установить. Тем не менее, благодаря pip оставшиеся зависимости можно установить и настроить автоматически с помощью пакета Django CMS: django-cms.

Для завершения установки просто запустите следующую команду:

django_cms$ pip install django-cms

Поскольку виртуальная среда была активирована, данный пакет не будет установлен общесистемно.

Теперь все необходимые компоненты установлены: Django, django-classy-tags, south, html5lib, django-mptt, django-sekizai.

5.2: Настройка Django CMS

Создание проекта Django CMS состоит из двух этапов. Сначала нужно создать обычный проект Django в виртуальной среде, а затем перейти к его настройке, чтобы он работал как проект Django CMS.

Итак, создайте проект Django. Назовем его dcms (но, конечно, можно выбрать абсолютно любое имя).

Просто запустите:

django_cms$ django-admin.py startproject dcms
django_cms$ cd dcms

Это создаст проект. Чтобы протестировать инсталляцию, прежде чем перейти к настройке проекта, запустите следующее (это действие запустит простой сервер разработки, к которому можно получить доступ извне):

django_cms$ python manage.py runserver 0.0.0.0:8000

Теперь посетите URL в браузере, заменяя 0.0.0.0 реальным IP-адресом.

Для завершения процесса настройки следуйте данным инструкциям.

5.3: Завершение настройки в соответствии с вводным руководством

Большинство конфигураций Django CMS находится в файле settings.py, расположенном в папке проекта.

Откройте данный файл в предпочитаемом текстовом редакторе. В данном руководстве используется nano.

django_cms$ nano dcms/settings.py

Внесите в начало файла следующие строки:

# -*- coding: utf-8 -*-
import os
gettext = lambda s: s
PROJECT_PATH = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0]

Для начала найдите раздел INSTALLED_APPS. В данном разделе под списком уже существующих модулей нужно внести имена недавно установленных приложений, включая модуль Django CMS.

Как говорится в Django CMS:

Добавьте следующие приложения в INSTALLED_APPS. Данный список содержит django CMS, а также зависимости данной системы и другие рекомендованные приложения/библиотеки:

'cms',     # django CMS itself
'mptt',    # utilities for implementing a modified pre-order traversal tree
'menus',   # helper for model independent hierarchical website navigation
'south',   # intelligent schema and data migrations
'sekizai', # for javascript and css management

Примечание: прежде чем двигаться дальше, не забудьте раскомментировать django.contrib.admin. Данный модуль необходим для процедуры установки.

Затем найдите MIDDLEWARE_CLASSES и внесите следующие строки в конец раздела:

'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',

После этого данный раздел должен выглядеть примерно так:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Раскомментируйте следующую строку:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
)

Как говорится в документации Django CMS, далее необходимо добавить недостающий элемент блока кода в файл. В settings.py. данного раздела не существует. Скопируйте и вставьте данный блок кода в свободное место в файле:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.i18n',
'django.core.context_processors.request',
'django.core.context_processors.media',
'django.core.context_processors.static',
'cms.context_processors.media',
'sekizai.context_processors.sekizai',
)

Теперь нужно найти и отредактировать директивы STATIC_ROOT and MEDIA_ROOT следующим образом:

MEDIA_ROOT = os.path.join(PROJECT_PATH, "media")
MEDIA_URL = "/media/"

STATIC_ROOT = os.path.join(PROJECT_PATH, "static")
STATIC_URL = "/static/"

Затем отредактируйте директиву TEMPLATE_DIRS:

TEMPLATE_DIRS = (
os.path.join(PROJECT_PATH, "templates"),
)

Django CMS требует определить хотя бы один шаблон, который нужно затем установить в CMS_TEMPLATES. Внесите следующий блок кода в файл, при необходимости отредактируйте его.

CMS_TEMPLATES = (
('template_1.html', 'Template One'),
)

Также нужно задать язык перевода. Добавьте следующий блок кода:

LANGUAGES = [
('en-us', 'English'),
]

В завершениее задайте процессор базы данных. Отредактируйте настройки DATABASES и внесите в них PostgreSQL, как показано ниже или используйте приведенные ниже конфигурации, чтобы временно установить базу данных SQLite

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(PROJECT_PATH, 'database.sqlite'),
}
}

Конфигурирование settings.py завершено. Теперь сохраните изменения и закройте его (CTRL+X и Y для подтверждения).

Теперь необходимо определить маршруты проекта.

Для этого отредактируйте файл urls.py:

django_cms$ nano dcms/urls.py

Замените содержимое файла следующим отрезком кода:

from django.conf.urls.defaults import *
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings
admin.autodiscover()
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns

Имейте в виду, последнее выражение в приведенном выше фрагменте несколько отличается от начальных настроек Django CMS, где строка «urlpatterns = patterns(» заменена строкой «urlpatterns += patterns(» с целью решить проблему переопределения переменной urlpatterns, установленной выше.

Снова нажмите CTRL+X, а затем Y, чтобы сохранить и выйти.

Создайте папку templates:

django_cms$ mkdir templates

Создайте примерный шаблон базы для расширения:

django_cms$ nano templates/base.html

Внесите приведенный ниже фрагмент кода:

{% load cms_tags sekizai_tags %}
<html>
<head>
{% render_block "css" %}
</head>
<body>
{% cms_toolbar %}
{% placeholder base_content %}
{% block base_content %}{% endblock %}
{% render_block "js" %}
</body>
</html>

Сохраните изменения, закройте файл и создайте первый шаблон template_1.html, основнный на базе base.html.

base.html.
django_cms$ nano templates/template_1.html

Внесите сюда следующий фрагмент кода:

{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_1_content %}
{% endblock %}

Сохраните изменения и закройте файл.

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

django_cms$ python manage.py syncdb --all
django_cms$ python manage.py migrate --fake

В завершение нужно проверить, все ли установлено верно, при помощи команды cms check:

django_cms$ python manage.py cms check

Сообщение «Installation okay» означает, что все установлено правильно и теперь можно запустить проект Django CMS на тестовом сервере, прежде чем продолжить его разработку:

django_cms$ python manage.py runserver 0.0.0.0:8000

  • Чтобы увидеть экран приветствия Django CMS, перейдите по http:// ip_адрес_сервера:8000/en-us
  • Чтобы воспользоваться панелью администратора, перейдите по ссылке http:// ip_адрес_сервера:8000/en-us/admin

Здесь нужо авторизоваться как пользователь, созданный во время синхронизации баз данных. Теперь можно продолжить настройку CMS.

Чтобы получить дополнительные инструкции, перейдите по данной ссылке.

Tags: , , , , , , , , , , , , , , ,

Comments are closed here.