domingo, 6 de julio de 2014

Empaquetar aplicación con VirtualBox o redirección de puertos en NAT

Como es de costumbre tenía una situación y me pareció muy interesante como para registrarlo y que no se me vaya a olvidar; bien el detalle, es que, necesito entregar un par de aplicaciones web que he desarrollado.

La primera idea fue entregar un manual para que puedan montar su servidor web con MAMP, WAMP o XAMPP, sin embargo muchos usuarios no podían hacerlo siendo personas que no son de informática les causaba muchas dudas. Además que la implementación del código en este caso en php tenía errores de funcionamiento simplemente por las variaciones de MAMP, WAMP y XAMPP.

Pues bien ahora voy a intentar utilizando una maquina de VirtualBox, pero se me presentaba el problema de como acceder si tenía la configuración NAT.

VirtualBox tiene una opción de redirección de puertos:


Desde ahí puede configurarse la redirección de puertos:


O también puede utilizarse la línea de comandos desde tu equipo, cuando tienes virtualbox instalado tienes un comando de nombre VBoxManage, de esta forma puedes correr:

$ VBoxManage modifyvm "nombre de tu maquina" --natpf1 "guesthttp,tcp,,2080,,80"

Todo lo expuesto en las imágenes y en el comando anterior, lo que estamos haciendo es que cuando en nuestra maquina busquemos en el navegador 127.0.0.1:2080, el equipo va ir a la maquina virtual al puerto 80, mientras que en tu equipo el puerto 2080 es el que esta a la escucha.

Espero te sea de utilidad !



Referencias:
http://cjenkins.wordpress.com/2010/08/12/redireccion-de-puertos-con-virtualbox/
http://linuxtargz.blogspot.mx/2012/09/configurar-el-reenvio-de-puertos-con.html
http://aruljohn.com/info/virtualbox-access-guest-from-host-nat/

jueves, 29 de mayo de 2014

Secuencia de Django South Migration

Una vez instalado south, y haberlo agregado al archivo settings.py dentro de INSTALLED_APPS, la secuencia es:

  1. Crear físicamente la base de datos
  2. Ejecutar comando: $ manage.py schemamigration app --initial
  3. Ejecutar comando: $ manage.py syncdb   
  4. En el paso anterior no se crearon las tablas de la aplicación puesto que eso se realizará con el comando siguiente.
  5. Ejecutar comando: $ manage.py migrate app

Ahora bien si hubo un cambio:
  1. Ejecutar comando: $  manage.py schemamigration app --auto
  2. Ejecutar comando: $  manage.py migrate app

¿Te fué de utilidad?

sábado, 26 de abril de 2014

Ubuntu compartir una carpeta desde la terminal usando samba

Para compartir una carpeta desde Ubuntu, lo primero es tener instalado samba, en caso de no tenerlo se puede instalar utilizando:

$ sudo apt-get install smbfs samba

En mi caso cuando instale ubuntu desde el proceso de instalación agregue la opción de utilizar samba.

Agregamos un usuario para el uso de la conexión desde otro equipo ya sea de windows, mac o desde otro equipo con ubuntu.

$ sudo smbpasswd -a miusuario

Al correr el comando anterior solicitará una contraseña para el usuario. Posteriormente necesitaremos agregar el usuario y su nombre en el smbusers.

$ sudo vi /etc/samba/smbusers

Al correr el comando se abrirá una pantalla para modificación de texto en el cuál agregaremos:

miusuario="MiUsuario"

Posteriormente daremos de alta los directorios que queremos compartir, esto lo haemos en el archivo smb.conf, editandolo con el siguiente comando:

$ sudo vi /etc/samba/smb.conf

Dentro del archivo se colocará:

[nombre_del_directorio]
    comment = miusuario Archivos Privados
    path = /ruta/al/directorio_compartido
    valid users = miusuario
    public = no
    writable = yes


Posteriormente  reiniciamos el servicio de samba:

$ sudo /etc/init.d/samba restart

Una vez realizado esto, deberá ser posible acceder al recurso compartido.


Espero te sea de utilidad !




Referencias:
http://ubuntuforums.org/showthread.php?t=1208528
http://www.guia-ubuntu.com/index.php?title=Samba#Para_compartir_una_carpeta

martes, 22 de abril de 2014

Instalación OpenSUSE 13.1 - VirtualEnv - Python - Django - MySQL

