如何在Debian 7或Ubuntu 13 VPS上设置和安装Django CMS

Django CMS是内容管理系统之一,旨在使用基于Django框架的Web应用程序。这也许是今天几乎三十个其他选项中最受欢迎的一个。成为一个成熟的生产型

介绍


Django的CMS是朝着与Django框架基于网络的应用工作面向内容管理系统之一。这也许是今天几乎三十个其他选项中最受欢迎的一个。作为一个成熟的,生产就绪的系统受到世界各地一些重要Branded的信赖,并有一个专业公司支持其发展肯定使它成为项目的有吸引力的选择。 在这种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(和其他软件包)安装。 越来越点子之前,我们首先需要安装的依赖:setuptools的

2.1 -安装setuptools:


我们要安全地下载使用一种称为卷曲工具安装文件。这些设置文件不仅允许我们使安装过程自动化,而且还确保我们具有在我们的系统上运行的最新稳定版本。 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:

运行以下命令以安装virtualenv:
pip install https://github.com/pypa/virtualenv/tarball/1.9.X
这将在系统范围内安装。
如果你想知道,标准的安装方式是:
pip install virtualenv
这也将在系统范围内安装。

3 -准备我们的虚拟环境(venv)Django的CMS


我们所需要的所有工具都已准备就绪,我们可以开始准备我们的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)。与之前安装的其他一些库一起,PIL被Django [CMS]用来处理图像。 话虽这么说,我们将放弃PIL并使用PIL更适应叉叫 。这个包是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附带了许多其他依赖项,我们还需要安装。然而,由于点子,我们可以有剩余的自动安装并设置了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 -最后确定设置为每入门教程


对于大多数CMS的Django的配置需要的内部进行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本身以及它的dependenices和其他强烈推荐的应用程序/库:
'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_ROOTMEDIA_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'),
]
最后,让我们定义一个数据库引擎。您可以修改数据库设置在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即可保存并关闭。 我们将继续准备模板。 创建模板文件夹:
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
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检查
django_cms$ python manage.py cms check
如果你看到“安装正常”,这意味着一切都很好,我们可以尝试它在测试服务器上,然后继续构建我们的Django CMS项目。 让我们再次运行服务器:
django_cms$ python manage.py runserver 0.0.0.0:8000
您将需要使用在数据库同步期间创建的用户登录;您可以从那里继续自定义CMS。 对于进一步的说明,教程和文档,您可以访问http://docs.django-cms.org/en/2.4.2/ 。 要获得Django的CMS更多的支持,您可以访问位于支持页面https://www.django-cms.org/en/support/