Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TCA Instalacion Corregido

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Made with Remarkable! file:///home/ricardo/Documentos/aa.

html

TCA - Tablero de Control Ambiental -


Instalación
Autor
Ricardo D. Quiroga - ricardoquiroga.dev@gmail.com
Ultima revisión: 27/09/2019

Introducción
Con la presente guia se asume que la o las persona/s encargada/s de realizar la
instalacion posee conocimientos al menos minimos de comandos de shell,
configuración e instalación de paquete.

Actualmente hay muchos procesos y alternativas al momento de realizar un deploy o


puesta en producción de un sistema, en esta guía explicaremos uno de ellos.

Requisitos basicos
Requisitos minimos para poder instalar el servidor

VPS o Servidor DEDICADO con al menos 1 GB RAM, 25GB espacio


almacenamiento
Linux Ubuntu Server 18.04
Python 3.6.x
PostgresSQL 9.4

Configuracion inicial
Crear usuario para gestionar el servidor
Generalmente se nos proporcionara un usuario root para gestionar el servidor pero
por cuestiones de seguridad es preferible hacerlo
atraves de otro usuario:

Agregar usuario

adduser webapp

Dar permiso sudo

1 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

usermod -aG sudo webapp

Configurar Firewall
Usaremos ufw

ufw app list #consultar las app disponible

Daremos acceso a OpenSSH que es por la cual ingresaremos al servidor

ufw allow OpenSSH

por ultimo activamos ufw

ufw enable

podemos consultar el estado con ufw status

En este momento el firewall esta activado y bloqueando todas las conecciones


exepto ssh

ahora podemos probar si podemos acceder con el usuario que acabamos de crear

ssh webapp@IP_SERVIDOR

con esto damos por finalizada la configuración inicial

Instalación de paquetes (software)


necesarios
Actualizar repositorios e instalar paquetes iniciales

sudo apt update


sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx

Instalar soporte para procesamiento de imagenes

$ sudo apt-get install libtiff5-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-de

2 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

Configuación de la Base de datos


Accedemos a la shell de postgres mediante el siguiente comando

sudo -u postgres psql

Crear la base datos

CREATE DATABASE tca;

crear usuario base de datos

CREATE USER tca WITH PASSWORD 'postgress';

configuramos utf8

ALTER ROLE tca SET client_encoding TO 'utf8';


ALTER ROLE tca SET default_transaction_isolation TO 'read committed';
ALTER ROLE tca SET timezone TO 'UTC';

Dar permisos al usuario creado para acceder a la base de datos

GRANT ALL PRIVILEGES ON DATABASE tca TO tca;

Ahora tenemos creado y configurado el usuario en la bd, salimos

\q

Instalar servidor FTP


Esta seccion es solo con la intención de tener una forma de subir el proyecto al
servidor en la nube, si se realizar sobre una instancia o servidor al que se
tiene acceso fisico o se subira el proyecto por otro medio puede omitirse este paso.

$ sudo apt-get install vsftpd

crear backup de la configuracion

3 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig


sudo vim /etc/vsftpd.conf

Deberia activar en caso que no lo esten

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

Agregar al final del archivo

user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=40000
pasv_max_port=50000

Abrir puertos en el firewall

$ sudo ufw allow 20/tcp


$ sudo ufw allow 21/tcp
$ sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

preparamamos el directorio del usuario

$ mkdir /home/webapp/ftp
$ sudo chown nobody:nogroup /home/webapp/ftp
$ sudo chmod a-w /home/webapp/ftp
$ sudo ls -la /home/webapp/ftp #verificar permiso

A continuación, vamos a crear el directorio para cargar archivos y asignar la


propiedad al usuario:

$ sudo mkdir /home/webapp/ftp/files


$ sudo chown webapp:webapp /home/webapp/ftp/files

Agregar un archivo prueba

4 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

$ echo "vsftpd test file" | sudo tee /home/webapp/ftp/files/test.txt

Reiniciar el servicio

$ sudo systemctl restart vsftpd

Probamos con

ftp -p IP_DEL_SERVIDOR

Con esto ya tenemos habilitado el FTP solo nos hace falta subir el proyecto

Configurar virtualenv
Configuraremos un virtualenv e instalaremos los paquetes python necesarios para el
proyecto

Actualizar pip e instalar virtualenv

sudo -H pip3 install --upgrade pip


sudo -H pip3 install virtualenv

crear el directorio donde instalaremos todo

mkdir ~/tca-app
cd ./tca-app

crear el virtualenv

virtualenv env

copiar el proyecto junto a los archivos

cp -r ~/ftp/minera-tca-backend ~/tca-app/

activar virtualenv en instalar paquetes y dependencias del proyecto ademas de crear


la base de datos inicial.

5 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

source env/bin/activate
cd ./minera-tca-backend
pip install -r requirements.txt

#crear base de datos en blanco


python manage.py migrate

Configurar Gunicorn
Gunicorn se instalo junto con el resto de los paquetes via pip en un paso anterior,
probamos que este corriendo

Primero debemos activar el puerto 8000 que usaremos para probar

sudo ufw allow 8000

