miércoles, 15 de enero de 2014

Copiar archivos vía ssh (Amazon) utilizando el archivo .pem


Bien este post es de solo una instrucción sin embargo considere importante dejarlo aquí para no andarlo buscando posteriormente ya que el comando no me funcionaba, se trata de copiar un archivo desde el equipo al servidor vía ssh utilizando un archivo pem especificamente lo estoy haciendo con un servidor Amazon EC2, les dejo el comando:

$scp -i /Ruta/al/archivo.pem -P [puerto] arch_origen.txt root@[IP]:/ruta/destino/arch_destino.txt

Con esto copiará el archivo arch_origen.txt en la carpeta donde se esta corriendo el comando y lo dejará en la /ruta/destino/ con el nombre arch_destino.txt


CORRECCIÓN 2014-05-30

Tenía un error en el acomodo del comando:
$scp -i /Ruta/al/archivo.pem -P [puerto] root@[IP]:/ruta/origen/arch_origen.txt /ruta/destino/arch_destino.txt

Por otro lado si deseas copiar un directorio entonces:
$scp -i /Ruta/al/archivo.pem -P [puerto] -r root@[IP]:/ruta/origen  /ruta/destino



Espero te sea de utilidad !


Referencias:
http://www.howtogeek.com/66776/how-to-remotely-copy-files-over-ssh-without-entering-your-password/
http://stackoverflow.com/questions/11388014/using-scp-to-copy-a-file-to-amazon-ec2-instance
http://www.hypexr.org/linux_scp_help.php
http://superuser.com/questions/188411/ssh-why-doesnt-get-command-work

sábado, 11 de enero de 2014

GraphViz + Django 1.6.1 + OSX

GraphViz es una herramienta muy útil para generar automáticamente diagramas UML de las clases que se tienen en un proyecto, anteriormente había hecho una entrada relacionada con dicha herramienta sin embargo se ha actualizado y ahora son menos pasos:

PASO 0 Instalar django-extensions

$ sudo easy_install django-extensions

PASO 1 Instalar GraphViz

Puedes descargarlo desde aquí: http://www.graphviz.org/Download_macos.php

PASO 2 Instalar el pygraphviz

$ sudo pip install pygraphviz

PASO 3 Instalar herramientas adicionales:

$ sudo pip install pyparsing==1.5.7
$ sudo pip install pydot

PASO 4 Modificar el archivo settings.py añadiendo dentro de INSTALLED_APPS django_extensions:

INSTALLED_APPS = (
    'django.contrib.admin',
    ...
    'django_extensions',
)


USO

Con lo anterior ya tenemos instalada la herramienta podemos ver la ayuda de la siguiente forma:
$ python manage.py graph_models --help

Para generar rapidamente el diagrama en formato png:
./manage.py graph_models -a -g -o mi_proyecto.png


Saludos y espero te sea de utilidad !




lunes, 6 de enero de 2014

Instalar Django + MySQL + OSX Guía Rápida (5 Pasos Generales)

Esta es una guía rápida que utilizo para desarrollar proyectos con Django:

PASO 0 Instalando herramientas de desarrollo 

Deberás tener MySQL instalado, debido a los cambios que generalmente existen una opción es entrando en el siguiente link (Ojo es importante que lo manejes todo con 64bit o 32bit, te recomiendo todo lo que instalemos en 64bits):
http://dev.mysql.com/downloads/mysql/

Si ya tienes instalado virtualenv no necesitas realizar este bloque de comandos 

$ sudo easy_install -U distribute 
$ sudo easy_install pip
$ sudo pip install virtualenv

Instalar librería para enlace de Python con MySQL compatible con Django


NOTA: Como prerequisito instale: wget.

Descargar el mejor instalador para mac y ponerlo a funcionar, aquí la info: 
http://brew.sh



PASO 1 Inicializando Proyecto

Crear el directorio:
$ mkdir miproyecto
$ cd miproyecto

Instalando utilizando una maquina virtual
$ virtualenv vmiproyecto
$ source vmiproyecto/bin/activate

Instalar django en la maquina virtual 
(vmiproyecto) $ sudo pip install django

Conexión de MySQL-Python 
(vmiproyecto) $ sudo brew install mysql    # Instala también libmysqlclient-dev
(vmiproyecto) $ sudo pip install mysql-python

Crear proyecto
(vmiproyecto) $ django-admin.py startproject miproyecto

Probar instalación:
(vmiproyecto) $ cd miproyecto
(vmiproyecto) $ python manage.py runserver

Entrar al navegador y probar con http://127.0.0.1:8000

PASO 3 Trabajando con git

Dentro de nuestro proyecto vamos a inicializar el sitio con el siguiente comando:
(vmiproyecto) $ git init

Antes de cualquier cosa le diremos a git que no debe trackear el archivo settings_local.py, que contendrá la configuración necesaria para la conectividad local, así como también los archivos *.swp ya que utilizó vim como editor; para esto debemos editar el archivo .gitignore, el cuál se debe crear si no existe y colocar dentro, el siguiente contenido (Puede usar $ vi .gitignore): 
settings_local.py
*.swp
*.pyc

Una vez realizado lo anterior utilizaremos la siguientes instrucciones para añadir a nuestro primer commit los archivos del proyecto:
(vmiproyecto) $ git add .
(vmiproyecto) $ git commit -m "Inicializando proyecto: miproyecto"

NOTA: Es recomendable utilizar algún sitio como github o bitbucket para llevar el control de versiones respaldando el código en un lugar externo, así como también el uso de diversas ramas según sea necesario.

PASO 4 Generando settings_local.py

Este archivo será diferente en el entorno de producción y en el entorno de desarrollo fue por eso que se agrego al .gitignore. Para lo anterior debemos crear el archivo settings_local.py con el siguiente contenido:

DATABASES_LOCAL = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'basededatos',
        'USER': 'usuario_basededatos',
        'PASSWORD': 'clave_usuario_basededatos',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }

}

PASO 5 Modificando la configuración del settings.py

#Esta instrucción sirve para cerrar la sesión una vez cerrado el navegador:
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
...
#En el archivo settings.py eliminar la variable DATABASES = ... y dejar lo siguiente:
import settings.local.py
DATABASES = DATABASES_LOCAL
...
#Elegir el lenguaje del sistema en el ejemplo vemos español-México:
LANGUAGE_CODE=’es-MX’
...
#En caso de usar las zonas seleccionar la zona correcta desde: 
#http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
TIME_ZONE='America/Mexico_City'
...
#Desactivar Time Zone en ocasiones guarda la fecha y hora de acuerdo a 
#la zona horaria configurada, a menos que lo necesites puedes dejarlo
#activado, en mi caso particular no lo requiero.
USE_TZ=False


Referencias:
https://dl.dropboxusercontent.com/u/43970274/websites/desarrolloweb/index.html#settings
http://stackoverflow.com/questions/7335853/mysql-python-installation-problems-on-mac-os-x-lion
http://dev.mysql.com/doc/refman/5.0/es/resetting-permissions.html