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.