Empezaremos por la instalación del software necesario, posiblemente alguno ya se encuentre instalado en nuestro equipo:
Verificamos la correcta instalación de django, para ello vemos la versión instalada (actualmente la 1.5.2):
Crear la base de datos y el usuario de mysql que utiliza nuestro proyecto. Una vez conectados a mysql como administrador (root) indicaremos las siguientes ordenes:
Editamos el fichero de configuración del proyecto (mi_proyecto/settings.py) para adaptar los valores al nuevo equipo, quedaría así:
Podemos verificar el correcto funcionamiento del proyecto lanzando el servidor web de desarrollo de django. Para que funcione correctamente el servidor de desarrollo en el fichero de configuración tendremos que indicar Debug=True, en caso contrario obtendremos '500 server error':
Editamos el fichero de configuración de Apache /etc/apache2/sites-available/default para indicar dentro del <VirtualHost *:80> la configuración del módulo mod_wsgi.
El fichero quedaría así:
sudo apt-get install python
sudo apt-get install python-mysqldb
sudo apt-get install apache2 libapache2-mod-wsgi
sudo apt-get install mysql-server
sudo easy_install -U distribute
sudo pip install django
Verificamos la correcta instalación de django, para ello vemos la versión instalada (actualmente la 1.5.2):
django-admin --version
Crear la base de datos y el usuario de mysql que utiliza nuestro proyecto. Una vez conectados a mysql como administrador (root) indicaremos las siguientes ordenes:
mysql>CREATE DATABASE mi_base_de_datos;
mysql>CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'mi_clave';
mysql>GRANT ALL PRIVILEGES ON mi_base_de_datos.* TO 'mi_usuario'@'localhost';
mysql>FLUSH PRIVILEGES;
Copiamos o creamos el proyecto Django, en el caso que sea un proyecto nuevo:$django-admin startproject mi_proyecto
$cd mi_proyecto
$python manage.py startapp mi_aplicacion
Editamos el fichero de configuración del proyecto (mi_proyecto/settings.py) para adaptar los valores al nuevo equipo, quedaría así:
DEBUG = False
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'mi_base_de_datos', # Or path to database file if using sqlite3.
'USER': 'mi_usuario', # Not used with sqlite3.
'PASSWORD': 'mi_clave', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
ALLOWED_HOSTS = ['midominio.es']
TIME_ZONE = 'Europe/Madrid'
LANGUAGE_CODE = 'es-es'
SITE_ID = 1
USE_I18N = True
USE_L10N = True
SE_TZ = True
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX ='/static/admin/'
STATICFILES_DIRS = (
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
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:
)
ROOT_URLCONF = 'mi_proyecto.urls'
WSGI_APPLICATION = 'mi_proyecto.wsgi.application'
TEMPLATE_DIRS = (
'/home/usuario/mi_proyecto/mi_aplicacion/templates'
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
'mi_aplicacion',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
Si se trata de un proyecto nuevo, creamos las tablas de la base de datos y el usuario administrador mediante:python manage.py syncdb
Podemos verificar el correcto funcionamiento del proyecto lanzando el servidor web de desarrollo de django. Para que funcione correctamente el servidor de desarrollo en el fichero de configuración tendremos que indicar Debug=True, en caso contrario obtendremos '500 server error':
python manage.py runserver 192.168.0.1:8001
Editamos el fichero de configuración de Apache /etc/apache2/sites-available/default para indicar dentro del <VirtualHost *:80> la configuración del módulo mod_wsgi.
El fichero quedaría así:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
WSGIDaemonProcess miproyecto python-path=/home/usuario/mi_proyecto/
WSGIProcessGroup miproyecto
WSGIScriptAlias / /home/usuario/mi_proyecto/mi_proyecto/wsgi.py
Alias /static/admin/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
<Directory /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin>
Order allow,deny
Allow from all
</Directory>
<Directory /home/usuario/mi_proyecto/mi_proyecto>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Reiniciamos el servidor apache y ya estaría listo:
sudo service apache2 restart
Comentarios