Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas
Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas

domingo, 12 de julio de 2015

Django: ubuntu + nginx + gunicorn + supervisor + mysql

Tengo que instalar en una maquina virtual con virtualbox un deployment de un proyecto que debo entregar dejaré aqui los pasos que me funcionaron, ya tenía un post de deployment con uwsgi, pero ha quedado un poco desactualizado.

Bien voy colocando cada uno de los comandos:

$ sudo apt-get install python-virtualenv

Hay algunas otras herramientas que necesitamos instalar para el uso de django en ubuntu:

$ sudo apt-get install mysql-server
$ sudo apt-get install libmysql++-dev
$ sudo apt-get install python-dev
$ sudo apt-get install python-mysqldb
$ sudo apt-get install build-essential python

Crear una carpeta donde tendremos nuestras aplicaciones web:

$ sudo mkdir -p /webapps/carpeta_proyecto
$ sudo chown administrador /webapps/carpeta_proyecto

Creamos nuestro directorio virtual:

$ cd /webapps/carpeta_proyecto
$ virtualenv venv
$ source venv/bin/activate

Cargamos en ese directorio una carpeta con el código de nuestro proyecto, en mi caso lo tengo en bitbucket por lo que usando este comando descargo el código.

(venv)$ git clone http://bitbucket.org/tu_usuario/miproyecto.git

De esta forma tendremos dos directorios uno con el nombre de nuestro proyecto <miproyecto> y por otro lado tendremos un directorio con el entorno virtual <venv>.

Ahora instalamos el entorno en mi proyecto tengo un archivo requirements.txt, pero igual mínimo necesitamos instalar django y la librería de mysql, lo instalamos usando pip.

(venv)$ pip install django
(venv)$ pip install python-mysql

Es probable que para el proyecto tengan que correr un python manage.py syncdb o migrate para que puedan cargar la base de datos del proyecto, hasta este punto debemos poder probar el proyecto y ver que se encuentre funcionando correctamente usando un runserver.

Una vez que lo anterior se encuentre funcionando vamos ahora a realizar directamente el deployment.

Primero iniciamos instalando gunicorn, para eso utilizamos:

(venv)$ pip install gunicorn

Podemos probar el funcionamiento de gunicorn utilizando:

(venv)$ cd miproyecto
(venv)$ gunicorn miproyecto.wsgi:application --bind 0.0.0.0:8080

NOTA: La carpeta miproyecto, es el directorio que django crea cuando ejecutamos un startproject.

Al ejecutar el comando anterior gunicorn inicia un servidor en el puerto 8080 para ejecutar nuestro proyecto, sin embargo puede ser que el contenido estático no funcione correctamente.

Ahora para hacerlo más dinámico realizamos lo siguiente, creamos un archivo en mi caso yo lo deje en carpeta_proyecto/deployment/gunicorn_run y le copiamos dentro el siguiente contenido:

#!/bin/bash

NAME="miproyecto_app"                                        # Nombre de la app
DJANGODIR=/webapps/carpeta_proyecto/miproyecto               # directorio del proyecto de Django
SOCKFILE=/webapps/carpeta_proyecto/deployment/gunicorn.sock  # Nos comunicaremos utilizando este unix socket
USER=miusuario                                               # Correr con el usuario
GROUP=grupousuario                                           # Correr como el grupo 
NUM_WORKERS=3                                                # Cuantos - worker processes - de Gunicorn 
DJANGO_SETTINGS_MODULE=miproyecto.settings                   # Archivo settings de Django
DJANGO_WSGI_MODULE=miproyecto.wsgi                           # Archivo WSGI del proyecto

echo "Starting $NAME as `whoami`"

# Activando el entorno
cd $DJANGODIR
source ../venv/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Crear el directorio para correrlo en caso de no existir
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Iniciando Django Gunicorn
exec ../venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --bind=unix:$SOCKFILE \
  --log-level=debug \
  --log-file=-


Posteriormente convertimos el archivo como ejecutable usando el comando:

(venv)$ sudo chmod u+x gunicorn_run

Para probar el gunicorn podemos ejecutar el archivo de esta forma hacemos lo siguiente:

