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!

lunes, 21 de enero de 2019

Apache:Virtual host


Hola de nuevo, aquí estamos y un día más, un blog más, hoy os traigo el último de los tutoriales de apache que os voy a traer y este trata sobre virtual host.

Qué vamos a aprender con este tutorial? Si os habéis fijado para acceder a vuestra web del vps tenéis que introducir vuestra ip en vez de como queráis llamar a vuestra web, es por ello que vamos a darle ese último toque que nos falta.

Para empezar vamos a tener que registrar un dominio, por ello vamos a https://www.freenom.com (hay varias páginas donde registrar un dominio, podéis usar la que queráis, esta es para dominios gratis y es la que he utilizado yo), os hacéis una cuenta y os dirigís a servicios -> mis dominios y registramos un dominio, una vez lo tengáis os debería aparecer así:


Una vez tengáis esto debéis ir a manage dns -> manage freenom dns y ahí deberíais añadir estos "records"


Una vez tengáis esto simplemente tenemos que configurar el vps, así que allá vamos!

En el vps accedemos al fichero sites-enabled accedido en anteriores blogs (/etc/apache2/sites-enabled) y deberéis crear un archivo nuevo de configuración (.conf) y añadirle la configuración
- Nota: poned vuestro dominio donde está el mío y modificad la carpeta en la que queréis que acceda el dns:



Una vez tenemos esto tenemos que habilitar esta configuración y deshabilitar la otra, para ello vamos a inhabilitar el que tenemos de "default"

sudo a2dissite 000-default.conf

Y habilitamos el nuevo 

sudo a2ensite SergioHuertas.conf

Como podemos ver, en la configuración apuntamos a una carpeta, si no la tenemos creada simplemente hay que crearla y ya que la configuración está apuntando allí si se han seguido los pasos correctamente debería funcionar (tened en cuenta que a veces estas configuraciones no son inmediatas o bien tu navegador ha guardado en cache tu vps y no te funciona, prueba en otro navegador, pc o prueba a reiniciar el ordenador si crees que lo has hecho correctamente).

Seguimos con esto, creamos el archivo y dentro un archivo index.html para ver que funciona:


Y dentro del index.html:


