Instalación de Django Rest Framework en Openshift
En primer lugar decir qué es Openshift:
«OpenShift es un producto de computación en la nube de plataforma como servicio de Red Hat.
Este software funciona como un servicio que es de código abierto bajo el nombre de «OpenShift Origin», y está disponible en GitHub.
Los desarrolladores pueden usar Git para desplegar sus aplicaciones Web en los diferentes lenguajes de la plataforma.
OpenShift también soporta programas binarios que sean aplicaciones Web, con tal de que se puedan ejecutar en RHEL Linux. Esto permite el uso de lenguajes arbitrarios y frameworks.
OpenShift se encarga de mantener los servicios subyacentes a la aplicación y la escalabilidad de la aplicación como se necesite.» wikipedia
A continuación, se exponen los pasos a seguir para utilizar Django Rest Framework en Openshift
1/ Instalar las OpenShift Client Tools (rhc).
Algún comando de interes que podrá ser útil en el futuro:
– Para configurarlo se debe ejecutar: rhc setup. Nos pedirá login y password de openshift y nos permite crear una clave pública para luego conectar por ssh.
– Conectar ssh a tu aplicación: rhc ssh < app-name>
– Una vez conectado podríamos reiniciar la aplicación con: ctl_app restart
– Hacer log de la aplicación: rhc tail -a < app-name>
2/ Crear una aplicación Django que corra con python 2.7. Una de las formas de hacerlo es mediante el comando:
rhc create-app < app-name> python-2.7 --from-code git://github.com/rancavil/django-openshift-quickstart.git
Si todo va correctamente en la consola te saldrá algo similar a esto:
URL: http://< app-name>–< usuario-openshift>.rhcloud.com/
SSH to: abcabcabcabcabcabc@< app-name>–< usuario-openshift>.rhcloud.com
Git remote: ssh://547b176b5973ca04c6000139@< app-name>–< usuario-openshift>.rhcloud.com/~/git/< app-name>.git/
Cloned to: C:/prueba/< app-name>
< app-name> = nombre deseado para tu aplicación.
< usuario-openshift> = tu usuario en openshift
Como nota decir, que me ha creado una copia de la aplicación creada en C:/prueba/
3/ Instalar un cliente GIT. En mi caso, para windows utilicé Git Bash. Luego los cambios se subirán así:
git add . git commit -m 'My changes' git push
4/ Cambiar la contraseña de django
source $OPENSHIFT_GEAR_DIR/virtenv/bin/activate export PYTHON_EGG_CACHE=$OPENSHIFT_GEAR_DIR/virtenv/lib/python-2.6 python $OPENSHIFT_REPO_DIR/wsgi/openshift/manage.py changepassword admin
Tras este punto ya podríamos conectarnos a la consola de administración de django mediante la url:
http://< app-name>–< usuario-openshift>.rhcloud.com/admin
5/ Añadir Django Rest framework. Para ello nos conectamos con rhc ssh < app-name> y ejecutamos:
pip install djangorestframework
6/ Tras eso ya podremos utilizar Django Rest Framework. Ejemplo de uso:
Añadir en settings.py
INSTALLED_APPS = ( ... 'rest_framework', ) REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser' ] }
Cambiar nuestro urls.py por:
from django.conf.urls import patterns, include, url from django.contrib.auth.models import User from rest_framework import serializers, viewsets, routers # Serializers define the API representation. class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ('url', 'username', 'email', 'is_staff') # ViewSets define the view behavior. class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer # Routers provide a way of automatically determining the URL conf. router = routers.DefaultRouter() router.register(r'users', UserViewSet) from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: url(r'^$', 'views.home', name='home'), url(r'^admin/', include(admin.site.urls)), url(r'^rest/', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), )
7/ Subir los cambios por Git y para comprobar que ahora tenemos activa esta url:
http://< app-name>–< usuario-openshift>.rhcloud.com/rest
Usar Mysql con Python para Windows
Para utilizar Mysql con Python basta con:
1 – Descargarse este módulo.
2 – Instalarla
python setup.py install
3 – Configurar tú aplicación para usar mysql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'nombreBD', 'USER': 'usuario', 'PASSWORD': 'contraseña', 'HOST': '', #La cadena vacia representa localhost. 'PORT': '', #La cadena vacia representa el puerto por defecto (8000). } }
Nota: En este enlace te puedes descargar un ejecutable para windows que te instala el módulo con un simple doble click.
Usar Bootstrap en tu Django admin app
Si quieres añadir Bootstrap a tu aplicación realizada con el administrador de Django es tan facil como:
1 – Descargarte esta aplicación.
2 – Instalarla
pip install django-admin-bootstrapped
3 – Añadir ‘django_admin_bootstrapped’ a la lista de INSTALLED_APPS antes de ‘django.contrib.admin’
Instalar panel de administración de Django y añadir nuevos modelos
En primer lugar se debe activar la interfaz de la administración ya que se trata de una funcionalidad opcional. Pasos para activarlo:
1 – Realizar los siguiente cambios en el fichero settings.py:
* Añadir ‘django.contrib.admin’ a la propiedad INSTALLED_APPS.
* Añadir también a la propiedad INSTALLED_APPS los paquetes: ‘django.contrib.auth’, ‘django.contrib.contenttypes’, y ‘django.contrib.sessions’.
* Añadir en MIDDLEWARE_CLASSES los valores ‘django.middleware.common.CommonMiddleware’,
‘django.contrib.sessions.middleware.SessionMiddleware’, y ‘django.contrib.auth.middleware.AuthenticationMiddleware.
2 – Ejecutar python manage.py syncdb. Esto instalará las tablas de base de datos que utiliza el interfaz de administración. La primera vez que se ejecute syncdb con ‘django.contrib.auth’ en INSTALLED_APPS, te preguntará sobre la creación de un superusuario. Si no lo crea, tendrá que ejecutar python manage.py createsuperuser por separado para crear una cuenta de usuario administrador más adelante. Ya que esto es necesario para entrar a la administración.
3 – Agregue el sitio de administración a su URLconf en el fichero urls.py.
from django.contrib import admin admin.autodiscover() urlpatterns = patterns(”, (r’^admin/’, include(admin.site.urls)), )
4 – Ahora ya puede ejecutar la administración de Django. Simplemente hay que ejecutar el servidor de desarrollo (python manage.py runserver) e ir a la url http://127.0.0.1:8000/admin/
A continuación, ya puede añadir modelos al sitio de administración y crear sobre ellos los CRUD automáticamente con una interfaz amigable. Para ello dentro de la aplicación que contiene el modelo se debe crear un fichero admin.py con el siguiente contenido:
from django.contrib import admin from miaplicacion.models import modelocreado admin.site.register(modelocreado)
Una vez que haya hecho esto, en la página de inicio de administración se debe ver una sección de modelocreado. Es necesario reiniciar runserver para que los cambios tengan efecto.
Error Django: «ImportError: No module named defaults»
Este error pasa por usar django.conf.urls.defaults a partir de la versión 1.6 de Django. Ya que ha sido deprecado.
Ahora lo correcto es usar django.conf.urls
Actualizar la versión de Django
Para instalar una nueva versión de Django los pasos a seguir son:
1º – Desinstalar la versión instalada.
Para desinstalar django basta con borrar el directorio que hay en:
{carpeta de instalación de python}\Lib\site-packages
Si no sabes donde está se puede ejecutar la siguiente instrucción para buscarla:
python -c "import sys; sys.path = sys.path[1:]; import django; print(django.__path__)"
2º – Instalar la nueva versión.
python setup.py install
Error en Django: «ImportError: No module named setuptools»
Intentando instalar una libreria para usar Django (python setup.py install). Me daba el siguiente error:
ImportError: No module named ‘setuptools’
Buscando un poco de información:
«Setuptools es una colección de programas para mejorar las herramientas de distribución de Python, que permiten crear y distribuir paquetes de Python, incluyendo dependencias para su instalación… Fuente»
Por lo tanto bastaría con instalarlo: https://pypi.python.org/pypi/setuptools
Para mi caso no me hizo falta instalar la librería setuptools. En su lugar simplemente instalé la librería distribute. Está librería ya ha sido absorvida por setuptools por lo tanto lo correcto es la otra opción.
Descargar distribute aquí: http://python-distribute.org/distribute_setup.py
Para instalar: python distribute_setup.py
Python, Django, Eclipse y PyDev
PyDev es un plugin que permite desarrollar en python mediante el eclipse. Por lo tanto, se puede utilizar para desarrollar con Django.
En la página oficial de PyDev hay manuales donde explican bastante bien su uso:
– Manual PyDev
Nota: Destacar que es necesario tener instalado java 1.7 para que el plugin funcione.
Usar una Raspberry PI como servidor Lamp, Django y MongoDB
Instalar SO
Descargar la imagen de Raspbian (Debian Wheezy) de la página oficial de la Raspberry pi–
Se puede utilizar el programa Win32DiskImager para copiar la imagen a la tarjeta SD.
Nota: El programa win32diskimager, además, se puede usar luego para hacer una copia de seguridad completa.
Una vez se haya copiado todo, ponemos la tarjeta en la Raspberry y al enchufarla debería funcionar. Al iniciarse el usuario y contraseña por defecto suele ser: usuario: pi contraseña: raspberry
Una vez logueado, ejecutar:
sudo raspi-config
para proceder a expandir la partición del sistema. Esto es porque aunque tengas una tarjeta SD de más de 4 gb, la partición del sistema sólo va a ocupar 4 gb. Para solucionar esto hay que expandir dicha partición para tener la posibilidad de usar toda la memoria disponible.
Por último, proceder a actualizar todo:
sudo apt-get update sudo apt-get upgrade
Montar partición USB
Primero se debe instalar ntfs-3g que es necesario para poder montar las particiones ntfs:
sudo apt-get install ntfs-3g
A continuación, ya podemos montar la partición de nuestra memoria usb.
mkdir /media/myusb mount /dev/sda1/ /media/myusb
Si lo que se desea es que la partición se monte automáticamente al iniciar se debe añadir esta linea al fichero /etc/fstab.
/dev/sda1 /media/myusb ntfs-3g defaults,locale=es_ES.UTF8 0 0
Acceso SSH y FTP
Habilitar el acceso local por ssh.
sudo apt-get install avahi-utils avahi-browse -tl _workstation._tcp apt-get install ftpd
Se puede configurar en el fichero /etc/ftpusers los usuarios a los que no se les deje acceder por ftp.
Python-MySQLDB
sudo apt-get install python-mysqldb
Servidor LAMP
sudo apt-get install apache2 sudo apt-get install mysql-server mysql-client sudo apt-get install php5 libapache2-mod-php5 php5-mysql sudo service apache2 restart
Tras instalarlo podemos instalar el PHPMyAdmin y configurar Apache.
sudo apt-get install phpmyadmin
Añadir en /etc/apache2/apache2.conf la línea
Include /etc/phpmyadmin/apache.conf
sudo service apache2 restart
Python Setup tools
sudo apt-get install python-setuptools
Django
En primer lugar instalar PIP, es la aplicación que usaremos para instalar django.
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py sudo python get-pip.py rm -rf get-pip.py
Luego, ya podemos instalar Django.
sudo pip install Django
Como ejemplo de prueba se puede hacer:
django-admin.py startproject prueba python manage.py runserver 192.168.1.33:8888
(por defecto arrancaría el puerto 8000)
MongoDB
sudo apt-get install git-core build-essential scons libpcre++-dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev git clone git://github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix=/opt/mongo install PATH=$PATH:/opt/mongo/bin/ $ export PATH mongod
Enlaces de interes:
– Guia Completa Raspberry PI en Español
– Curso de Django (Instalación y primera aplicación)
– Configuración No-IP en la Raspberry PI
– Establecer IP fija en la Raspberry PI
– Instalación de Owncloud para la Raspberry PI
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (3)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (44)
- Javascript (55)
- JBoss (5)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (6)
- Keycloak (1)
- Lamp (1)
- LDAP (2)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (6)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (29)
- Spring (17)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- SSO (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (6)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places