luego corremos:

cd ~/minera-tca-backend
gunicorn --bind 0.0.0.0:8000 backend.wsgi

Abrir o crear /etc/systemd/system/gunicorn.socket

sudo vim /etc/systemd/system/gunicorn.socket

agregar el siguiente contenido:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

guardar y cerrar, ahora crearemos un servicio para systemd para iniciar


automaticamente gunicorn

sudo vim /etc/systemd/system/gunicorn.service

6 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

copiar el siguiente contenido

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=webapp
Group=www-data
WorkingDirectory=/home/webapp/tca-app/minera-tca-backend
ExecStart=/home/webapp/tca-app/env/bin/gunicorn \
--access-logfile - \
--workers 2 \
--bind unix:/run/gunicorn.sock \
--timeout 300 \
backend.wsgi:application

[Install]
WantedBy=multi-user.target

guardamos y cerramos y activamos el servicio

sudo systemctl start gunicorn.socket


sudo systemctl enable gunicorn.socket

Cuando activemos el servicio creara un socket en /run/gunicorn.sock ,


antes de continuar debemos revisar que todo este funcionando

sudo systemctl status gunicorn.socket

En caso de tener algun error podemos verlo con

sudo journalctl -u gunicorn.socket

y corregir el correspondiente problema en el servicio si lo ubiese, para reiniciar

sudo systemctl daemon-reload


sudo systemctl restart gunicorn

Configurar Nginx

7 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

Una ves configurado Gunicorn debemos armar un proxy nginx para servir todo

sudo vim /etc/nginx/sites-available/tca

agregar

server {
listen 80;
server_name YOR_APP_NAME;

location = /favicon.ico { access_log off; log_not_found off; }

location /static/ {
root /home/webapp/tca-app/backend-minera-tca;
}

location /assets/ {
autoindex on;
alias /home/webapp/tca-app/backend-minera-tca/static/dist/assets/;
}

location /media/ {
autoindex on;
alias /home/webapp/tca-app/backend-minera-tca/media_archivos_locales/;
}

location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}

Guardar y cerrar, habilitaremos el mismo

sudo ln -s /etc/nginx/sites-available/tca /etc/nginx/sites-enabled

Testeamos que no existan errores

sudo nginx -t

reiniciamos ngnix

sudo systemctl restart nginx

8 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

Por ultimo cerraremos el puerto 8000 que teniamos para pruebas y abriremos los de
Nginx

sudo ufw delete allow 8000


sudo ufw allow 'Nginx Full'

Con esto deberia ver su proyecto corriendo, acceda a la IP o url de su servidor.

Instalación REDIS + Django RQ


Los ultimos cambios en el servidor requieren adicionalmente se implemente Django-
RQ

Instalamos el paquete redis

sudo apt update


sudo apt install redis-server

Actualizar los requerimientos

cd ~/tca-app
source env/bin/activate
pip install -r requirements.txt

Crear el archivo rqworker.service en /etc/systemmd/system con el


siguiente contenido:

sudo vim /etc/systemd/system/rqworker.service

[Unit]
Description=Django-RQ Worker
After=network.target

[Service]
WorkingDirectory=/home/webapp/tca-app/minera-tca-backend
ExecStart=/home/webapp/tca-app/env/bin/python \
manage.py \
rqworker high default low

[Install]
WantedBy=multi-user.target

9 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

Habilitar el servicio

sudo systemctl enable rqworker


sudo systemctl start rqworker

Reiniciar Servicios
Reiniciar Gunicorn :

sudo systemctl start gunicorn.socket

Reiniciar Ngnix :

sudo systemctl restart nginx

Reiniciar RQ

sudo systemctl restart rqworker

Backup de Datos
El backup es unicamente de datos, no incluye configuración ni imagenes.

Para realizar un dump de la base de datos

sudo su postgres
pg_dump -F c tca > "tca_backup_`date +'%Y%m%d_%Hhs%Mmin'`.dump"

En caso que quieras restaurar un dump de datos especifico primero necesitamos


detener el servicio de gunicorn

sudo systemctl stop gunicorn.socket


sudo su postgres
pg_restore --no-acl --no-owner -d tca ruta_del_dump.dump
sudo systemctl start gunicorn.socket

Enlaces externos
Tutorial configurar VSFTP - https://www.digitalocean.com/community/tutorials

10 de 11 26/11/19 11:58
Made with Remarkable! file:///home/ricardo/Documentos/aa.html

/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-18-04
Usar Postgresql con Django https://www.digitalocean.com/community/tutorials
/how-to-use-postgresql-with-your-django-application-on-ubuntu-16-04
Instalar Postgresql en Ubuntu https://www.digitalocean.com/community/tutorials
/how-to-install-and-use-postgresql-on-ubuntu-18-04
Configurar Django + gunicorn + ngnix https://www.digitalocean.com/community
/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04
Configurar Redis Digital Ocean - https://www.digitalocean.com/community
/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04
Python RQ - https://python-rq.org/patterns/systemd/
Django-RQ - https://github.com/rq/django-rq

11 de 11 26/11/19 11:58

También podría gustarte