domingo, 24 de febrero de 2019

Un último blog

Hola chic@s, hoy os traigo mi talón de Aquiles, hoy os traigo... cómo (se supone) subir una aplicación con Django a vuestro vps. Digo se supone porque estos mismos pasos le han funcionado a otra gente y tiene pinta de que es debido a algo relacionado con el https pero no he conseguido solucionarlo a tiempo.

Como dije en mi primer blog, este blog está hecho con una finalidad educativa (y una necesidad de aprobar) ya que, me sirve para mí para aprender como para mi profesor (Hola Enrique, ponme buena nota! :D) para poder evaluarme así que, muy a mi pesar, mi camino en blogger termina aquí.

Pero no por ello vamos a hacer que este blog no sea interesante, vamos a comenzar la instalación.

Para ello vamos a tener que instalar en nuestro vps las siguientes dependencias:

Python, Pip, Virtualenv y WSGImod

Aquí los comandos respectivamente

- sudo apt-get install build-essential python-dev python-setuptools

- wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

- pip install virtualenv

- sudo apt-get install libapache2-mod-wsgi

Vamos a utilizar para este ejemplo algo que podéis utilizar vosotros también; conocéis thinkster? Es una página web de aprendizaje con su propio proyecto en git con diferentes tecnologías, echadle un ojo si os interesa aprender alguna! Por el momento, usaremos el proyecto que tienen en django para nuestro ejemplo.

En la carpeta donde pongamos el virtualhost:

git clone https://github.com/gothinkster/django-realworld-example-app.git

cd django-realworld-example-app/

Vamos a crear ahora un entorno virtual para que en caso de queramos tener diferentes proyectos con django no tengamos problemas

virtualenv productionready

Para activarlo debemos hacer un source de lo que hay dentro productionready/bin/activate;
o bien source productionready/bin/activate o

cd productionready
source bin/activate

Si te has metido dentro de productionready haz un

cd ..

Y es hora de realizar la instalación del proyecto (en django los requerimientos se suelen poner en un txt)

pip install -r requirements.txt

Una vez tenemos esto vamos a crear las tablas de la base de datos

python manage.py makemigrations

python manage.py migrate

Ahora tan solo nos queda configurar la parte de apache en el virtualhost así que vamos a ello!

Lo primero y prácticamente casi único que tenemos que hacer es configurar el virtualhost así que vamos a nuestra configuración en el apache (/etc/apache2/sites-available) y modificáis vuestro archivo de virtualhost, os debería quedar algo así:



Por último tenemos que volver al proyecto de django para que podamos visualizar el proyecto así que:

nano django-realworld-example-app/conduit/settings.py

Y cambiáis esta línea y... LISTO! Debería funcionaros correctamente


Esto da muchos problemas y si no os va pueden ser mil y uno los errores, aseguraos de que esté funcionando en el puerto 80, que no os hayáis equivocado en los nombres de las carpetas, que tengáis permisos, etc... Esto es un trabajo de muchas horas y algunos de mi clase haciendo esto han conseguido sacarlo, yo en mi caso por ejemplo no pero por desgracia no tengo el tiempo para poder arreglarlo.

Os deseo lo mejor, he disfrutado mucho haciendo esto durante todo este curso y empezaré una nueva etapa que son las prácticas dentro de nada, espero que si estás leyendo esto te haya podido ayudar y te haya servido de utilidad.

Muchísimas gracias a todos, y, por desgracia, no nos veremos en el próximo blog, hasta pronto y que os vaya bien!

Sergio Huertas

domingo, 17 de febrero de 2019

FTP time!

Como podéis ver cada vez me he vuelto más original con los títulos de las entradas, hoy os voy a traer cómo crear un servidor ftp.

Para empezar lo de siempre, qué es un ftp? Un ftp es un protocolo como lo es http o https que permite transferir datos cifrados entre tu ordenador local y una web. Así de sencillo.

Una vez tenemos la definición vamos a ver cómo podemos configurarlo, vamos a empezar por la parte cliente que es nuestro ordenador local con el que subiremos los archivos al servidor.

Espera, hay parte cliente? Si bien es posible hacerlo a mano voy (vamos) a utilizar un programa con interfaz gráfica que nos facilite el proceso.

Para ello vamos a instalar el filezilla:

sudo add-apt-respository ppa:n-muench/programs-ppa

sudo apt-get update

sudo apt-get install filezilla

No es posible hacer directamente el último comando ya que tienes que añadir el repositorio antes y actualizar para que el apt-get lo detecte y pueda instalarlo.