(venv)$ ./gunicorn_run

Una vez que se haya logrado ejecutar sin problemas, ahora, instalamos supervisor.

(venv)$ sudo apt-get install supervisor

Después de instalar supervisor vamos a crear el archivo /etc/supervisor/conf.d/miproyecto.conf con el siguiente contenido:

[program:miproyecto]
command = /webapps/carpeta_proyecto/deployment/gunicorn_run               ; Comando para iniciar la app
user = miusuario                                                          ; Usuario que lo va ejecutar
stdout_logfile = /webapps/carpeta_proyecto/logs/gunicorn_supervisor.log   ; Ruta del archivo log
redirect_stderr = true                                                    ; Alamcenar stderr en el mismo log
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8                           ; Establecer UTF-8 por default

Creamos el directorio logs y el archivo para almacenar el gunicorn_supervisor.log dentro del directorio de carpeta_proyecto.

(venv)$ mkdir /webapps/carpeta_proyecto/logs
(venv)$ touch /webapps/carpeta_proyecto/logs/gunicorn_supervisor.log

Posteriormente utilizamos para cargar el supervisor:

(venv)$ sudo supervisorctl reread
miproyecto: available
(venv)$ sudo supervisorctl update
miproyecto: added process group

Ahora para revisar el estatus del proyecto podemos utilizar:

(venv)$ sudo supervisorctl status miproyecto
miproyecto                            RUNNING    pid 2277, uptime 0:01:40

Podemos iniciar, parar o reiniciar el proyecto utilizando:

(venv)$ sudo supervisorctl stop miproyecto
miproyecto: stopped
(venv)$ sudo supervisorctl start miproyecto
miproyecto: started
(venv)$ sudo supervisorctl restart miproyecto
miproyecto: stopped
miproyecto: started

Ahora vamos con Nginx, para instalarlo utilizamos:
(venv)$ sudo apt-get install nginx

Para iniciar el servicio podemos utilizar:
$ sudo service nginx start

Con esto el servidor de nginx se activará, puede probarse, por omisión el puerto es el 80. Ahora bien lo que haremos es crear el archivo /etc/nginx/sites-available/miproyecto con el siguiente contenido:

upstream miproyecto_app_server {
  # fail_timeout=0 means we always retry an upstream even if it failed
  # to return a good HTTP response (in case the Unicorn master nukes a
  # single worker for timing out).

  server unix:/webapps/carpeta_proyecto/deployment/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name example.com;

    client_max_body_size 4G;

    access_log /webapps/carpeta_proyecto/logs/nginx-access.log;
    error_log /webapps/carpeta_proyecto/logs/nginx-error.log;

    location /static/ {
        # path to static folder         alias   /webapps/carpeta_proyecto/miproyecto/static/
    }
    
    location /media/ {
        # path to media folder
        alias   /webapps/carpeta_proyecto/miproyecto/media/;
    }

    location / {
        # an HTTP header important enough to have its own Wikipedia entry:
        #   http://en.wikipedia.org/wiki/X-Forwarded-For
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # enable this if and only if you use HTTPS, this helps Rack
        # set the proper protocol for doing redirects:
        # proxy_set_header X-Forwarded-Proto https;

        # pass the Host: header from the client right along so redirects
        # can be set properly within the Rack application
        proxy_set_header Host $http_host;

        # we don't want nginx trying to do something clever with
        # redirects, we set the Host: header above already.
        proxy_redirect off;

        # set "proxy_buffering off" *only* for Rainbows! when doing
        # Comet/long-poll stuff.  It's also safe to set if you're
        # using only serving fast clients with Unicorn + nginx.
        # Otherwise you _want_ nginx to buffer responses to slow
        # clients, really.
        # proxy_buffering off;

        # Try to serve static files from nginx, no point in making an
        # *application* server like Unicorn/Rainbows! serve static files.
        if (!-f $request_filename) {
            proxy_pass http://miproyecto_app_server;
            break;
        }
    }

    # Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /webapps/carpeta_proyecto/miproyecto/static/;
    }
}