Y probamos la url (podéis probarla vosotros también si queréis http://sergiohuertasgisbert.tk/):


También podéis tener más de una url distinta en vuestro vps, simplemente tenéis que seguir exactamente los mismos pasos y configurar otra ruta, lo he hecho así os puedo poner un ejemplo
Y si entramos:



Y con esto ya estaría, espero que os haya gustado y hayan quedado claros los conceptos, en el siguiente blog añadiremos el httpS para añadir seguridad a nuestra web. 

Nos vemos a la próxima!

lunes, 7 de enero de 2019

DNS TIME!


Hola chic@s, qué tal os va? Hoy voy a hablaros un poco de lo que es un DNS; para empezar, un las siglas corresponden a Domain Name System, que para los poco avispados es un Sistema de Nombres de Dominio, esto qué es? Esto es un sistema que te permite sustituir las ip por nombres, es decir, te permite asociar un nombre a una página web y así puedes acceder a esa web sin necesidad de saberte su ip.

Okay, hasta ahora vamos bien, pero vamos a tratar de pensar un poco, si las ip es lo que se asocia a la web, cómo hacemos para que se nos asocie una ip a un nombre? Es ahí donde entra en juego el concepto de root-server; que qué es esto? Un root-server es un servidor que da respuesta al nombre que se le pide en forma de ip, de esa manera puedes acceder a esa ip de una forma "más humana" ya que no usas el formato de una ip sino su nombre de dominio; Más información:
https://es.wikipedia.org/wiki/Servidor_ra%C3%ADz.

Si algun@ de vosotr@s tiene conocimientos básicos sobre bases de datos habréis escuchado hablar sobre la rebundancia de datos, que es básicamente datos que se repiten innecesaramiente en las bases de datos. Entonces, para que no hayan diversos dominios repetidos interviene el ICANN, que es el que interviene a la hora de aceptar los nuevos nombres de dominios para evitar esta rebundancia. Más información:
https://www.icann.org/es.

Si queréis registrar un dominio es tan fácil como ir a https://www.dominios.es/dominios/ y es tan fácil como ir a busca y registra tu dominio y :


También puedes ir a otras web acreditadas para registrar tu dominio.

Si estáis interesados en saber cuáles son los dominios de primer nivel genérico haced click aquí y si queréis saber cuáles son los dominios de primer nivel geográficos haced click aquí.

Entonces, la pregunta que sigue es, cómo gestiono mi dominio? A nivel español hay varias instituciones que te pueden proporcionar este servicio pero la que lo gestiona y es la principal es
https://www.dominios.es/dominios/es.

Ahora para terminar he cogido 2 registradores de dominios .es para hacer una pequeña comparativa y daros alguna que otra opinión.

Para empezar tenemos este ejemplo http://www.interdominios.com/ :




Y a ver, desde un primer momento suena muy tentador esta opción pero hay que recordar que esto es un servicio, si buscas algo pequeño que pueda permitirse el lujo de fallar interdominios parece una opción muy barata pero claro, si buscas algo más serio y sólido, un buen servicio de atención al cliente, yo me decantaría más por la siguiente opción:

Digital Value (ya que es de Valencia y me pilla cerca), en el que podemos ver más claro que esto es un servicio:


Estas son sus opciones más baratas, como podemos observar esta gente no te cobra solo el dominio, te da unos servicios extra con él, si entramos al de 24€ podemos ver:


Estos son servicios adicionales que van con el dominio y que sí que es verdad que inflan el precio pero te da seguridad y la confianza de que hay un equipo profesional y un servicio al cliente detrás de esto.

En lo personal (y me repito en cuanto a lo de antes), a no ser que quieras algo para testear o sea algo MUY poco serio o de ámbito educativo, yo elegiría una opción como Digital Value, ya que aunque cueste un poco más, puedes tener la seguridad de que por ese lado la web no va a fallar.

Y hasta aquí esta nueva entrada del blog, espero que la hayáis disfrutado y nos vemos en la próxima, hasta la vista!                                                                                                                                          





Protegiendo directorios con apache


Muuuuy buenas a todos, un día más, un blog más; hoy os traigo una continuación del blog anterior en el que vamos a ponerle contraseña al directorio que hemos creado y para ello vamos a utilizar un nuevo módulo de apache llamado auth_basic, para ello vamos a habilitarlo como hemos hecho en el blog anterior:





Una vez tenemos el módulo habilitado vamos a hacer exactamente lo mismo que en el blog anterior (por si no lo has visto te dejo un link https://rallkus.blogspot.com/2019/01/configurando-apache2.html) pero con un nuevo usuario llamado Enrique así que una vez tenemos el public_html creado y todo configurado tenemos que entrar al public_html y crear un .htaccess para proteger el directorio, para ello entramos en el home del usuario y dentro del public_html lo creamos:


Y lo editamos:



Si lo has hecho bien hasta ahora cuando entres a la url debería aparecerte esto:


Ahora vamos a configurar las credenciales ya que nos habrá puesto un usuario y una contraseña muy básicas que seguramente no hace falta ser muy avispado para sacar la información, para ello crearemos un .htpasswds en el mismo directorio que está el .htacces (si nos fijamos antes ya he apuntado al .htpasswds en el .htaccess), para crear el .htpasswds simplemente:



Y para rellenarlo iremos a esta página http://www.htaccesstools.com/htpasswd-generator/ en la que poniendo el usuario y la contraseña te rellenan el contenido de tu htpasswds:



Y ahora pongo mis credenciales (hace falta actualizar la página) y...


Y con esto ya estaría, espero que os haya gustado este tutorial y nos vemos en el siguiente blog, hasta la próxima!

Configurando apache2


Muy buenas chaval@s, cómo va? Hoy os traigo una entrada básica sobre apache 2, vamos a instalarlo y configurarlo para que no tengáis problemas a la hora de seguir mis siguientes entradas, empezamos!

Lo primero de todo es, qué es apache? Pues apache es "un software de servidor web gratuito y de código abierto con el cual se ejecutan el 46% de los sitios web de todo el mundo."; para los mortales como yo, es un servidor web, es decir, un lugar en el que puedes alojar tu página web.

Vamos a empezar con la instalación y es tan fácil como:



Fácil, sencillo y para toda la familia; en vuestro vps debería apareceros ahora algo así:



Una vez tenemos apache instalado vamos a habilitar un módulo, para ello vamos a /etc/apache2/mods-available:


Aquí dentro podemos ver todos los mods disponibles que tenemos, en nuestro caso vamos a utilizar el userdir, para ello usamos el comando a2enmod que es para habilitar módulos de apache, y lo usamos en userdir:


Si nos fijamos al habilitarlo nos apareche que hagamos un restart en apache, así que:


Ahora para asegurarnos de que está habilitado vamos a la carpeta mods-enabled dentro de apache:


Y aquí hacemos un ls para ver si está nuestro módulo que ahora mismo es userdir:


Y como podemos ver userdir está aquí.

Ahora bien, para qué sirve userdir? Userdir es un mod de apache que nos permite que si tenemos un grupo de usuarios en nuestro vps, que cada uno pueda tener su proyecto en un directorio de su home, así que vamos a proceder a crear un usuario en nuestro vps:


-m crea el directorio de home del usuario y -s le especificamos una shell; Ahora vamos a entrar como Sergio para ver qué tendría que hacer un usuario para poder hacer uso de este mod, para ello:


Y ahora creamos el archivo public_html en su home (public_html es donde puede poner su información el usuario):


Y creamos un index.html dentro de prueba para poder testear que funciona, para ver si funciona accedemos a la url del vps y ponemos " /~{El nombre del usuario}/ " y debería apareceros vuestro index.html




Y con esto ya estaría, espero que os haya gustado y nos vemos en próximos blogs, un saludo!