Установка Django CMS 3 Beta 3 с помощью Django 1.6 на Ubuntu
Linux, Python, Ubuntu, VPS | Комментировать запись
Вступление
Поскольку версия Django CMS 3 вышла не так давно, она по-прежнему постоянно развивается. Последний доступный пакет (Beta 3) поставляется с обещанным надежным API.
Данная статья демонстрирует установку и запуск этой мощной и популярной системы управления контентом (CMS). Кроме того, здесь можно найти советы по модернизации Django CMS 2.
Примечание: чтобы получить инструкции по установке стабильной версии Django CMS (сегодня это версия 2), прочтите статью «Установка и настройка Django CMS на сервер Debian 7 и Ubuntu 13».
Django и Django CMS
Django
Django – это фреймворк для веб-разработки, основанный на языке программирования Python. Этот широкомасштабный проект упаковывает и отправляет огромнейшее количество инструментов и приложений для быстрого начала разработки.
Django CMS
Django CMS – удобная для пользователя система управления контентом и фреймворк, разработанные в Django. Данная система в полной мере использует расширенную функциональность Django и предоставляет подключаемый интерфейс разработки для создания веб-сайтов всех видов.
Этот зрелый продукт ориентирован на бизнес. На протяжении многих лет проект был сосредоточен на ключевых областях программирования, чтобы с помощью тщательно продуманных инструментов сделать жизнь разработчиков и системных администраторов проще.
В своей третьей версии Django CMS стремится изменить стратегию и обеспечить существенно улучшенный интерфейс и впечатляющий набор функций.
Подготовка сервера Ubuntu
Поскольку Django CMS является проектом Python, необходимо правильно настроить систему, чтобы установленный сервер запускался и работал без сбоев и ошибок.
Чтобы подготовить Ubuntu VPS, прочтите статью «Настройка облачного сервера Ubuntu для работы веб-приложений Python».
Инструкции по установке (и обновлению) Django CMS приведены ниже.
Установка Django CMS 3 Beta 3
Виртуальная среда Python для Django CMS
Создайте виртуальную среду (если она не была создана ранее):
virtualenv django_env
cd django_env
Или активируйте ее:
# Перейдите в каталог:
# cd [django_env]
source bin/activate
Зависимости Django CMS
Поскольку версия Django CMS 3 еще не вышла, нужно установить приложение с ветки разработки Git-репозитория.
Запустите следующую команду, которая установит Django CMS 3 с помощью pip:
pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
Затем установите любой необходимый драйвер базы данных, например
# PostgreSQL:
pip install psycopg2
Одна из важнейших зависимостей – библиотека Python Imaging Library (или PIL), которая используется Django CMS для обработки изображений (например, обрезки, изменения размера и т.д.).
Но вместо PIL иногда лучше использовать более удобное ответвление данной библиотеки под названием Pillow. Данный пакет совместим с setuptools и автоматически устраняет некоторые проблемы, связанные с использованием PIL.
Чтобы установить Pillow, запустите:
pip install pillow
Обновление Django CMS 2 до версии 3
Чтобы обновить Django CMS с помощью pip, запустите:
pip install --upgrade git+git://github.com/divio/django-cms.git@develop#egg=django_cms
Примечание: при обновлении необходимо учитывать, что не все пакеты имеют обратную совместимость, некоторые из них могут перестать работать. Перед обновлением CMS рекомендуется обратиться за дополнительной информацией к блогам и форумам, посвященным Django CMS Version 3 Beta.
Настройка Django CMS 3
Начало работы с Django CMS – достаточно простой и понятный процесс; но прежде чем приступить к нему, нужно выполнить настройку системы. Данный раздел содержит советы касательно начальной загрузки конфигураций и приводит несколько примеров шаблонов файлов, которые можно использовать в работе.
Создание нового проекта
Как основанное на Django приложение, Django CMS поставляется с некоторыми инструментами автоматизации и управления.
Чтобы создать новый проект с помощью инструмента django-admin, запустите следующее:
# Синтаксис: python django-admin.py startproject [имя проекта]
# Пример:
django-admin.py startproject dcms
# Затем перейдите в каталог приложения:
cd dcms
Конфигурирование settings.py
Как и при работе с Django, теперь необходимо внести некоторые изменения в главный конфигурационный файл settings.py.
Чтобы отредактировать данный файл с помощью nano, используйте команду:
# Синтаксис: nano [имя каталога проекта]/settings.py
# Пример:
nano dcms/settings.py
Скопируйте и вставьте (или отредактируйте) приведенный ниже блок кода в начало файла, чтобы внести переменную, указывающую на расположение основного каталога проекта:
# -*- coding: utf-8 -*-
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
PROJECT_PATH = BASE_DIR
Ниже в файле найдите столбец, начинающийся с INSTALLED_APPS.
Измените его, чтобы он имел следующий вид:
INSTALLED_APPS = (
# Additional plugin examples
# e.g.:
# Django CMS CK Editor:
# https://github.com/divio/djangocms-text-ckeditor
# 'djangocms_text_ckeditor',
# Django CMS:
'cms',
# Utilities:
'mptt',
'menus',
'south',
'sekizai',
# Other CMS modules:
'djangocms_admin_style',
# Django:
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
)
Затем найдите MIDDLEWARE_CLASSES и отредактируйте его следующим образом:
MIDDLEWARE_CLASSES = (
# Django:
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.doc.XViewMiddleware',
# Django CMS:
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
)
Следующее, что нужно сделать – внести настройки TEMPLATE_CONTEXT_PROCESSORS.
Внесите в файл следующий блок кода:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'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_URL. Удалите данный раздел и внесите следующий блок кода:
SITE_ID = 1
STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
TEMPLATE_DIRS = (
# List of template directories.
# Example:
os.path.join(PROJECT_PATH, 'templates'),
)
CMS_TEMPLATES = (
# List of templates.
# Example:
('template_1.html', 'Template One'),
)
LANGUAGES = (
# List of languages.
# Example:
('en-us', 'English'),
)
Сохраните внесенные изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Конфигурирование urls.py
Теперь необходимо установить некоторые URL. Для этого отредактируйте файл urls.py. Чтобы отредактировать данный файл в nano, запустите следующее:
# Синтаксис: nano [имя каталога проекта]/urls.py
# Пример:
nano dcms/urls.py
Замените содержимое файла приведенными ниже конфигурациями:
# Django CMS 2:
# from django.conf.urls.defaults import *
# Django CMS 3:
from django.conf.urls import patterns, include, url
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
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Настройка шаблонов
Перед созданием базы данных и тестированием инсталляции (или ее обновления) необходимо разработать некоторые шаблоны.
Примечание: для начала определите шаблоны в файле settings.py, а затем создайте их соответствующим образом.
Чтобы создать каталоги и файлы шаблонов, запустите следующее:
mkdir templates
touch templates/base.html
touch templates/template_1.html
Отредактируйте templates/base.html с помощью nano:
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>
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Отредактируйте templates/template_1.html с помощью nano:
nano templates/template_1.html
Внесите следующее:
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_1_content %}
{% endblock %}
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
База данных и миграции
Чтобы инициировать (или создать) базу данных для нового проекта, выполните следующие команды:
python manage.py syncdb --all
python manage.py migrate --fake
Затем выполните проверку целостности компонентов:
python manage.py cms check
# OVERALL RESULTS
# ===============
# 1 checks skipped!
# 8 checks successful!
# Installation okay
Примечание: по мере необходимости для обновления запустите миграции, например:
python manage.py syncdb
python manage.py migrate
# Для миграции схемы:
python manage.py schemamigration dcms --auto
# ! Не забудьте заменить имя «dcms» именем своего проекта.
Запуск Django CMS
Чтобы увидеть Django CMS в действии, используйте тестовый сервер.
Чтобы запустить приложение, введите:
python manage.py runserver 0.0.0.0:8000
Затем посетите:
- Django CMS Home:
http://[IP сервера]:8000/en-us - Django CMS Admin:
http://[IP сервера]:8000/en-us/admin
Подготовка к производству
Завершив проект Django CMS и протестировав его, не следует полагаться на тестовый сервер, поставляемый вместе с приложением.
Для развертывания необходим полноценный сервер веб-приложений (например, Unicorn), желательно на инвертированном прокси-сервере, который будет выполнять первичную обработку запросов и распределять статические файлы [например, изображения].
Чтобы получить инструкции по подготовке к процессу производства, читайте одноименный раздел статьи «Настройка облачного сервера Ubuntu для работы веб-приложений Python».
Конспект команд
Ниже приведен конспект выполненных действий и использованных команд.
# Подготовьте систему и установите инструменты Python:
aptitude update
aptitude -y upgrade
aptitude install -y build-essential
aptitude install -y cvs subversion git-core mercurial
aptitude install python-setuptools python-dev python2.7-dev python-software-properties libpq-dev
aptitude install libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev
curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
export PATH="/usr/local/bin:$PATH"
pip install virtualenv
# Создайте виртуальную среду:
virtualenv django_env
cd django_env
source bin/activate
pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
pip install psycopg2
pip install pillow
# Создайте проект Django CMS:
django-admin.py startproject dcms
cd dcms