<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-nuovo-utente">Creare un nuovo utente</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#scaricare-il-codice-sorgente">Scaricare il codice sorgente</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-il-database">Creare il database</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-file-di-configurazione-per-il-backend">Creare un file di configurazione per il backend</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#installare-le-dipendenze-python">Installare le dipendenze Python</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#installare-le-dipendenze-nodejs">Installare le dipendenze NodeJS</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-servizio-systemd-per-il-backend">Creare un servizio SystemD per il backend</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#compilare-il-frontend">Compilare il frontend</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#creare-un-timer-systemd-per-il-crawler">Creare un timer SystemD per il crawler</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
</ul>
</li>
</ul>
<pclass="caption"><spanclass="caption-text">Relazione sul progetto</span></p>
<ul>
<liclass="toctree-l1"><aclass="reference internal"href="../development/goals.html">Obiettivo del progetto</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="../development/process.html">Processo di sviluppo</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="../code/backend/index.html"><codeclass="docutils literal notranslate"><spanclass="pre">nest_backend</span></code> - Web API in Python</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="../code/crawler/index.html"><codeclass="docutils literal notranslate"><spanclass="pre">nest_crawler</span></code> - Crawler in Python</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="../code/frontend/index.html"><codeclass="docutils literal notranslate"><spanclass="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
<p>Questo creerà una nuova cartella <codeclass="docutils literal notranslate"><spanclass="pre">g2-progetto</span></code> nella directory in cui è stato eseguito il comando.</p>
<h2>Creare un file di configurazione per il backend<aclass="headerlink"href="#creare-un-file-di-configurazione-per-il-backend"title="Link a questa intestazione">¶</a></h2>
<p>Il backend usa un file di configurazione per impostare alcune variabili.</p>
<p>Si crei un nuovo file nella working directory del progetto denominato <codeclass="docutils literal notranslate"><spanclass="pre">config.py</span></code>:</p>
<divclass="highlight-python notranslate"><divclass="highlight"><pre><span></span><spanclass="c1"># Una stringa rappresentante il database da utilizzare</span>
<spanclass="c1"># Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html</span>
<p>Poetry creerà automaticamente un <aclass="reference external"href="https://docs.python.org/3/library/venv.html">venv</a> e vi installerà all’interno tutti
i pacchetti necessari all’esecuzione del backend e del crawler di N.E.S.T. .</p>
<p><strong>Si suggerisce di ricordare il nome del venv creato da Poetry</strong>, in quanto sarà necessario per
<aclass="reference internal"href="#creare-un-servizio-systemd-per-il-backend"><spanclass="std std-ref">Creare un servizio SystemD per il backend</span></a>:</p>
<divclass="highlight-console notranslate"><divclass="highlight"><pre><span></span><spanclass="go">Creating virtualenv nest-7C2fm2VD-py3.9 in /srv/nest/.cache/pypoetry/virtualenvs</span>
<aclass="reference external"href="https://docs.npmjs.com/cli/v7/configuring-npm/folders#node-modules">node_modules</a> e vi installerà all’interno tutte
le librerie necessarie all’esecuzione del frontend di N.E.S.T. .</p>
<h2>Creare un servizio SystemD per il backend<aclass="headerlink"href="#creare-un-servizio-systemd-per-il-backend"title="Link a questa intestazione">¶</a></h2>
<p>Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come
<p>In caso di successo, l’API dovrebbe essere esposto sulla porta <codeclass="docutils literal notranslate"><spanclass="pre">30040</span></code> dell’indirizzo di loopback <codeclass="docutils literal notranslate"><spanclass="pre">127.0.0.1</span></code>:</p>
<h2>Creare un servizio SystemD per il frontend<aclass="headerlink"href="#creare-un-servizio-systemd-per-il-frontend"title="Link a questa intestazione">¶</a></h2>
<p>Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm <codeclass="docutils literal notranslate"><spanclass="pre">serve</span></code>
integrato con N.E.S.T. come un servizio di sistema di <em>SystemD</em>:</p>
<p>In caso di successo, il frontend dovrebbe essere esposto sulla porta <codeclass="docutils literal notranslate"><spanclass="pre">30041</span></code> dell’indirizzo di loopback <codeclass="docutils literal notranslate"><spanclass="pre">127.0.0.1</span></code>:</p>
<h2>Creare un servizio SystemD per il crawler<aclass="headerlink"href="#creare-un-servizio-systemd-per-il-crawler"title="Link a questa intestazione">¶</a></h2>
<divclass="admonition-todo admonition"id="id1">
<pclass="admonition-title">Da fare</p>
<p>Scrivere una guida all’installazione di un servizio SystemD per il crawler.</p>
<h2>Creare un timer SystemD per il crawler<aclass="headerlink"href="#creare-un-timer-systemd-per-il-crawler"title="Link a questa intestazione">¶</a></h2>
<divclass="admonition-todo admonition"id="id2">
<pclass="admonition-title">Da fare</p>
<p>Scrivere una guida all’esecuzione ripetuta del crawler attraverso un timer SystemD.</p>
<h2>Configurare Apache come reverse proxy<aclass="headerlink"href="#configurare-apache-come-reverse-proxy"title="Link a questa intestazione">¶</a></h2>
<p>Per rendere l’API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server
come reverse proxy.</p>
<p>La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server;
pertanto, si fornisce solamente un file <aclass="reference external"href="https://httpd.apache.org/docs/2.4/vhosts/examples.html">VirtualHost</a> di
<ahref="../development/goals.html"class="btn btn-neutral float-right"title="Obiettivo del progetto"accesskey="n"rel="next">Next <spanclass="fa fa-arrow-circle-right"aria-hidden="true"></span></a>
<ahref="about.html"class="btn btn-neutral float-left"title="Il progetto in breve"accesskey="p"rel="prev"><spanclass="fa fa-arrow-circle-left"aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<divrole="contentinfo">
<p>
© Copyright 2021, Gruppo 2.
</p>
</div>
Built with <ahref="https://www.sphinx-doc.org/">Sphinx</a> using a