
Les doy la bienvenida a este curso completo denominado “Implementa tu sitio web Django en un VPS Ubuntu PostgreSQL Nginx Certificado SSL 2019” donde les enseñare a implementar su sitio web en un servidor de la manera más entendible y sencilla. Utilizaremos herramientas como Nginx, IDES como Pycharm, Supervisor, PostgreSQL y Let's Encrypt. Se utilizará el proveedor Digital Ocean para adquirir el VPS Linux (18.04).
Usaremos un proyecto base realizado en Django y con su base de datos en SQLITE, a partir de ello conoceremos su estructura, migraremos su base de datos a otra sin perder la información y subiremos todos los cambios a gitlab (repositorio) para posteriormente empezar la implementación al servidor.
Si queremos programar con Python con el framework Django, necesitaremos configurar las variables de entorno de python en Windows para poder ejecutar cualquier script que realicemos de forma sencilla sin necesidad de estar en la carpeta raíz del mismo y que funcione correctamente.
PATH es una variable de entorno de los sistemas operativos POSIX y los sistemas de Microsoft,en ella se establecen las rutas en las cuales el intérprete de comandos debe buscar los programas a ejecutar.
Es importante conocer cómo está estructurado tu proyecto para saber cómo funciona. En este proyecto está estructurado de la siguiente manera:
config.- Estarán los archivos de configuración del sistema, base de datos, media, login, etc.
core.- Estarán nuestras apps de nuestro sistema. Cada core contendrá sus modelos, forms, views, urls, etc.
media.- Estarán los archivos multimedia de los modelos que contengan imágenes.
requirements.- Se encuentran las dependencias que deben ser instaladas para que nuestro sistema funcione.
static.- Son los archivos estáticos de nuestro sistema (imagenes, js, css, plugins, etc).
templates.- Son las plantillas de nuestro sistema web.
Es importante aprender a crear entorno virtuales desde el cmd de tu sistema operativo, no siempre tu computadora será lo suficientemente potente para soportar el funcionamiento de un ide.
Pycharm es uno de los IDES más completos para programar en python y django, se puede crear desde entornos virtuales, debugear partes de código, instalar librerías, refactorizar código y muchas cosas más.
Se puede migrar de la misma forma hacia otra base de datos como por ejemplo SQLSERVER o MYSQL, para ello deben instalar las librerias correspondientes y usar asi mismo los métodos dumpdata y loaddata.
DEBUG nos muestra la página de errores en django, cuando nosotros tenemos un error de lógica en nuestro sistema este no lo hace saber en una página llamada DEBUG PAGE.
ALLOWED_HOSTS son los host permitidos, cuando estamos en desarrollo es bueno tener DEBUG en True porque esto le dirá a django que nos muestra la DEBUG PAGE y sera mas facil detectar nuestro error pero todo cambia en produccion
Es recomendable tenerlo en False porque se está en True, y en un caso hipotético que se produzca un error en producción django le mostrará la DEBUG PAGE a los usuarios y estos podrán ver información como la de nuestro servidor y estaríamos expuestos a cualquier ataque por internet.
Las llaves o claves SSH (una pública y una privada), nos permiten conectarnos fácilmente a un servidor o a múltiples servidores, sin tener que ingresar una contraseña, en otras palabras son una manera de identificar nuestras computadoras de confianza.
Gitlab es un servicio web de control de versiones y desarrollo de software colaborativo basado en Git.
Para crear una copia local del repositorio ejecutando usamos el comando git clone ruta
Puedes registrar cambios usando git add archivo o git add .
Puede especificar una descripción del cambio que hiciste usando git commit -m "mensaje"
Para enviar estos cambios a tu repositorio remoto ejecuta usando git push or git push origin master
Para actualizar tu repositorio local al commit más nuevo, ejecuta git pull en tu directorio de trabajo para bajar y fusionar los cambios remotos.
Para fusionar otra rama a tu rama activa (por ejemplo master), utiliza git merge <branch>
Digital Ocean es un proveedor estadounidense de servidores virtuales privados. Sus precios son muy económicos y accesible para cualquier usuario. Con solo registrarte te dan 10$ para usarlos.
Para mejorar la seguridad en servidores Linux, sobretodo a la hora de dejar fuera de juego a algunos tipos de bots, podemos cambiar el puerto SSH que usa el administrador para autentificarse por el protocolo SSH.
Lo primero que vamos a hacer es editar el archivo sshd_config y cambiaremos el puerto 22 al que deseemos, luego nos tocará reiniciar con el comando /etc/init.d/sshd restart
Es importante crear usuarios aparte del root para poder montar hay la implementación de nuestro sitio, si algo ocurre nuestro root principal no se vera afectado. Entre los comandos que podemos destacar son los siguientes.
adduser: permite crear un usuario en ubuntu de una manera rápida y sencilla, automáticamente se crear el grupo tambien.
deluser: Para eliminar un usuario en linux. Si queremos además de eliminar el usuario eliminar sus archivos, tendremos que emplear el comando userdel -r vozidea.
cat /etc/passwd: Se podrá visualizar el listado de usuarios en el servidor.
cat /etc/group: Se podrá visualizar el listado de grupos en el servidor.
sudo passwd usuario: Sirve para cambiar la clave de un usuario.
Primero que haremos es darle privilegios de root a nuestro usuario:
sudo /usr/sbin/visudo.
Actualizaremos nuestro servidor:
sudo apt-get update
sudo apt-get -y upgrade
Instalaremos git y clonaremos el proyecto:
sudo apt-get install git
ssh-keygen -t rsa -C "nombre" -b 4096
cat ~/.ssh/id_rsa.pub
git clone url_del_repositorio
Si deseamos saber si esta instalado python 3 solo debemos escribir en consola python3. Si sale la versión instalada 3.6 no hay problema se puede trabajar con normalidad.
Instalamos el entorno virtual, pip y los requerimientos del sistema:
sudo apt-get install -y python3-pip, instalaremos el pip si no está instalado.
sudo apt-get install python-virtualenv virtualenv, instalaremos el virtual env para entornos virtuales.
virtualenv env -ppython3, crearemos nuestro entorno virtual con la versión 3 de python
Activaremos nuestro entorno virtual cd env, cd bin, source activate
pip install -r requeriments/requeriments.txt, instalaremos los requerimientos del sistema web
Corremos el sistema con python manage.py runserver ip:puerto
sudo apt-get install postgresql postgresql-contrib -> permite instalar PostgreSQL
sudo -u postgres psql -> iniciar el PostgreSQL
\password -> cambiar la clave del PostgreSQL
CREATE DATABASE base_datos; -> creamos la base de datos
GRANT ALL PRIVILEGES ON DATABASE base_datos TO usuario; -> damos todos los privilegios de la base de datos a el usuario postgress
pg_restore -h servidor-p puerto -U usuario -d base_datos -v "ruta_base_datos" -> restauramos la base de datos
Nginx sera nuestro servidor web para manejar todo nuestro contenido estático de nuestro sitio web.
PostgreSQL es nuestro motor de base de datos.
Gunicorn sera nuestro servidor WSGI HTTP para subir todo nuestro contenido dinámico, a través de los sockets que genera conectara nuestra aplicación Django con Nginx.
Supervisor va a ser el encargado de mantener nuestro servicio de la aplicación corriendo.
En este video crearemos un script que nos permitirá levantar nuestra aplicación django sin usar ./manage runserver.
Llegamos al punto de configurar el supervisor, el cual nos va a ayudar a mantener nuestra aplicación de django corriendo en el servidor. Debemos ubicar nuestro archivo de configuración en la ruta /etc/supervisor/conf.d/. y con extensión .conf
Los sockets que genera nuestro gunicorn nos servirán para conectar nuestra aplicación Django con nuestro servidor web Nginx.
Nginx es realmente sencillo de configurar, cuenta con dos carpetas una donde se almacenan las configuraciones de los sitios disponibles y otra donde se almacenan los sitios activos.
Debemos a crear nuestra configuración en la carpeta /etc/nginx/sites-available. Al final debemos crear un archivo simbólico para replicar nuestra configuración en la capeta de sitios habilitados para que nuestra aplicación este activa.
Los DNS permiten a los navegadores conectar un nombre de dominio hacia una dirección IP.
Existen algunos registros de DNS.
El registro A (Address) le permite redireccionar un dominio o subdominio a una dirección IP.
Un registro AAAA apunta un dominio o subdominio a una dirección IPv6. El registro AAAA es similar al registro A, pero en lugar de apuntar a una dirección IPv4 lo hace a una IPv6.
CNAME es un registro utilizado para especificar un nombre de dominio como alias para otro registros de DNS dominio.
Registros MX se utiliza para añadir su propio servidor de correo.
TTL. Representa cuanto dura en el cache de dns esta configuración, El valor TTL de un registro determina cuánto tardará en aplicarse cualquier cambio en la configuración de este registro.
Para la compra del dominio gratuito usaremos la página https://www.freenom.com/es/index.html
Para ver la propagación del dns de nuestro dominio usaremos las páginas https://dnsmap.io/ o https://dnschecker.org
Let's Encrypt es una Autoridad Certificadora (CA) que provee certificados TLS/SSL totalmente gratuitos y fácil de instalar. Con el software Certbot automatizaremos la mayoría todos los pasos para la instalación.
Tips finales del curso y palabras de agradecimiento a todas las personas que tomaron el curso.
¡Hola a todos!
Si ya has aprendido a programar en Python y Django este curso es para ti. Implementa tu sistema web hoy mismo de manera sencilla y entendible.
Me llamo William Dávila, soy desarrollador de aplicaciones web y escritorio. Especializado en dar soluciones informáticas a medida en múltiples plataformas de programación, responsable, dinámico, innovador, siempre con ideas nuevas, y con la capacidad de adaptarme al proyecto así sea en condiciones de alta presión. Aplicando tecnologías como Python, Django, PostgreSQL, SQLServer, Visual.NET, C#, ASP.NET, PHP, MySQL, Android, Java, SQLITE, HTML5, CSS, JQuery, Javascript, DOM, Frameworks, Ajax, XML, JSON, Bootstrap y GIT.
Les doy la bienvenida a este curso completo denominado “Implementa tu sitio web Django en un VPS Ubuntu PostgreSQL Nginx Certificado SSL 2019” donde les enseñare a implementar de manera correcta y sencilla su sitio web en un servidor. Utilizaremos herramientas como Nginx, PostgreSQL y Let's Encrypt. Se utilizará el proveedor Digital Ocean para adquirir el VPS Linux (18.04).
Usaremos un proyecto base realizado en Django y con su base de datos en SQLITE, a partir de ello conoceremos su estructura, migraremos su base de datos a otra sin perder la información y subiremos todos los cambios a gitlab (repositorio) para posteriormente empezar la implementación al servidor.
No dejes que tus proyectos se queden solamente en tu computador, aprende a subirlos a la web hoy mismo. Inscribete Ya !
Saludos y muchas bendiciones a todos.