viernes, 5 de febrero de 2016

instalación Django junto a postgresql como base de datos

Instalación de Django


Asi me fue instalando Django junto a postgresql como base de datos.

Hola amigos les entrego un post de mi experiencia instalando Django recogido de seguir un curso que estoy realizando y de leer tutoriales, blogs, y la documentación oficial de Django que no nos debe faltar y con la cual pude resolver la conexión con postgresql como base de datos, ya que Django viene configurado para trabajar con sqlite3 por defecto, y mi idea era configurarlo con este gestor de base de datos, realmente me di cuenta que hay poca documentación al respecto, por lo que espero este post contribuya para aportar a quienes quieran aprender sobre Django.

Esto lo realice en una maquina que tiene instalado ElementaryOS Friya como sistema operativo que para quienes no lo saben es una distro derivada de Ubuntu por lo que a cualquier de distro derivada de Ubuntu me imagino debería funcionar.

~$ uname -a
Linux linuxelementaaryserver 3.16.0-55-generic #74~14.04.1-Ubuntu SMP Tue Nov 17 10:15:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

Como saben estoy siguiendo el libro La guía definitiva de Django: Desarrolla aplicaciones web de forma rápida y sencilla.

Tratare de explicar la instalación de todo basado en mi experiencia personal donde varias cosas al principio no daban pero al final como siempre esta la recompensa del deber cumplido.

Bueno sin más preámbulo empezamos

Primero instalemos Postgresql en nuestro sistema. Buscando posts y tutoriales por internet, la forma mas fácil de instalarlo es con el siguiente instrucción.

En nuestra consola escribimos lo siguiente

sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev pgadmin3

con esto nos queda instalado Postgresql, en mi caso me instalo la versión 9.3

Para Ubuntu y derivados, no configura el password para el usuario postgres que es el administrador por defecto de Postgres, para ello en nuestra consola escribimos;

sudo -i -u postgres

nos pedirá el password del admin de linux

luego escribimos

psql

 con estos estamos en la consola de administración de postgresql

y asignamos el password al usuario postgres que es un usuario que crea cuando instalamos Postgres, lo hacemos con el siguiente comando

alter user postgres with password 'passwd' 

en passwd colocamos nuestra contraseña,

Esto lo hacemos por que para conectar a django necesitamos que se conecte al servidor con el usuario postgres.

Después volveremos para crear una base de datos que también es necesario.

ahora empezaremos a instalar Django

Primero debemos instalar el administrador e instalador de paquetes de Python para ello en la consola ponemos:

python get-pip.py

o

sudo apt-get install pip

luego instalamos virtualenv que es quien manejaremos el ambiente virtual

pip install virtualenv


luego donde te parezca creamos una carpeta para crear un ambiente virtual, para instalar Django, esto es recomendable para no interfiera con otras instalaciones y dependencias.


mkdir [nombre de la carpeta]


cd [nombre de la carpeta]
entramos a la carpeta

ahora creamos el entorno virtual

virtualenv [nombre_del_entorno]

luego debemos activar el entorno virtual

source [nombre_del_entorno]/bin/activate

el promt de nuestra consola cambiara

[nombre_del_entorno]/[nombre de la carpeta]~$

con el siguiente comando veremos lo que esta instalado en nuestro entorno

pip freeze 

instalamos Django en mi caso instale la 1.8

pip install django==1.8

pero para instalar la ultima versión para el momento que se escribió este post va en la 1.9

para ello escriben lo mismo si el ==1.8 y por defecto instalara la ultima versión.

Luegos instalamos psycopg2 

pip install psycopg2

si hacemos pip freeze veremos los paquetes instalados en nuestro entorno virtual.


Después de instalado Django creamos un proyecto con 

django-admin.py startproject [nombre proyecto]

con esto Django nos crea una carpeta con unos archivos dentro, con el comando ls listara dos carpetas una de ellas tiene el nombre que le diste al proyecto en la instrucción anterior. Entramos a esta carpeta


cd [nombre proyecto]

Con la siguiente instrucción de la consola abro el proyecto en sublimetext