De la misma manera que en los archivos anteriores personalizamos el contenido donde el color esta en negritas.

Ahora creamos el symbolic link en la carpeta sites-enabled (Esta carpeta nos permite indicar a nginx cuales sitios están habilitados).

$ sudo ln -s /etc/nginx/sites-available/miproyecto /etc/nginx/sites-enabled/miproyecto

Posteriormente reiniciamos nuestro servidor nginx:

$ sudo service nginx restart

Si hay algún error hay que revisar los directorios de los archivos, por otro lado en caso de que aparezca la pantalla de bienvenida de nginx al momento de volver a probar es debido al archivo default, en caso de que no vayamos a utilizar podemos eliminar su archivo símbolico desde el directorio de sites-enabled, una vez realizado lo anterior reiniciamos de nuevo el servidor de nginx.

$ sudo service nginx restart

Posterior a esto deberá funcionar correctamente el sitio.


Espero te sea de utilidad !



Referencias:
http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/
http://michal.karzynski.pl/blog/2013/10/29/serving-multiple-django-applications-with-nginx-gunicorn-supervisor/

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

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







miércoles, 2 de octubre de 2013

Django Implementación (Deployment) Ubuntu + NGINX + uWSGI + MySQL en 10 pasos (Actualizado)

Bien ya me toco instalar django sobre apache, pero mucha gente me ha referido a nginx como un gran servidor para equipos con bajos recursos ( quiero ponerlo dentro de una maquina virtual -_- ), que pueden levantar con mayor velocidad, así que me dispuse a probarlo dentro de una maquina virtual aquí el procedimiento:


PASO 1

Instalar el Ubuntu, en este caso no hubo mayor problema descargue virtualbox versión 4.2.18 y la versión de ubuntu 12.04.3 LTS. Te recomiendo que durante el proceso de instalación cuando te pregunte por instalar un servidor Open SSH, si lo actives, te será más facil lo siguiente realizando una conexión ssh (Sobre todo si estas utilizando un maquina virtual).


PASO 2

Como siguiente paso instalaremos mysql usando las instrucciones:
$ sudo apt-get upgrade
$ sudo apt-get install mysql-server

NOTA: Ojo con el password que se requerirá posteriormente. Que bonito funciona ubuntu todo con línea de comandos y casi sin problema :) ...


PASO 3

Ahora instalamos pip ( Generalmente python ya viene instalado por defecto a menos que desees otra instalación de python ) para instalarlo usamos:
$ sudo apt-get install python-setuptools
$ mkdir setup 
$ cd setup
$ wget http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install pip

NOTA: Es increíble lo bien que funciona, todo desde el terminal si hay errores solo es buscar un poco en internet.


PASO 4

Instalar Django hacemos lo siguiente
$ sudo pip install Django


PASO 5

Ahora bien empezamos con el enlace mysql-python para eso debemos instalar la herramienta de mysqldb usando los siguientes comandos:

Ese comando actualiza las referencias.
$ sudo easy_install -U distribute 
$ sudo apt-get install libmysql++-dev
# Ese comando evita los errores relacionados a - gcc -
$ sudo apt-get install python-dev   
$ sudo apt-get install python-mysqldb


PASO 6

Copiamos o creamos nuestro proyecto:
$ django-admin.py startproyect mi_proyecto

NOTA: Esta guía es solo es para la implementación por lo que supongo que ya tienen algo desarrollado o bien pueden colocar dentro de alguna vista un Hola Mundo para realizar pruebas.


PASO 7

Empezamos ahora con la parte interesante, para instalar nginx seguimos con lo genial de ubuntu usando la línea de comandos:
$ sudo apt-get install nginx
$ sudo apt-get install build-essential python
# Este comando actualiza las referencias de pip.
$ sudo easy_install -U pip
# Este comando actualiza las referencias de uwsgi.
$ sudo easy_install -U uwsgi      
$ sudo pip install uwsgi

NOTA: La segunda herramienta se utiliza para el control de uwsgi, que es la que posibilita a django enlazar con nginx previamente había un fastcgi pero al parecer django esta por darlo de baja en la versión Django 1.7.


