#Printer Server

##Pasos para despliegue

  • Instalar VirtualEnv en el server y crear el entorno donde deseemos:
$ sudo apt-get install python-virtualenv python3-pip
$ sudo virtualenv --python=python3 /opt/imp_serv
  • Instalar Django dentro del VirtualEnv recién creado:
$ cd /opt/imp_serv
$ source bin/activate
$ sudo pip3 install django
  • Creamos la carpeta donde almacenaremos el proyecto:
$ sudo mkdir imp_serv
$ cd imp_serv
  • Clonar repositorio desde Bitbucket:
$ sudo apt-get install git
$ sudo git clone https://github.com/tic-ull/PrintServerOSL.git .
  • Instalar depencencias con Pip:
sudo pip3 install django-filter
sudo pip3 install djangorestframework
sudo pip3 install netaddr
sudo pip3 install pypdf2
sudo pip3 install django_reset
  • Crear las migraciones y las tablas de la base de datos:
$ sudo python manage.py makemigrations
$ sudo python manage.py migrate
  • Cuando se vaya a poner el producción el servicio, modificar las partes de el fichero 'settings.py' de la siguiente manera:
DEBUG = False
ALLOWED_HOSTS = ['*']
.
.
.
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
  • Crear carpeta para ficheros estáticos en el mismo directorio que 'manage.py' y generarlos allí:
$ sudo mkdir static
$ sudo python manage.py collectstatic
  • Si no se tiene servidor DNS para el dominio, será necesario añadir esta línea a '/etc/hosts' de todas las máquinas, tanto clientes como servidor:
<ip_servidor>   <nombre_del_dominio>
  • Instalar nginx y crear dominio en Nginx:
$ sudo apt-get install nginx
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/<nombre_del_dominio>
  • Modificar el fichero recién creado de manera que contenga el siguiente código:
server {
        listen 80;
        listen [::]:80;

        server_name <nombre_del_dominio>;

        access_log off;

        location /static/ {
                root /opt/imp_serv/imp_serv/;
                autoindex off;
        }

        location / {
                #try_files $uri $uri/ /index.php?q=$uri&$args;
                proxy_set_header Host $host;
                proxy_pass http://<nombre_del_dominio>:8001;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Real-IP $remote_addr;
                add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
       } 

        #error_page 404 /404.html;
        #error_page 500 502 503 504 /50x.html;
        #location = /50x.html {
        #        root /usr/share/nginx/html;
        #}

}
  • Activamos nuestro sitio y reiniciamos el servicio de Nginx:
$ sudo ln -s /etc/nginx/sites-available/<nombre_del_dominio> /etc/nginx/sites-enabled/
$ sudo service nginx restart
  • Nos dirigimos ahora a nuestra carpeta del proyecto y entramos en nuestro entorno virtual, si no lo estamos ya, para instalar Gunicorn:
$ cd /opt/imp_serv/imp_serv
$ source ../bin/activate
$ sudo pip3 install gunicorn
  • Por último ejecutar el comando necesario con Gunicorn para poner la página a funcionar:
$ gunicorn ImpServ.wsgi:application --bind <nombre_del_dominio>:8001