En esta publicación de blog, le mostraremos cómo instalar Django CMS en un Ubuntu VPS con MariaDB, Nginx y Gunicorn .
Django CMS es un sistema de gestión de contenido de código abierto basado en el marco web Django. Algunas de las características principales incluyen:URL bonitas basadas en complementos, administración de permisos, aplicaciones, edición de interfaz, análisis, blog, etc.
El siguiente comando instalará todos los paquetes necesarios
apt-get update apt-get install -y python-software-properties python python-dev
Instalar la última versión de Nginx
add-apt-repository ppa:nginx/stable apt-get update && sudo apt-get install nginx
Instala MariaDB y crea una base de datos.
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main' apt-get update echo -e "Package: *\nPin: origin ftp.osuosl.org\nPin-Priority: 1000" | tee /etc/apt/preferences.d/mariadb apt-get install mariadb-server libmariadbclient-dev
mysql -uroot -p MariaDB [(none)]> CREATE DATABASE dcms; MariaDB [(none)]> GRANT ALL PRIVILEGES ON dcms.* TO 'dcmsuser'@'localhost' IDENTIFIED BY 'pa33W0rd'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> \q
Instalar pip
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
Crear un virtualenv usando pip
sudo pip install --upgrade virtualenv mkdir -p ~/.virtualenvs/djangocms virtualenv ~/.virtualenvs/djangocms source ~/.virtualenvs/djangocms/bin/activate
Cree un archivo de requisitos.txt con el siguiente contenido
# Bare minimum django-cms==2.4.1 #These dependencies are brought in by django-cms, but if you want to lock-in their version, specify them Django==1.5.1 django-classy-tags==0.4 South==0.8.1 html5lib==1.0b1 django-mptt==0.5.2 django-sekizai==0.7 six==1.3.0 mysql-python==1.2.5 #Optional, recommended packages Pillow==2.0.0 django-filer==0.9.4 cmsplugin-filer==0.9.5 django-reversion==1.7
Instalar django CMS
pip install --upgrade --download-cache=~/.pip-cache -r requirements.txt
Cree su proyecto CMS de Django
mkdir ~/projects cd ~/projects django-admin.py startproject mynewproject
Abra el archivo ~/projects/mynewproject/mynewproject/settings.py y agregue lo siguiente en la parte superior del archivo:
# -*- coding: utf-8 -*- import os gettext = lambda s: s PROJECT_PATH = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0]
Agregue los detalles de su base de datos:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dcms',
'USER': 'dcms',
'PASSWORD': 'pa33W0rd',
'HOST': '',
'PORT': '',
}
} Agregue las siguientes aplicaciones a INSTALLED_APPS.
'django.contrib.admin',
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'cms',
'mptt',
'menus',
'south',
'sekizai'
) Agregue las siguientes líneas a la lista 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',
) Agregue lo siguiente al final del archivo:
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',
) Cambie las directivas STATIC_ROOT y MEDIA_ROOT a:
STATIC_ROOT = os.path.join(PROJECT_PATH, "static") STATIC_URL = "/static/" MEDIA_ROOT = os.path.join(PROJECT_PATH, "media") MEDIA_URL = "/media/"
Modifique la directiva TEMPLATE_DIRS:
TEMPLATE_DIRS = (
# The docs say it should be absolute path: PROJECT_PATH is precisely one.
# Life is wonderful!
os.path.join(PROJECT_PATH, "templates"),
) Agregue al menos una plantilla a CMS_TEMPLATES
CMS_TEMPLATES = (
('template_1.html', 'Template One'),
('template_2.html', 'Template Two'),
) Limitar a inglés
LANGUAGES = [
('en', 'English'),
] Finalmente guarde el archivo settings.py.
Definir rutas para nuestro proyecto
Abra el archivo mynewproject/mynewproject/urls.py y reemplace el contenido con lo siguiente
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 = 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 Crear plantillas
Crear un nuevo directorio de plantillas
mkdir ~/projects/mynewproject/templates
Abre tu editor favorito y crea los siguientes archivos:
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> plantilla_1.html
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_1_content %}
{% endblock %} plantilla_2.html
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_2_content %}
{% endblock %} Inicialice la base de datos y cree un nuevo superusuario
python manage.py syncdb --all python manage.py migrate --fake
Compruebe si todo está configurado correctamente
python manage.py cms check
Si ve "Instalación correcta", significa que todo está configurado correctamente.
Recopilar archivos estáticos
cd ~/projects/mynewproject ./manage.py collectstatic
Instalar y configurar gunicorn
pip install gunicorn
cree un nuevo archivo de configuración (~/.virtualenvs/djangocms/gunicorn_config.py) de la siguiente manera
command = '~/.virtualenvs/djangocms/bin/gunicorn' pythonpath = '~/projects/mynewproject' bind = '127.0.0.1:8011' workers = 3 user = nobody
Inicie el gunicornio con el siguiente comando:
cd ~/projects/mynewproject && gunicorn -c ~/.virtualenvs/djangocms/gunicorn_config.py mynewproject.wsgi
Configurar Nginx
Crear un nuevo host virtual nginx
vim /etc/nginx/sites-available/your_domain.com
server {
listen 80;
server_name your_domain.com;
location /static/ {
alias /<your_username>/projects/mynewproject/static/;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8011/;
}
}
ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/your_domain.com
/etc/init.d/nginx restart Eso es todo. Ahora abra su navegador y navegue hasta su dominio.
Para obtener más información sobre Django CMS, visite:http://docs.django-cms.org/
Por supuesto, no tiene que hacer nada de esto si utiliza uno de nuestros servicios de alojamiento VPS de Linux, en cuyo caso simplemente puede pedirle a nuestros administradores expertos de Linux que lo instalen por usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.
PD . Si te gustó esta publicación, compártela con tus amigos en las redes sociales usando los botones de la izquierda o simplemente deja una respuesta a continuación. Gracias.