PASO 8

Necesitaremos crear el archivo ini que utilizará uwsgi para manejar nuestra aplicación, la ubicación del archivo puede ser dentro del directorio del proyecto, en mi caso generalmente lo pongo dentro de una carpeta que se llama deploy, y el nombre puede ser: mi_proyecto_uwsgi.ini y le añadimos el siguiente contenido:

[uwsgi]
     chdir = /ruta/a/tu/proyecto/ 
     module = mi_proyecto.wsgi
     master = true
     processes = 10
     socket  = /ruta/a/tu/proyecto/mi_proyecto.sock 
     chmod-socket  = 666
     vacuum  = true


PASO 9

Ahora necesitaremos indicarle a nginx donde buscar los datos del uwsgi para esto dentro del mismo directorio de deploy que tenemos dentro de nuestro proyecto creamos un archivo con nombre mi_proyecto_nginx.conf con el siguiente contenido:


upstream django{
        server unix:///ruta/a/tu/proyecto/mi_proyecto.sock;
}

server {
        listen   80;
     
        server_name mi_server;
        charset utf-8;

        # Max upload size
        client_max_body_size 10M;

        access_log /ruta/a/tu/proyecto/mi_proyecto.access.log;
        error_log /ruta/a/tu/proyecto/mi_proyecto.error.log;

        location /static {
                gzip_static on;
                alias /ruta/a/tu/proyecto/static/;
        }

        location / {
                include /etc/nginx/uwsgi_params;   # verificar la ruta en tu implementación
                uwsgi_pass django;
        }
}

NOTA IMPORTANTE:
Como lo hicimos con la configuración de uwsgi también es necesario indicarle esta configuración a nginx y de igual forma lo mejor es crear un enlace símbolico:

$ sudo ln -s  /ruta/a/tu/proyecto/deploy/mi_proyecto_nginx.conf   /etc/nginx/sites-enabled/ 


PASO 10

Hasta el paso anterior ya podriamos hacer algunas pruebas reiniciando el nginx ...
$ sudo /etc/init.d/nginx restart

... y corriendo el comando:
$ uwsgi --ini mi_proyecto.ini

Sin embargo lo que seguro vamos a necesitar, es que el servidor, cargue automáticamente el proyecto al iniciar el equipo, para esto necesitaremos los siguientes comandos:

# Creando el servicio
$ sudo vi /etc/rc.local

# Agregar la siguiente línea al archivo antes del exit 0 
/usr/bin/uwsgi --emperor /ruta/a/tu/proyecto/deploy/mi_proyecto_uwsgi.ini --uid mi_usuario --gid www-data --daemonize /ruta/a/tu/proyecto/mi_proyecto.uwsgi.log

NOTA: Se debe verificar la ubicación del archivo uwsgi.


Realizado lo anterior al reiniciar la maquina virtual o el servidor debería de cargarlo correctamente.

Espero te sea de utilidad !


Referencias y links consultados:
https://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html?highlight=django
http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html#deploying-django
http://eth0.pro/post/1
http://www.ubuntu-es.org/node/172656#.UcDqY5WWRhY
https://www.digitalocean.com/community/articles/how-to-install-nginx-on-ubuntu-12-04-lts-precise-pangolin
http://www.howtogeek.com/howto/ubuntu/install-mysql-server-5-on-ubuntu/
https://gist.github.com/panuta/3075882
http://stackoverflow.com/questions/11094718/error-command-gcc-failed-with-exit-status-1-while-installing-eventlet
http://askubuntu.com/questions/157840/why-does-apt-get-fail-to-resolve-the-mirror
http://skuarch.blogspot.mx/2010/02/crear-un-servicio-en-ubuntu.html
http://stackoverflow.com/questions/11425106/python-pip-install-fails-invalid-command-egg-info

jueves, 7 de febrero de 2013

Monitor Consultas, Queries o SQL en MySQL

Ahora le toca el turno a MySQL esta vez, lo que necesitaba era monitorear todas las instrucciones MySQL para detectar un problema que tenía con una consulta, query, sql o como gustes llamarlo, bien para poder monitorear una de las tantas formas de hacerlo es utilizando el GQL (General Query Log).