subl .

vemos que en la carpeta que quedamos en la consola dentro de ella esta los siguientes archivos.

__init__ 
settings.py 
urls.py
wsgi.py

volvemos al promt de postgres y creamos una base de datos

con

CREATE DATABSE [nombre base datos]


volvemos a sublimetext

En settings.py buscamos DATABASES  y cambiamos a lo siguiente ya que lo que esta es para trabajar por defecto con sqlite3


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '
[nombre base datos] ',
        'USER': 'postgres',
        'PASSWORD': '[contraseña que cambiamos]',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}


y donde dice LANGUAGE_CODE = 'en-us' 

cambia por 'es-co'

guardamos el archivo con ctrl + s

una vez hecho esto 

realizamos la migración para que django cree las tablas que necesita por defecto con postgresql. En otro post aclararemos mas estos conceptos.


python manage.py migrate

nos debe salir lo siguiente como respuesta

(nombre entorno) usuario@linuxelementaary:~/[nombre_del_entorno]/[nombre de la carpeta]~$ python manage.py migrate

Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying sessions.0001_initial... OK


si viste esto ya esta configurado Django para trabajar con Postgresql


luego corremos el servidor de Django

con


python manage.py runserver

Veras una salida como la siguiente en tu terminal:
 

Performing   system   checks...
 
0   errors   found
January   06,   2014 ­ 15:50:53
 Django   version   1.8,   using   settings   'misitio.settings'
 Starting   development   server   at   http://127.0.0.1:8000/
 
Quit   the   server   with   CONTROL­C.
 

Acabas de iniciar el servidor de desarrollo de Django, un servidor web liviano escrito completamente en Python, que vine incluido en Django para poder desarrollar de manera rápida tus proyectos, sin tener que perder el tiempo con la configuración de un servidor de producción -- - como Apache hasta que el proyecto esté listo para producción. 


En el navegador colocamos en la barra de direcciones http://127.0.0.1:8000/, podemos ver una pagina de Bienvenida de Django



 

Una vez instalado Django aunque en el post anterior verificamos su instalación desde el navegador web cuando corrimos el servidor que nos proporciona Django, lo podemos hacer también desde la consola de nuestro sistema (recuerden la consola o la terminal es nuestra mejor amiga).



Lo podemos hacer de la siguiente 2 maneras:

  • Recordemos que debemos estar dentro del entorno virtual creado. Y entramos al shell de python. Una vez dentro escribimos lo siguiente:

>>> import django
>>> django.VERSION
1.8
>>>

  • O puedes usar directamente el siguiente comando en una terminal:

$ python -c "import django; print(django.get_version())"



Como recordaras ya hemos creado un proyecto con

$ django-admin.py startproject misitio



Donde misitio es el nombre de tu proyecto. Esto creará un directorio misitio en el directorio actual, que contiene la estructura de directorios y archivos que conforman tu proyecto Django.

Veamos lo que el comando startproject creo:

misitio/
manage.py
misitio/
__init__.py
settings.py
urls.py
wsgi.py

Donde ubicaremos nuestro codigo?, pues si tienes experiencia en lenguajes PHP sabrás que el código lo colocamos en el directorio raíz del servidor /var/www. En Django no es así por razones de seguridad se recomienda colocar el código fuera, puede ser en /home/proyecto.

Si leíste y espero que hayas revisado el post anterior sabrás que el objetivo era salir un poco de los parámetros del libro que estamos siguiendo y el cual era configurar django con Postgres.



Bueno si queremos ver las tablas que internamente Django creo, cuando ejecutamos la orden

$ python manage.py migrate

hacemos lo siguiente:

$ python manage.py dbshell



con esto entramos a la consola de administración de Postgres 

y escribimos para Postgres la siguiente orden:

\dt

con esto lista las tablas en la base de datos configurada con Django.

Deberían ver algo como esto.






Django creo una tabla por cada una de las aplicaciones creadas por defecto en settings.py

 



Espero les haya sido de ayuda

No hay comentarios.:

Publicar un comentario