Django despliegue: Debian + Chausette + Circus + Nginx

Dependencias:
Libreria de python

apt-get install python-dev

 

Virtualenv
virtualenvwrapper
 

Pip manejador de paquetes de python

apt-get install python-pip

 

Instalación de circus

pip install circus

 

Instalación de Chaussette

pip install chaussette

 

Instalación de Nginx

apt-get install nginx

Acceder al sitio http://127.0.0.1 para verificar que nginx esté corriendo
 

La ubicación del proyecto de django es una cuestión de gusto, en mi caso la ubico en el home y luego clone el repositorio

mkdir /home/www-data/
cd /home/www-data/
git clone https://github.com/sdcasas/nombreProyectoDjango.git

la dirección mencionada en ficticia, se debe poner la ruta de su proyecto.

Abrimos la carpeta e instalamos las dependencias del proyecto

cd nombreProyectoDjango

Suponiendo que hiciste un archivo con las dependencias del proyecto

pip install -r requirements.txt

Corremos el proyecto para verificar que funcione

./manage runserver

 

Ahora hay que crear la configuración de circus para el proyecto, la podemos guardar dentro de la carpeta del proyecto nombreProyectoDjango/deploy/circus.conf y agregamos lo siguiente.

[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
 
[watcher:nombreProyectoDjango]
working_dir = /home/www-data/nombreProyectoDjango
cmd = /home/nombreDeUsuario/.envs/nombreProyectoDjango/bin/chaussette
args = --fd $(circus.sockets.nombreProyectoDjango) config.wsgi.application
use_sockets = True
numprocesses = 3
autostart = True
 
[env:nombreProyectoDjango]
PYTHONPATH = /home/www-data/nombreProyectoDjango/
 
[socket:nombreProyectoDjango]
host = localhost
port = 8000

 

Agregar la configuración para nginx, para lo cual creamos un archivo

 touch /etc/nginx/sites-enabled/nombreProyectoDjango

y le Agregamos lo siguiente:

server {
    listen 80;
    charset utf-8;
    # poner la dirección ip del servidor en caso de que se quiera acceder desde toda la red
    server_name 127.0.0.1;
    client_max_body_size 4G;
 
    location /static/ {
        alias /home/www-data/nombreProyectoDjango/static/;
        autoindex on;
    }
 
    location /media/ {
        alias /home/www-data/nombreProyectoDjango/media/;
    }
 
    location / {
        proxy_pass http://localhost:8000/;
        proxy_pass_header Server;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
    }
 
    access_log /home/www-data/nombreProyectoDjango/deploy/logs/nginx-access.log;
    error_log /home/www-data/nombreProyectoDjango/deploy/logs/nginx-errors.log;
}

El directorio deploy/logs/ debe tener permisos de escritura para que se puedan escribir los log en el mismo

Tener en cuenta que dentro de la confguracion de ngin (/etc/nginx/nginx.conf) exista la siguiente linea:

include /etc/nginx/sites-enabled/*;

Referenca mgaitan.github.io

Publicado en debian, Django, GNU/Linux, Instalacion, Programación, Python, Terminal

Debian instalacion de nodejs y npm

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
apt-get install nodejs

Fuente: nodejs.org

Publicado en debian, GNU/Linux, JavaScript, Programación

python codificación por defecto ascii utf-8

python

Para cambiar la codificación por defecto de python, editamos el siguiente archivo: /usr/lib/python2.7
Cambiar esto:

encoding = "ascii"

por

encoding = "utf-8"
Publicado en GNU/Linux, Programación, Python

Django (desde Debian) + Microsoft SQL Server

django

sql-server


Dependencias:

Django==1.10.3
django-pyodbc-azure==1.10.0.1
pyodbc==3.0.10

Instalación

pip install Django==1.10.3
pip install django-pyodbc-azure==1.10.0.1
pip install pyodbc==3.0.10

Instalación del drivers

apt-get install tdsodbc

Editamos el archivo /etc/odbcinst.ini

nano /etc/odbcinst.ini

le agregamos

[FreeTDS]
Description = TDS Driver for MSSQL
driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
setup =  /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

Editamos al archivo de configuración settings.py con lo siguiente

DATABASES = {
    # SQL Server
    'default': {
        'ENGINE': "sql_server.pyodbc",
        'NAME': "NOMBRE_DB",
        'HOST': "IP_O_HOSTNAME_SERVER",
        'PORT': "1433",
        'USER': "USUARIO",
        'PASSWORD': "CONTRASEÑA",
        'OPTIONS': {
            'host_is_server': True,
            'autocommit': True,
            'unicode_results': True,
            'driver_supports_utf8': True,
            'extra_params': 'tds_version=8.0'
        }
    }
}
Publicado en debian, Django, GNU/Linux, Instalacion, Python

pip install error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1

Cuando quiero instalar una aplicación con pip dentro de un entorno virtual (virtualenv) por ej:

pip install pyodbc

me da el error:

  ...
  /tmp/pip-build-wmb964oj/pyodbc/src/pyodbc.h:52:17: fatal error: sql.h: No existe el fichero o el directorio
   #include 
                   ^
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for pyodbc
  

  ....


    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    In file included from /tmp/pip-build-wmb964oj/pyodbc/src/connection.cpp:12:0:
    /tmp/pip-build-wmb964oj/pyodbc/src/pyodbc.h:52:17: fatal error: sql.h: No existe el fichero o el directorio
     #include 
                     ^
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------

SOLUCION

apt-get install unixodbc-dev

Fuente: stackoverflow.com

Publicado en debian, GNU/Linux, Instalacion, Python

install django-debug-toolbar

django

inside the virtualenv, run the following to install:

pip install django-debug-toolbar

add application django-debug-tool to project in settings file
(settings.py)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # app own
    ...
    # app thirds parties
    'debug_toolbar',
 
]

Add debug-toolbar configuration to settings file
(settings.py)

# to debug_toolbar app
if 'debug_toolbar' in INSTALLED_APPS:
 
    MIDDLEWARE_CLASSES += [
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    ]
 
    # to debug_toolbar app
    DEBUG_TOOLBAR_PANELS = [
        'debug_toolbar.panels.versions.VersionsPanel',
        'debug_toolbar.panels.timer.TimerPanel',
        'debug_toolbar.panels.settings.SettingsPanel',
        'debug_toolbar.panels.headers.HeadersPanel',
        'debug_toolbar.panels.request.RequestPanel',
        'debug_toolbar.panels.sql.SQLPanel',
        'debug_toolbar.panels.staticfiles.StaticFilesPanel',
        'debug_toolbar.panels.templates.TemplatesPanel',
        'debug_toolbar.panels.cache.CachePanel',
        'debug_toolbar.panels.signals.SignalsPanel',
        'debug_toolbar.panels.logging.LoggingPanel',
        'debug_toolbar.panels.redirects.RedirectsPanel',
    ]
 
    # This example is unlikely to be appropriate for your project.
    CONFIG_DEFAULTS = {
        # Toolbar options
        'RESULTS_CACHE_SIZE': 3,
        'SHOW_COLLAPSED': True,
        # Panel options
        'SQL_WARNING_THRESHOLD': 100,   # milliseconds
    }
 
    INTERNAL_IPS = ('127.0.0.1',)

And finally
url.py

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]
Publicado en Django, Instalacion

django supported versions

django

django

Fuente: DjangoProject

Publicado en Django, Programación

pip – Download and Installing packages from local file

pythonpython
Descargar y guardar los paquetes

pip install --donwload=/ruta/destino/para/almacenar nombre_paquete
pip install --donwload=/ruta/destino/para/almacenar/varios -r requirements.txt

Instalar los paquetes almacenados localmente

pip install /ruta/del/paquete/nombrepaquete

también podemos bajar los archivos en formato comprimido (tar.gz) de su página oficial (django por ejemplo), de pypi, github o alguno servidor similar y hacer lo siguiente

pip install /ruta/del/paquete/nombrepaquete.tar.gz
Publicado en GNU/Linux, Python, Terminal

Application extra to Django

django

# to have use bootstrap
django-bootstrap3
 
# to have debugins
django-debug-toolbar
 
# to beautify form
django-widget-tweaks
 
# to use webservice
djangorestframework
 
# to be able to connect to postgresql databases
psycopg2
 
# to be able to generate PDF
reportlab
 
# to add mixins(functionality) extra
django-braces
 
# ?
django-extensions
Publicado en Instalacion, Programación, Python

Debian 8 jessie: Instalar virtualenvwrapper

hqdefault

Instalar la herramienta virtualenvwrapper como superusuario (root)

apt-get install virtualenvwrapper

o

pip install install virtualenvwrapper

Como usuario normal (NO ROOT), hay que agregar las variables con la ruta para virtualenv, editar el siguiente archivo

nano ~/.bashrc

Agregar el siguiente contenido

# to virtualenvwrapper
export WORKON_HOME=$HOME/.envs
export PROJECT_HOME=$HOME/SRC
export VIRTUALENVWRAPPER_PYTHON=$(which python2)
source /etc/bash_completion.d/virtualenvwrapper

Alternativas a para source pueden ser las siguientes:

source /usr/bin/virtualenvwrapper.sh
source /usr/local/bin/virtualenvwrapper.sh

por último ejecutamos lo siguiente, para refrescar los cambios en la terminal:

source ~/.bachrc

también se puede agregar acciones automáticas, como crear la carpeta del proyecto al crear el virtualenv, editamos el archivo ~/.envs/postmkvirtualenv y le agregamos lo siguiente:

#!/usr/bin/zsh
# This hook is sourced after a new virtualenv is activated.
proj_name=$(basename $VIRTUAL_ENV)
mkdir $PROJECT_HOME/$proj_name
cd $PROJECT_HOME/$proj_name
echo $PROJECT_HOME/$proj_name > $WORKON_HOME/$proj_name/.project

Con esto, cada vez que se cree un entorno virtual con el comando mkvirtualenv, se crea una carpeta del proyecto automáticamente, y se abre la misma al activarse el virtualenv.

proj_name=$(basename $VIRTUAL_ENV)
mkdir $PROJECT_HOME/$proj_name
cd $PROJECT_HOME/$proj_name
echo $PROJECT_HOME/$proj_name > $WORKON_HOME/$proj_name/.project

virtualenv

Ahora ya podemos ejecutar comando de virtualenvwrapper:

# crea y activa mi entorno virtual con el nombre_mi_proyecto
mkvirtualenv nombre_mi_proyecto
 
# activar el entorno virtual
workon nombre_mi_proyecto
 
# desactivar el entorno virtual
deactivate nombre_mi_proyecto
 
# eliminar el entorno virtual
rmvirtualenv nombre_mi_proyecto
 
# listar los entornos virtuales
# brief use
lsvirtualenv -b
# long use
lsvirtualenv -l
 
# posicionarme en el directorio del virtualenv
cdvirtualenv
 
# los mismoo que el anterior pero con el directorio sitepackages
cdsitepackages
 
# lista el contenido del directorio sitepackages
lssitepackages
 
# limpiar y volver a cero el entorno virtual
wipeenv
Publicado en debian, GNU/Linux, Instalacion, Programación, Python

Categorías

Julio 2017
L M X J V S D
« Jun    
 12
3456789
10111213141516
17181920212223
24252627282930
31