Por lo general el GQL viene desactivado por lo que para activarlo se debe iniciar MySQL con la consola, y posteriormente para saber si lo tenemos activado o no utiliamos el siguiente comando:
mysql> SHOW VARIABLES LIKE "general_log%";

+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | OFF                        |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
Con lo anterior podemos ver de entrada en donde esta configurado que estará el archivo y por otro lado si esta activado o no, como no esta activado entonces debemos activarlo primero:
mysql> SET GLOBAL general_log = 'ON';
Cuando ya no necesitemos estar almacenando estos datos ya que este archivo puede crecer indefinidamente utilizamos el comando:
mysql> SET GLOBAL general_log = 'OFF';
Para ver el contenido de la consola podemos utilizar el comando ya fuera de mysql:
$ sudo cat /var/run/mysqld/mysqld.log
En mi caso tuve que utilizar sudo por los permisos. Una vez ejecutado podía ver las consultas que se estaban ejecutando.


Espero te haya sido de utilidad !


Fuentes:
http://stackoverflow.com/questions/568564/how-can-i-view-live-mysql-queries
http://dev.mysql.com/doc/refman/5.1/en/query-log.html

jueves, 4 de octubre de 2012

Python y MySQL en OS X Mountain Lion

Primero debe descargar el MySQL para Mac e instalarlo.

Posteriormente deberá descargar la utilidad de http://sourceforge.net/projects/mysql-python/, también para los amantes de la terminal pueden utilizar los siguientes comandos:

$ wget http://superb-dca2.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b4/MySQL-python-1.2.4b4.tar.gz 

$ tar -xf MySQL-python-1.2.4b4.tar.gz

Una vez desempaquetado el archivo se debe editar el archivo de nombre site.cfg ubicando la línea que dice:

#mysql_config = /usr/local/bin/mysql_config

por:

mysql_config = /usr/local/mysql/bin/mysql_config

Es importante quitar el símbolo # para que deje de ser comentario y por otro lado verificar que el archivo mysql_config se encuentre en ese directorio como en mi caso. Una vez realizado lo anterior ahora se procede a correr el comando:

$ sudo python setup.py build 

Si no marco ningún warning o algún error quiere decir que vamos bien, ahora ejecutamos el siguiente comando:

$ sudo python setup.py install 

Finalmente corremos el siguiente comando:

$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 


Este último comando debe arreglar un problema que se genera al querer utilizar la librería MySQLdb.
-----------
Traceback (most recent call last):
File "", line 1, in
File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/MySQLdb/__init__.py", line 19, in
import _mysql
ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced
Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Reason
Reason: image not found
En este sitio fue donde encontre como arreglarlo:
(http://stackoverflow.com/questions/13440147/mysqldb-for-python-2-7-on-osx-10-8-2-and-both-are-64-bit)

-----------


Para ver si quedo bien podemos entrar nuevamente a la consola de python con el comando $ python, y luego teclear:

>>> import MySQLdb

Si no aparecen errores entonces quedo listo !

Espero te sea de utilidad.



Referencias:
http://luauf.com/2008/04/24/conectar-python-con-mysql/
https://groups.google.com/forum/?fromgroups=#!topic/django-es/_NRYFHVSgtA
http://nisthaonweb.com/blog/2012/02/setting-up-django-with-mysql-with-and-without-mamp/


NOTA:

Este post fue modificado el 17/01/2013 debido a que si se utilizaba la línea
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Se generaba un error en OSX ML con la siguiente leyenda:
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

domingo, 27 de noviembre de 2011

Arrancar el MySQL desde la línea de comando

De plano no sabía como pero ahora ya vi como es:

Iniciar el servicio
sudo /usr/local/mysql/support-files/mysql.server start

Parar el servicio:
sudo /usr/local/mysql/support-files/mysql.server stop




Ya lo meti a un archivo bash para más fácil.



FUENTE:
http://www.tntechnohermit.com/2008/07/29/startstop-mysql-from-a-terminal-session-on-os-x/