Como parte de un proyecto en mi trabajo es necesario utilizar django dentro de opensuse, para lo cuál realizaremos lo siguiente:

1. Instalación de VirtualEnv
Utilizando la terminal ejecutamos:
> sudo zypper install python-virtualenv  
NOTA: Será necesario tener instalado zypper en caso de no tenerlo a travéz de Yast.

2. Iniciar el proyecto con virtualenv
Utilizando los siguientes comandos ...
> mkdir miproyecto  
> virtualenv vmp  


3. Instalar el soporte de Mysql
Para instalar el soporte de MySQL es importante considerar tener el MySQL instalado, para instalar en OpenSUSE puede ser la siguiente guía: http://omaryahir.blogspot.mx/2014/04/opensuse-131-y-mysql.html

Una vez que el MySQL se encuentra instalado ejecutamos:
> sudo zypper instalpython-devel 
> sudo zypper install libmysqlclient-devel 
> sudo zypper install gcc 

4. Activamos la maquina e instalamos django
Con el punto anterior tenemos una maquina virtualenv con nombre vmp por lo que la activaremos con los siguientes comandos para instalar la versión más reciente de django y el soporte de mysql.
> source vmp/bin/activate  
(vmp) > pip install django  
(vmp) > pip install mysql-python  

Con lo anterior debe de poder funcionar correctamente django con soporte MySQL en OpenSUSE.

Espero te sea de utilidad !



Referencias:







jueves, 17 de abril de 2014

OpenSUSE 13.1 y MySQL

Haciendo pruebas con OpenSUSE 13.1 me doy cuenta de que viene precargado mariadb y no lograba activar y habilitar el MySQL, me funciono realizando lo siguiente:

1. Instalar a traves de YaST mysql-community-server; esto implicará que el mismo YaST solicite desinstalar mariadb-server y mariadb-client; se debe autorizar la desinstalación ya que la versión mariadb que viene preinstalada en OpenSUSE 13.1 no es compatible con MySQL 5.6.

2. Una vez instalado mysql-community-server se debe crear un archivo usando el siguiente comando:
    • sudo vi /lib/systemd/system/mysqld.service
    • El contenido del archivo debe ser el siguiente:
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/mysql start
ExecStop=/etc/rc.d/mysql stop

[Install]
WantedBy=multi-user.target

3. Posteriormente usar el siguiente comando:
    • sudo systemctl daemon-reload 
4. Entrar nuevamente a YaST en la sección de System, y luego en Service Manager localizar mysqld y habilitar el servicio.

5. Posteriormente cerrar el YaST y en la terminal teclear:
    • sudo mysql_secure_installation
Esta opción solicitará la contraseña del root, si es la primera vez que se ejecuta es en blanco; posteriormente solicitará algunos datos de la instalación.
6. Finalmente regresar a YaST nuevamente a System y Service Manager localizar mysqld e indicar que debe iniciar el servicio.


De esa forma me funciono, espero te sea de utilidad !!! 


Referencias:
http://superuser.com/questions/384365/systemctl-enable-differs-from-systemctl-start-how
http://en.opensuse.org/SDB:MySQL_installation
https://bugzilla.novell.com/show_bug.cgi?id=846422
https://bugzilla.novell.com/show_bug.cgi?id=840159


lunes, 17 de marzo de 2014

VirtualEnv + Python MySQL error: command 'cc' failed with exit status 1 Mac OSX

Tratando de usar Django + MySQL dentro de virtualenv, en un entorno Mac OSX Mavericks, al parecer el procedimiento previo que había seguido ya no funciona igual; al correr el comando sudo pip install mysql-python, me genera el siguiente error:

error: command 'cc' failed with exit status 1

La forma en como lo solucione fue la siguiente:

Instale el XCode desde la AppStore, no se si este se encuentre gratuito ya que hace ya un tiempo lo había comprado.

Posteriormente utiizando el comando:
$ vi ~/.bash_profile 

Agregue los siguientes parametros:
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
 
Una vez realizado lo anterior ahora si utilizando el comando:
$ pip install mysql-python

Quedará instalado; es probable que salgan algunos warnings, sin embargo deberá ser posible utilizarlo para desarrollar.


Espero te sea de utilidad !



Referencias:
http://stackoverflow.com/questions/19769648/cant-install-discount-with-pip-error-command-cc-failed-with-exit-status-1
http://stackoverflow.com/questions/22413050/cant-install-python-mysql-library-on-mac-mavericks?lq=1

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