Skip to content

Projecte Final FCT - CFGS Desenvolupament d'Aplicacions Web

Notifications You must be signed in to change notification settings

antonialoytorrens/pa-amb-oli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pamboliada

Projecte Final FCT - CFGS Desenvolupament d'Aplicacions Web

https://github.com/antonialoytorrens/pa-amb-oli

L'aplicació per a ordinador (Linux Debian or Ubuntu 18.04+) i per a mòbil (Android4.0+) està disponible per descarregar. També hi ha una versió (en proves) per a altres distribucions Linux (en format .zip).

Get it on Github DEB Get it on Github ZIP Get it on Github APK

Guia ràpida per començar

Si es vol visitar el lloc web

El lloc web es troba a https://www.pamboliada.cat (inactiu).

Si es vol realitzar el desplegament (desenvolupament)

Linux

Obre un terminal i introdueix les següents ordres:

$ sudo apt install python3 python3-venv python3-pip postgresql

$ sudo su - postgres
$ psql
# CREATE DATABASE paambolis;
# CREATE USER paambolis with PASSWORD 'paambolis';
# ALTER ROLE paambolis SET client_encoding TO 'utf-8';
# ALTER ROLE paambolis SET default_transaction_isolation TO 'read committed';
# ALTER ROLE paambolis SET timezone TO 'UTC';
# GRANT ALL PRIVILEGES ON DATABASE paambolis TO paambolis;
# \q
$ exit

$ git clone https://github.com/antonialoytorrens/pa-amb-oli.git
$ cd pa-amb-oli/
$ virtualenv --python=`which python3` venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver

L'aplicació es desplega per defecte a:

127.0.0.1:8000

Nota: Si l'aplicació es vol fer disponible a tots els dispositius de la xarxa local, canvia la darrera ordre per aquesta:

$ python manage.py runserver 0.0.0.0:8000

Així, l'aplicació és accessible tant per a localhost (127.0.0.1) com per altres dispositius (introduir la IP de la màquina virtual amb el port 8000, ex: 192.168.1.23:8000).

La IP del teu ordinador es pot saber obrint un terminal i introduir la ordre ifconfig (si no es troba la ordre, executa sudo apt install net-tools)

Altres (per Linux també serveix com a alternativa)

Baixar i instal·lar el programa VirtualBox corresponent al teu sistema operatiu: https://www.virtualbox.org


L'arxiu (Client) es troba a la següent ubicació:

https://downloads.sourceforge.net/project/pamboliada-fct-s2w/VirtualBox_VDI_Files/Ubuntu%2018.04%20Project%20Server%20i%20Client%20Dev%20LXDE.zip

Per tant, descarregar i importar l'arxiu (.zip) del Client.


L'arxiu (Servidor) es troba a la següent ubicació:

https://downloads.sourceforge.net/project/pamboliada-fct-s2w/VirtualBox_VDI_Files/Ubuntu%2018.04%20Project%20Server%20Dev.zip

Per tant, descarregar i importar l'arxiu (.zip) del Servidor.


Client Ubuntu 18.04.3 LTS (LXDE)

El servidor està configurat a partir d'una IP estàtica (192.168.1.201). L'arxiu de configuració per canviar la IP es troba a /etc/netplan/01-netcfg.yaml. L'aplicació es desplega automàticament a tota la xarxa local quan s'inicia el sistema, per tant per veure la pàgina web s'ha d'obrir un navegador a la direcció 192.168.1.201:8000, o en el propi sistema (firefox) a localhost:8000.

Informació bàsica
LOGIN
User: admin
Password: admin0
------------------------------------------------
POSTGRES
*Usuari amb tots els privilegis a la base de dades `paambolis`*
User: paambolis
Password: paambolis
------------------------------------------------

Si es vol realitzar el desplegament (producció)

Es recomana visitar aquest enllaç per a una explicació més detallada del que es veurà a continuació: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04.

$ sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl gunicorn libgraphviz-dev

