如何在Ubuntu上使用Django1.6安装DjangoCMSVersion3Beta3
介绍
自半年前早期发布以来,Django CMS的第3版一直在不断的开发中。 最新可用的开发人员包(Beta 3)附带了一个您可以依赖的 API 的承诺——预计在 RC1 的发布中不会有太大变化。
在这篇 DigitalOcean 文章中,我们将了解如何安装和开始使用这个功能强大的内容管理系统 (CMS),常客们迫不及待地想要上手。 此外,我们将尝试提供一些指南,以帮助解决从版本 2 升级 Django CMS 的巨大挑战。
注意: 如果您有兴趣安装当前稳定版本(截至 2014 年 3 月的版本 2)的 Django CMS,请查看我们的文章:如何设置和安装 Django CMS。
词汇表
1. Django 和 Django CMS
- 姜戈
- Django 内容管理系统
2. 入门:准备你的 Ubuntu Droplet
3. 安装 Django CMS 版本 3 Beta 3
- 用于 Django CMS 的 Python 虚拟环境
- Django CMS 和依赖项
- 从版本 2 升级到版本 3
4. 配置 Django CMS 3
- 创建一个新项目
- 配置
settings.py
- 配置
urls.py
- 配置模板
- 数据库和迁移
- 运行 Django CMS
5. 准备生产
6. 概括
Django 和 Django CMS
姜戈
Django 是一个基于 Python 编程语言的 Web 开发框架。 作为一个非常大的项目和库,它为希望快速入门的开发人员打包并提供了大量的工具和功能。
Django 内容管理系统
Django CMS 是一个真正的 开发者友好 内容管理系统和建立在 Django 之上的 Web 开发框架。 它充分利用了 Django 的高级功能,并提供了一个可插拔的开发接口来创建各种网站。
作为一个成熟的面向业务的应用程序,Django CMS 知道什么是有价值的。 多年来,该项目主要关注关键领域,以使使用该工具的开发人员和系统管理员的生活更轻松。
随着版本 3 的发布,Django CMS 旨在 改变游戏 - 如果你愿意的话 - 并提供显着改进的界面和一组令人印象深刻的功能。
入门:准备你的 Ubuntu VPS
Django CMS 是一个 Python 项目,您需要正确调整系统才能设置和运行您的网站而不会出现故障或错误。
如果您还没有为此准备好您的 droplet,请快速前往我们的 Ubuntu/Python 文章:
如何为 Python Web 应用程序准备 Ubuntu 云服务器
并继续下面的 Django CMS 安装(或升级)说明。
安装 Django CMS 版本 3 Beta 3
用于 Django CMS 的 Python 虚拟环境
如果您还没有,请创建一个虚拟环境:
virtualenv django_env cd django_env
或者激活它:
# Remember to enter the directory: # cd [django_env] source bin/activate
Django CMS 和依赖项
由于 Django CMS 版本 3 尚未发布,我们需要从他们的 Git 存储库的开发分支安装应用程序。
运行以下命令以使用 pip
安装 Django CMS 3:
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 来处理图像(例如 裁剪、调整大小等)
话虽如此,我们将放弃直接安装 PIL 并选择一个更适合的 PIL 分支,称为“枕头”。 该软件包与 setuptools 兼容,并自动解决了我们尝试使用 pil 时可能出现的几个问题。
运行以下命令安装 pillow:
pip install pillow
从版本 2 升级到版本 3
运行以下命令以使用 pip
升级 Django CMS 3:
pip install --upgrade git+git://github.com/divio/django-cms.git@develop#egg=django_cms
注意: 对于升级,请注意并非所有内容都向后兼容并且可能会中断。 因此,请查看 版本 3 Beta 博客文章 以获取一些其他有用的升级提示。
配置 Django CMS 3
开始使用 Django CMS 是一个简单的过程,但它需要一些设置。 我们将从引导配置开始,并创建一些您可以使用的示例模板文件。
创建一个新项目
作为基于 Django 的应用程序,Django CMS 还附带了一些自动化、管理和管理工具。
要使用 django-admin
创建新项目,请运行以下命令:
# Usage: python django-admin.py startproject [project name] # Example: django-admin.py startproject dcms # And enter the application directory: cd dcms
配置 settings.py
就像 Django 一样,我们需要对主配置文件 settings.py
进行一些更改。
运行以下命令开始使用 nano 文本编辑器编辑 settings.py
:
# Usage: nano [project dir. name]/settings.py # Example: 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,这些 URL 是在 urls.py
文件中配置的。
运行以下命令开始使用 nano 编辑 urls.py
:
# Usage: nano [project dir. name]/urls.py # Example: 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
使用 nano 编辑 templates/base.html
:
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 确认保存并退出。
使用 nano 编辑 templates/template_1.html
:
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 # For schema migrations: python manage.py schemamigration dcms --auto # ! Remember to replace dcms with your project name.
运行 Django CMS
为了查看您的 Django CMS 的运行情况,您可以使用测试服务器。
运行以下命令来运行您的应用程序:
python manage.py runserver 0.0.0.0:8000
并访问:
- Django CMS 主页:
http://[你的 droplet 的 IP]:8000/en-us
- Django CMS 管理员:
http://[你的 droplet 的 IP]:8000/en-us/admin
准备生产
完成创建 Django CMS 项目后,应尽量避免依赖应用程序附带的测试服务器。
对于部署,一个成熟的 Web 应用服务器(例如 Unicorn) 必须使用,最好是在一个反向代理之后,该代理将处理请求的初始处理和静态文件 [例如图像] 的分发。
要快速了解如何投入生产,请查看我们文章中标题为“准备投入生产”的部分:如何为 Python Web 应用程序准备 Ubuntu 云服务器。
概括
如果您已经阅读过本文,或者您只想快速了解安装说明以帮助您入门:
# Preare the system and install Python tools: 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 # Create a virtual environment: 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 # Create a Django CMS project: django-admin.py startproject dcms cd dcms