LogScope es una plataforma que permite a directivos tener control sobre el acceso a las aplicaciones utilizadas en la empresa y el acceso a la red mediante a la VPN. Se trata de una herramienta de soporte a la decision que ayuda a entender mejor como se pueden administrar las licencias y el uso de las aplicaciones.
En este repositorio encontrarás todo lo que necesitas para poner en marcha la aplicación. Los conjuntos de datos que se proporcionan son tan solo un ejemplo con datos anonimizados para mostrar como funciona la aplicación. Algunas funcionalidades (como Power BI) solo están disponibles para los usuarios con permisos.
Este proyecto ha sido desarrollado en colaboración con ASTI Mobile Robotics, empresa española dedicada a la ingeniería de robótica móvil.
Enlace al video de presentación de LogScope
Podemos obtener esta versión específica de Python aquí.
Asegúrate de que la versión de Python instalada es la 3.7.5.
Para descargar MySQL puedes hacerlo desde aquí.
Además, otra herramienta útil es MySQL Workbench, que puede descargarse desde aquí.
El siguiente paso es crear nuestra base de datos y usuario para el proyecto, puedes usar los siguientes scripts:
~\app\db\create_dbs.sql
~\app\db\create_test_user.sql
- django - version 3.0.5
- django-filter - version 2.2.0
- django-tables2 - version 2.2.1
- tablib - version 1.1.0
- django-bootstrap-form - version 3.4
- django-crispy-forms - version 1.9.0
- mysqlclient - version 1.4.5
- numpy - version 1.17.3
- pandas - version 0.25.2
- python-gettext - version 4.0
Tanto si usas virtualenv (explicado en la siguiente sección) como si no, todos los requerimientos necesarios están en el fichero requirements.txt y podemos instalarlos fácilmente con:
pip install -r ~\requirements.txt
Una vez tenemos Python instaldo, pip será instalado también. Podemos usar pip para instalar virtualenv, una herramienta para crear entornos virtuales.
pip install virtualenv==16.7.7
Creamos el entorno virtual con:
virtualenv path
Activamos con:
~\venv\Scripts\activate.bat
Desactivamos con:
~\venv\Scripts\deactivate.bat
Y podemos comprobar que hay instalado con:
pip freeze
Esta aplicación está siendo desarrollada en Windows y eso provoca que los ficheros que se generan no sean los mismos que en Linux.
Lo primero que debemos hacer es crear un fichero con la configuración de la base de datos. El nombre del fichero debe ser
mysqlconfig.py
y contener algo como esto:
DB = {
'NAME': 'name_of_database',
'USER': 'name_of_user',
'PASSWORD': 'secret_password',
'HOST': '127.0.0.1', # database IP
'PORT': 3306, # database port
'SERVER': '10.10.10.10', # server IP
}
Ahora, ejecutaremos el siguiente comando para crear las entidades en la base de datos:
cd ~\app\src
manage.py migrate
Cuando creas todo desde cero es importante disponer de una usuario/cuenta de administrador. Puedes crear una con:
manage.py createsuperuser
Esta cuenta te permitirá acceder al sistema de administración de la aplicación donde puedes gestionar la autenticación entre otras cosas.
Django nos proporciona una forma sencilla de introducir datos iniciales con
manage.py
.
Utiliza los ficheros json proporcionados para importar datos a la base de datos con:
cd ~\app\src
manage.py loaddata 1_anonymized_persons.json
manage.py loaddata 2_logscope_testdata.json
manage.py loaddata 3_dataset_events.json
manage.py loaddata 4_dataset_passages.json
Estos ficheros json están localizados en
~\app\src\logscope\fixtures
. El proceso puede llevar un par de minutos.
También puedes extraer los datos de la base de datos cuando quieras con:
cd ~\app\src
manage.py dumpdata --format json --indent 4 > dataset_name.json
Puedes ejecutar la aplicación con:
cd ~\app\src
manage.py runserver [IP]:[port]
Esto es algo bastante sencillo de hacer, pero Django necesita un par de configuraciones para poner la aplicación en un entorno de producción.
Todo esto puede ser configurado en el fichero settings.py
donde hay que cambiar lo siguiente:
DEBUG = False
ALLOWED_HOSTS = [DB['SERVER']]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
Ahora con todos los cambios hechos recogemos los ficheros estáticos que necesita la aplicación:
cd ~\app\src
manage.py collectstatic
Y ejecutamos:
cd ~\app\src
manage.py runserver server_ip:port --insecure
Usa 0.0.0.0:8000
por ejemplo.
El parámetro --insecure
es utilizado para habilitar los ficheros estáticos con el modo de depuración deshabilidato.
LogScope is a platform that allows managers to keep track of access to business applications and the network through VPN. This is a decision-making support tool that will allow better understanding about license management and application usage.
You will find in this repository everything you need to setup the application. Datasets provided are just an example with anonymized data to show how it looks like. Some functionalities (Power BI) will only be available for users with privileges.
This project has been developed in collaboration with ASTI Mobile Robotics, a Spanish mobile robotics engineering company.
We can get this version of Python from here.
Make sure Python 3.7.5 is the version installed, this is important for the requirements.
To install MySQL we only need to download from here.
Also, another useful tool is MySQL Workbench and can be downloaded from here.
Next step is to create our database and user for the project, you can use:
~\app\db\create_dbs.sql
~\app\db\create_test_user.sql
- django - version 3.0.5
- django-filter - version 2.2.0
- django-tables2 - version 2.2.1
- tablib - version 1.1.0
- django-bootstrap-form - version 3.4
- django-crispy-forms - version 1.9.0
- mysqlclient - version 1.4.5
- numpy - version 1.17.3
- pandas - version 0.25.2
- python-gettext - version 4.0
Whether we use or not virtualenv (shown in the section below), all the requirements needed are located in requirements.txt and we can easily install them with:
pip install -r ~\requirements.txt
Once we have Python installed, pip will be installed too. We can use pip to install virtualenv, a tool used to create virtual environments:
pip install virtualenv==16.7.7
Create the virtual environment with:
virtualenv path
It can be activated with:
~\venv\Scripts\activate.bat
Deactivated with:
~\venv\Scripts\deactivate.bat
And check what contains with:
pip freeze
This app its being developed in Windows and that causes virtualenv to create different directories than in Linux.
First of all we need to create a file with the database configuration. The name of the file must be
mysqlconfig.py
and contain something like this:
DB = {
'NAME': 'name_of_database',
'USER': 'name_of_user',
'PASSWORD': 'secret_password',
'HOST': '127.0.0.1', # database IP
'PORT': 3306, # database port
'SERVER': '10.10.10.10', # server IP
}
Now that all is installed, we will execute the following command to create the database entities:
cd ~\app\src
manage.py migrate
When you create everything from scratch is important to have an admin account. You can create one with:
manage.py createsuperuser
This accout will allow you to access the django administration system of the app where you can manage authentication among other things.
Django provides an easy way to set some initial data with
manage.py
.
Use the given json files to import data to the database with:
cd ~\app\src
manage.py loaddata 1_anonymized_persons.json
manage.py loaddata 2_logscope_testdata.json
manage.py loaddata 3_dataset_events.json
manage.py loaddata 4_dataset_passages.json
This json files are located in
~\app\src\logscope\fixtures
. The process might take a couple of minutes.
You can also extract the current data from your database with:
cd ~\app\src
manage.py dumpdata --format json --indent 4 > dataset_name.json
You run the app with:
cd ~\app\src
manage.py runserver [IP]:[port]
This is a pretty simple thing to do, but Django needs a couple of settings to put an application in a production environment because this command only runs the server.
All of this can be configured from the file settings.py
where you have to change the following things:
DEBUG = False
ALLOWED_HOSTS = [DB['SERVER']]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
Now with all this changes we have to collect the static files:
cd ~\app\src
manage.py collectstatic
And run the app:
cd ~\app\src
manage.py runserver server_ip:port --insecure
Use 0.0.0.0:8000
for example.
Parameter --insecure
is used to enable static files with debug mode set on false.