介绍
Django CMS 是一种内容管理系统,旨在与基于 Django 框架的 Web 应用程序一起工作。 它可能是当今可用的近三打其他选项中最受欢迎的一个。 作为一个成熟的、生产就绪的系统,受到来自世界各地的一些重要品牌的信赖,并有一家专业的公司支持其开发,这无疑使其成为项目的有吸引力的选择。
在这篇 DigitalOcean 文章中,我们将引导您在 Debian 7/Ubuntu 13 VPS 上安装 Django CMS,准备好进行配置和使用。 如果您对使用 Django [CMS] 感兴趣,但对框架或 Python 语言本身没有太多经验,请不要担心:Django CMS 附带了一个相对简单且相当丰富的开发文档,这将绰绰有余完成本教程后让您继续前进。 您可以通过单击此处访问最新版本。
安装 Django CMS
Python 包管理器:pip
pip 是一个包管理器,它将帮助我们以非常简单的方式安装我们需要的软件包(工具、库、应用程序等)。
Python 包分发实用程序:setuptools
pip 的依赖,setuptools 库建立在 Python 的标准软件分发实用工具集 distutils 的功能之上。
虚拟 Python 环境构建器:virtualenv
许多事情在 Python 中实现起来非常简单,安装包和应用程序也不例外。 但是,这些软件包中的很大一部分也取决于其他软件包。 安装后,它们与其余部分一起在系统范围内可用:任何 Python 应用程序都可以链接到这些库并使用它们。
在某些情况下,这可能会导致已经配置且稳定的应用程序由于某些依赖性问题而停止工作,这可能会导致严重的头痛。 由于您安装或删除的任何内容都会影响整个系统,因此错误版本的库或模块可能会破坏一切。 在另一个时候,您可能开始开发一个新项目并发现自己需要一个干净的工作环境。
这就是 virtualenv 工具的用途,也是我们使用它的确切原因:将我们的 Django CMS 应用程序存储库及其复杂的依赖项与系统的其余部分隔离开来,使我们能够井井有条,同时简化维护时间。
我们的 5 步安装过程
1 - 准备操作系统
请注意:本文将使用新创建的VPS。 这可以防止过去安装的任何可能的软件相关或安全问题。
首先,我们需要更新我们的操作系统。 让我们从更新软件存储库列表开始,然后将我们机器上已安装的工具升级到更新版本:
aptitude update aptitude upgrade
我们现在可以继续安装我们在此过程中需要的其他软件工具和库。
这是我们需要的:
- python-dev:这个包扩展了我们系统上默认的 Python 安装。
- libjpeg-dev/libpng-dev:使用 Python 图像库进行图像处理将需要这些库。
- libpq-dev:libpq (PostgreSQL) 的开发版本,我们将在后面的教程中需要它。
要下载和安装,请运行以下命令:
aptitude install libpq-dev python-dev libjpeg-dev libpng-dev
2 - 安装虚拟环境
我们需要的一切都在 Python 上运行。 默认的 Debian 7 安装附带 Python version
2.7
。 由于这符合我们的要求,我们可以继续安装 pip,我们需要它来安装 virtualenv(和其他包)。
在获取 pip 之前,我们首先需要安装它的依赖:setuptools。
2.1 - 安装 setuptools:
我们将使用名为 curl 的工具安全地下载设置文件。 这些安装文件不仅可以让我们自动化安装过程,还可以确保我们在系统上运行最新的稳定版本。 curl 这里将从源验证 SSL 证书并将数据传递给 Python 解释器。
执行以下命令:
$ curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
这将在系统范围内安装它。
我们现在可以在我们的系统上安装和设置 pip。
2.2 - 安装 pip:
让我们再次使用 curl 来安全地下载和安装它。 运行以下命令:
$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
这将在系统范围内安装它。
默认情况下,pip 将其文件安装在 /usr/local/bin
位置下。 我们需要将它附加到我们的 PATH
以便我们能够通过直接调用 pip 命令来运行它。
让我们更新一下:
export PATH="/usr/local/bin:$PATH"
由于我们已经 pip 包管理器,从现在开始的所有安装都像 pip install package-name
一样简单。 然而,由于我们想要最新的稳定版本的 virtualenv,我们将提供 pip 的地址。
2.3 - 安装 virtualenv:
运行以下命令让 pip install virtualenv:
pip install https://github.com/pypa/virtualenv/tarball/1.9.X
这将在系统范围内安装它。
如果您想知道,标准的安装方式是:
pip install virtualenv
这也将在系统范围内安装它。
3 - 为 Django CMS 准备我们的虚拟环境 (venv)
我们需要的所有工具都准备好了,我们可以开始准备我们的 Django CMS 项目将驻留的虚拟环境。
让我们从使用 virtualenv 启动一个名为“django_cms”的 venv(虚拟环境)开始,然后转到项目的文件夹:
virtualenv django_cms cd django_cms
我们选择“django_cms”作为项目存储库的文件夹名称。 您可以根据需要更改它。 请记住,选择不相关的名称可能会在以后的维护中造成麻烦。
创建 virtualenv 后,您需要激活它才能使用它。
source bin/activate
您可以通过单击 此处 了解有关 virtualenv 激活的更多信息。
激活后,为了停用,只需在需要时运行命令
deactivate
。
4 - 设置 Django CMS 依赖项
4.1 - 安装枕头(插入式 pil 更换):
我们需要的依赖项之一称为 Python 映像库 (PIL)。 与我们之前安装的其他一些库一起,Django [CMS] 使用 PIL 来处理图像。
话虽如此,我们将弃权 PIL 并使用更适合的 PIL 分支,称为 pillow。 这个包是 setuptools 兼容的,并且自动解决了如果我们尝试在 venv 中使用 pil 会出现的几个问题。
运行以下命令以下载并安装枕头:
django_cms$ pip install pillow
由于我们激活了 venv,这将不是系统范围的安装。
4.2 - 安装数据库驱动
Django [CMS] 允许您选择多个数据库引擎来支持您的应用程序。 目前支持 PostgreSQL、MySQL、Oracle 和 SQLite。 根据 Django 项目的建议,我们将选择 PostgreSQL 并安装必要的库和驱动程序,以便我们将其用作应用程序的后端。
Django 使用的 PostgreSQL 数据库适配器称为 psycopg2。 它需要安装 libpq-dev 库,我们一开始就安装了它。 因此,我们可以继续执行以下命令在我们的 venv 中安装 psycopg2:
django_cms$ pip install psycopg2
由于我们激活了 venv,这将不是系统范围的安装。
有关 psycopg2 的更多信息,您可以访问 http://initd.org/psycopg/docs/faq.html。
请注意: 这些命令为 Django 准备了 PostgreSQL,但没有为您提供完全配置的安装。 如果您选择使用 PostgreSQL 并且需要有关 Django 的进一步说明,您可能希望通过单击 此处 访问以下有关确切主题的 DigitalOcean 教程。
下面我们使用 SQLite 数据库。 如果您决定使用它,您还应该修改该设置以与您的 PostgreSQL 安装一起使用。
5 - 在我们的 Python 虚拟环境中安装和设置 Django CMS
5.1 - 安装 Django CMS
Django CMS 附带了许多我们还需要安装的其他依赖项。 但是,多亏了 pip,我们可以使用 Django CMS 包自动安装和设置剩余的内容:django-cms。
只需运行以下命令即可结束安装:
django_cms$ pip install django-cms
由于我们激活了 venv,这将不是系统范围的安装。
我们现在已经安装了所有东西: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 地址。
我们现在可以按照 Django CMS 入门教程 中列出的说明完成所有操作。
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 应该类似于:
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', # Uncomment the next line for simple clickjacking protection: # '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
和 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
创建一个示例性的 base 模板来扩展其他模板:
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>
让我们保存并关闭并继续创建我们的第一个模板:基于 base.html
的 template_1.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 OK”,则表示一切正常,我们可以在测试服务器上进行尝试,然后继续构建我们的 Django CMS 项目。
让我们再次运行服务器:
django_cms$ python manage.py runserver 0.0.0.0:8000
要查看 Django CMS 欢迎屏幕,请访问:
要使用管理面板,请访问:
您将需要使用您在数据库同步期间创建的用户登录; 您可以从那里继续自定义您的 CMS。
有关更多说明、教程和文档,您可以访问 http://docs.django-cms.org/en/2.4.2/。 要获得对 Django CMS 的更多支持,您可以访问位于 https://www.django-cms.org/en/support/ 的支持页面。