Ahora ya lo tenemos instalado, si lo buscamos nos debería aparecer en nuestras aplicaciones instaladas así que vamos al servidor((vps).

Para instalar el servidor introduciremos el siguiente comando:

sudo apt-get install vsftpd

Una vez tenemos esto simplemente tenemos configurar el archivo vsftpd.conf:

nano /etc/vsftpd.conf


Esta es la configuración que debéis tener para tener habilitado anonymous y para que cada usuario pueda acceder a su propio home:



Para ver esto en plan bonito copiad y pegad esto en consola:

cat /etc/vsftpd.conf | grep -v '^#'

Ya que como habéis visto, hay muchos comentarios y mucha configuración y tocarlo es un poco asqueroso pero de esta manera podéis verlo sin los comentarios pero vamos a cosas importantes que debéis tocar:

Para habilitar el anonymous:
anonymous_enable=YES

Para dar derechos de escritura:
write_enable=YES

Para que puedan crear directorios los usuarios anónimos:
anon_mkdir_write_enable=YES

Para que puedan subir archivos los usuarios anónimos:
anon_upload_enable=YES

Para que si te logueas con un usario accedas a tu home:
chroot_local_user=YES
allow_writeable_chroot=YES

Para que los usuarios anónimos no necesiten contraseña para loguearse y a qué directorio se conectan y que el usuario y grupo al que pertenecen los usuarios anónimos sea "ftp":
no_anon_password=YES
anon_root=/var/ftp
hide_ids=YES

Una vez tenemos esto vamos a crear una carpeta pub(lic) dentro de /var/ftp ya que es complejo configurar esta carpeta así que empecemos:

sudo mkdir -p /var/ftp/pub

(-p Para poder crear la carpeta ftp sin necesidad de hacer mkdir ftp y luego dentro mkdir pub)

sudo chown nobody:nogroup /var/ftp/pub 

Para dar permiso para que todos puedan acceder a esto y modificarlo, descargar, borrar...

Por último creamos un archivo dentro o los que queremos y volvemos a la parte cliente a estrenar el filezilla, así que vamos a ejecutarlo, introducimos la ip en la parte servidor y como nombre de usuario anonymous o ftp y woalá


Como veis podéis acceder a vuestros archivos, descargarlos, etc... Pero ojo, como dato que me ha hecho pasarme como 2 horas mirando la pantalla, si no os deja descargar los ficheros y os da un error mirad dónde lo estáis descargando en local ya que puede que no tengáis derechos de escritura y entonces o de error.

Por último entramos con un usuario que tengamos creado en el vps:




Y ya estaría, dentro de nada os traeré otro blog de cómo subir una aplicación web tanto la parte cliente como servidora (la parte servidora está dando problemas imprevistos) así que estad atentos, nos vemos a la próxima y no dudéis en dejarme preguntas o sugerencias en los comentarios, hasta otra!


miércoles, 13 de febrero de 2019

Https time!

Buenas buenas buenas, ha pasado tiempo, soy consciente de ello, hoy os traigo una nueva entrada, esta es sobre https! Que qué es https? Pues http secure, dificil eh! Parece que es una definición un poco vaga pero es tal cual, un http de forma segura; qué quiere decir que sea de forma segura? Pues quiere decir que todas las comunicaciones entre tu navegador y la web están encriptadas, así que estas comunicaciones aunque sean interceptadas no pueden ser descifradas.

Hay diferentes protocolos de encriptación seguros,  los más utilizados son SSL y TLS; ambos usan un sistema que se conoce como un asimétrico PKI (Public Key Infrastructure => Infraestructura de clave pública), este sistema usa 2 claves, una privada y una pública que solo pueden ser desencriptadas por la otra, de esa forma tu clave pública la conoce todo el mundo y la privada solo la tienes tú, entonces la web te envía la información encriptada con la clave pública y tú la desencriptas con la clave privada y viceversa, tú le envías a la web la información a través de su clave pública y la web la desencripta a través de su clave privada.

Ahora que sabemos esto y vemos que nos interesa, es hora de implementarlo a nuestro vps, no? Hay opciones de pago que como he dicho en previos blogs, si vais a hacer algo grande pagad y aseguraos bien, pero si vamos a hacer algo de ir por casa, certbot es una muy buena opción.

Lo primero de todo nos pide software y sistema donde tenemos el vps, en el caso del software yo voy a usar apache y en el sistema el que hayáis instalado, si no os acordáis con el comando
lsb_release -a os saldrá (en mi caso debian 9 (stretch)).

En certbot una vez hayáis rellenado la información os va a salir un tutorial, voy a tratar de seguirlo yo también:

- Para empezar hay que instalarlo

sudo apt-get install certbot python-certbot-apache -t stretch-backports 

Este último comando puede que os de error, si os da error id a /etc/apt/sources.list y añadid la siguiente línea

deb http://deb.debian.org/debian stretch-backports main

Haced un apt-get update y volved a provar

- Una vez instalado ejecutamos certbot 

sudo certbot --apache y os debería aparecer algo como esto :




En mi caso lo dejo en blanco ya que lo quiero en todos.

Seguidamente nos pedirá un email por si pasara cualquier cosa, aceptas los términos y este paso está listo.

Nos pedirá si queremos redirigir a los que entren en nuestra web en http a https, en mi caso quiero ya que no le encuentro sentido a que no sea así, así que le doy a 2.


Y ya estaría listo, si ahora entramos a uno de mis dominios podemos ver que efectivamente, está el https puesto:


Y con esto estaría listo, nos vemos en el próximo y cualquier duda que tengáis ponedla en los comentarios.

Un saludo!