$ sudo su - postgres
$ psql
# CREATE DATABASE paambolis;
# CREATE USER paambolis with PASSWORD 'paambolis';
# ALTER ROLE paambolis SET client_encoding TO 'utf-8';
# ALTER ROLE paambolis SET default_transaction_isolation TO 'read committed';
# ALTER ROLE paambolis SET timezone TO 'UTC';
# GRANT ALL PRIVILEGES ON DATABASE paambolis TO paambolis;
# \q
$ exit

$ git clone https://github.com/antonialoytorrens/pa-amb-oli.git
$ cd pa-amb-oli/
$ virtualenv --python=`which python3` venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py collectstatic

Pautes a tenir en compte

  • Creant el sòcol (o socket) de Gunicorn
$ sudo nano /etc/systemd/system/gunicorn.socket
/etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

  • Creant els serveis de Gunicorn
$ sudo nano /etc/systemd/system/gunicorn.service
/etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myprojectdir
ExecStart=/home/sammy/myprojectdir/myprojectenv/bin/gunicorn\
--access-logfile -\
--workers 3\
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Nota: Reemplaça sammy per el teu nom d'usuari, myprojectdir per el teu directori del projecte, myprojectenv per el nom del teu entorn virtual (virtualenv) i myproject per la teva carpeta de projecte (la carpeta on es troba l'arxiu settings.py).

Activam els serveis:

$ sudo systemctl start gunicorn.socket
$ sudo systemctl enable gunicorn.socket

Comprovam que el socket funciona:

$ curl --unix-socket /run/gunicorn.sock localhost

Comprovam que el servei de Gunicorn funciona i està en marxa:

$ sudo systemctl status gunicorn

Nota: Si en algun moment es realitzen canvis a /etc/systemd/system/gunicorn.service, s'hauran d'introduir les següents ordres:

$ sudo systemctl daemon-reload
$ sudo systemctl restart gunicorn
  • Configurar Nginx com a servidor web del desplegament
$ sudo nano /etc/nginx/sites-available/projecte
/etc/nginx/sites-available/projecte
server {
listen 80;
server_name server_domain_or_IP;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/sammy/myprojectdir;
}

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

Nota: Reemplaça sammy per el teu nom d'usuari, myprojectdir per el teu directori del projecte, i server_domain_or_IP per la teva IP (o domini si en disposa d'un).

Activam la configuració:

$ sudo ln -s /etc/nginx/sites-available/projecte /etc/nginx/sites-enabled

Per comprovar si no tenim faltes de sintaxi a l'arxiu de configuració de l'nginx, posam:

$ sudo nginx -t

Reiniciam el servei:

$ sudo systemctl restart nginx

Nota: Si disposa d'un firewall, s'haurà de permetre l'execució del servei d'nginx executant:

$ sudo ufw allow 'Nginx Full'

Servidor Ubuntu 18.04.3 LTS

El servidor està configurat a partir d'una IP estàtica (192.168.1.200). L'arxiu de configuració per canviar la IP es troba a /etc/netplan/01-netcfg.yaml. L'aplicació es desplega automàticament a tota la xarxa local quan s'inicia el sistema, per tant per veure la pàgina web s'ha d'obrir un navegador a la direcció 192.168.1.200.

Nota a l'hora de canviar l'IP a aquest servidor

Com que es tracta d'un servidor de producció, també s'haurà de canviar ALLOWED_HOSTS (ubicat a ~/pa-amb-oli/pa_amb_olis/settings.py) i el fitxer de configuració d'nginx (ubicat a /etc/nginx/sites-enabled/django).

També disposa d'un tallafocs, on només es permeten els ports 80 (emprat per nginx) i 22 (emprat per openssh).

Informació bàsica
LOGIN
User: admin
Password: admin0
------------------------------------------------
POSTGRES
*Usuari amb tots els privilegis a la base de dades `paambolis`*
User: paambolis
Password: paambolis (molt recomanat canviar-la)
------------------------------------------------