In questo post del blog ti mostreremo come installare il Django CMS su un VPS Ubuntu con MariaDB, Nginx e Gunicorn .
Django CMS è un sistema di gestione dei contenuti open source basato sul framework Web Django. Alcune delle caratteristiche principali includono:basato su plug-in, URL graziosi, gestione delle autorizzazioni, app, modifica frontend, analisi, blog ..ecc.
Il comando seguente installerà tutti i pacchetti necessari
apt-get update apt-get install -y python-software-properties python python-dev
Installa l'ultima versione di Nginx
add-apt-repository ppa:nginx/stable apt-get update && sudo apt-get install nginx
Installa MariaDB e crea un database.
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
Installa pip
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
Crea un virtualenv usando pip
sudo pip install --upgrade virtualenv mkdir -p ~/.virtualenvs/djangocms virtualenv ~/.virtualenvs/djangocms source ~/.virtualenvs/djangocms/bin/activate
Crea un file Requirements.txt con i seguenti contenuti
# 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
Installa django CMS
pip install --upgrade --download-cache=~/.pip-cache -r requirements.txt
Crea il tuo progetto CMS django
mkdir ~/projects cd ~/projects django-admin.py startproject mynewproject
Apri il file ~/projects/mynewproject/mynewproject/settings.py e aggiungi quanto segue nella parte superiore del file:
# -*- coding: utf-8 -*- import os gettext = lambda s: s PROJECT_PATH = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0]
Aggiungi i dettagli del tuo database:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dcms', 'USER': 'dcms', 'PASSWORD': 'pa33W0rd', 'HOST': '', 'PORT': '', } }
Aggiungi le seguenti app 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' )
Aggiungi le seguenti righe all'elenco 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', )
Aggiungi quanto segue alla fine del file:
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', )
Modifica le direttive STATIC_ROOT e MEDIA_ROOT in:
STATIC_ROOT = os.path.join(PROJECT_PATH, "static") STATIC_URL = "/static/" MEDIA_ROOT = os.path.join(PROJECT_PATH, "media") MEDIA_URL = "/media/"
Modifica la direttiva 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"), )
Aggiungi almeno un modello a CMS_TEMPLATES
CMS_TEMPLATES = ( ('template_1.html', 'Template One'), ('template_2.html', 'Template Two'), )
Limita all'inglese
LANGUAGES = [ ('en', 'English'), ]
Infine salva il file settings.py.
Definisci percorsi per il nostro progetto
Apri il file mynewproject/mynewproject/urls.py e sostituisci il contenuto con il seguente
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
Crea modelli
Crea un nuovo modello di directory
mkdir ~/projects/mynewproject/templates
Apri il tuo editor preferito e crea i seguenti file:
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>
modello_1.html
{% extends "base.html" %} {% load cms_tags %} {% block base_content %} {% placeholder template_1_content %} {% endblock %}
modello_2.html
{% extends "base.html" %} {% load cms_tags %} {% block base_content %} {% placeholder template_2_content %} {% endblock %}
Inizializza il database e crea un nuovo superutente
python manage.py syncdb --all python manage.py migrate --fake
Verifica se tutto è impostato correttamente
python manage.py cms check
Se vedi "Installazione corretta", significa che tutto è impostato correttamente.
Raccogli file statici
cd ~/projects/mynewproject ./manage.py collectstatic
Installa e configura gunicorn
pip install gunicorn
crea un nuovo file di configurazione (~/.virtualenvs/djangocms/gunicorn_config.py) come segue
command = '~/.virtualenvs/djangocms/bin/gunicorn' pythonpath = '~/projects/mynewproject' bind = '127.0.0.1:8011' workers = 3 user = nobody
Avvia il gunicorn con il seguente comando:
cd ~/projects/mynewproject && gunicorn -c ~/.virtualenvs/djangocms/gunicorn_config.py mynewproject.wsgi
Configura Nginx
Crea un nuovo host virtuale 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
Questo è tutto. Ora apri il tuo browser e accedi al tuo dominio.
Per ulteriori informazioni su Django CMS, visitare:http://docs.django-cms.org/
Ovviamente non devi fare nulla di tutto questo se usi uno dei nostri servizi di hosting VPS Linux, nel qual caso puoi semplicemente chiedere ai nostri esperti amministratori Linux di installarlo per te. Sono disponibili 24 ore su 24, 7 giorni su 7 e si prenderanno immediatamente cura della tua richiesta.
PS . Se questo post ti è piaciuto condividilo con i tuoi amici sui social network utilizzando i pulsanti a sinistra o semplicemente lascia una risposta qui sotto. Grazie.