diff --git a/projet/frontend/.env.example b/projet/frontend/.env.example index ac748637ae52e837bedc4234dbcad2f82e5187e7..34e308203541553a928341f3ab836f2aed5cc5e6 100644 --- a/projet/frontend/.env.example +++ b/projet/frontend/.env.example @@ -1,6 +1,6 @@ -APP_NAME=Laravel +APP_NAME=Inari APP_ENV=local -APP_KEY= +APP_KEY=base64:vwGMIbcdwbSMl0ZI/6vYWu5VwEH8Y5lmwZ3dd9AUbzM= APP_DEBUG=true APP_URL=http://localhost @@ -9,9 +9,9 @@ LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= +DB_DATABASE=bachelor +DB_USERNAME=bachelor +DB_PASSWORD=wn!ju*EW2kob6N!QAQyN BROADCAST_DRIVER=log CACHE_DRIVER=file @@ -23,24 +23,4 @@ REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +INARI_CLIENT_HTTP_PORT=7070 diff --git a/projet/frontend/app/Http/Controllers/API/ClientController.php b/projet/frontend/app/Http/Controllers/API/ClientController.php index 726c83e97e329308841bb8e2a2ee0b5f2dacaaed..bc558c9f7c3c1a568f24429176342f1fa6aa20ec 100644 --- a/projet/frontend/app/Http/Controllers/API/ClientController.php +++ b/projet/frontend/app/Http/Controllers/API/ClientController.php @@ -32,7 +32,8 @@ class ClientController extends Controller { * @return mixed */ public function show(Client $client){ - return ['ip' => $client->ip, 'parameters' => $client->jobs()->select('jobs.id', 'jobs.data')->get()]; + return ['ip' => $client->ip, 'parameters' => $client->jobs()->select('jobs.id', 'jobs.data') + ->get()]; } /** diff --git a/projet/frontend/app/Http/Controllers/API/JobController.php b/projet/frontend/app/Http/Controllers/API/JobController.php index 10e88849337389e97aaaec53f2ea1f963cf7867b..5f29ab112f41ce3fae7f4e781a4d648247caec4a 100644 --- a/projet/frontend/app/Http/Controllers/API/JobController.php +++ b/projet/frontend/app/Http/Controllers/API/JobController.php @@ -25,7 +25,7 @@ class JobController extends Controller { $client = Client::whereIp($client)->firstOrFail(); } - return $client->jobs; + return $client->jobs()->limit(1000)->get(); } /** diff --git a/rapport/config.yaml b/rapport/config.yaml index 6af1e34cbcf03654914d00b4195c69ec1e3451f5..b5e9b051a51a5e46d231134fc6bd373d24f03131 100644 --- a/rapport/config.yaml +++ b/rapport/config.yaml @@ -11,8 +11,8 @@ orientation: logiciels et systèmes complexes year: 2020 sensei: Dr. Orestis Malaspinas mandator: -frontLogoSourceURL: https://unsplash.com/photos/nE2HV5AUXFo -dedicasse: "Chers collègues, chers professeurs, cher" +frontLogoSourceURL: https://fr.123rf.com/images-libres-de-droits/big_data.html?oriSearch=intelligence+artificielle&sti=logo6zdw2ks65qgc0q|&mediapopup=105817880 +dedicasse: "A tous ceux qui m'ont soutenu : merci." projectTitle: Thèse de Bachelor bibliography: my.bib csl: iso690.csl @@ -32,6 +32,8 @@ geometry: - bottom=25mm toc: true toc-depth: 2 +fontsize: 12pt +linestretch: 1.5 header-includes: | \usepackage{fontspec} \usepackage{graphicx} diff --git a/rapport/figs/front-logo.png b/rapport/figs/front-logo.png index 2b3e99a0651e3c92719779e324746ec56c219469..2686ae064312bec2dfa956045e851042b331247e 100644 Binary files a/rapport/figs/front-logo.png and b/rapport/figs/front-logo.png differ diff --git a/rapport/templates/default.latex b/rapport/templates/default.latex index ed277e2500305c85f76db6f45fd0049ae31f5b52..e4c6cce24f3e84d624a3f11484c8eb066e84082b 100644 --- a/rapport/templates/default.latex +++ b/rapport/templates/default.latex @@ -240,7 +240,7 @@ $endif$ % END OF CUSTOM PACKAGES % CUSTOM PACKAGES ROUTINES -\titleformat{\chapter}{\centering\normalfont\LARGE\bfseries}{\thechapter. Chapitre \thechapter :}{10pt}{\LARGE} +\titleformat{\chapter}[display]{\centering\normalfont\LARGE\bfseries}{\thechapter. Chapitre \thechapter :}{10pt}{\LARGE} \titleformat{\section}{\large\normalfont\bfseries}{\thesection. }{10pt}{\large} \titleformat{\subsection}{\normalfont\bfseries}{\hspace{.75cm}\alph{subsection}) }{10pt}{} \backgroundsetup{ @@ -323,19 +323,19 @@ $endif$ \vspace{8cm} } - \vspace{1cm} - \Large{Thèse de Bachelor présentée par}\\ + \vspace{5mm} + \large{Thèse de Bachelor présentée par}\\ \vspace{5mm} \textbf{\Large{$author$}}\\ \vspace{5mm} - \Large{pour l’obtention du titre Bachelor of Science HES-SO en}\\ + \large{pour l’obtention du titre Bachelor of Science HES-SO en}\\ \vspace{5mm} \textbf{\Large{Ingénierie des technologies de l’information avec orientation en \\$orientation$}} - \vspace{1cm} - \large{\textbf{Septembre $year$}}\\ - \vspace{1cm} + \vspace{5mm} + \textbf{Septembre $year$\\} + \vspace{5mm} \begin{tabular}{ p{6cm} } \multicolumn{1}{c}{Professeur-e HES responsable}\\ \multicolumn{1}{c}{\textbf{$sensei$}}\\ diff --git a/rapport/text/0-preface.md b/rapport/text/0-preface.md index da2aa6d2880e6d759366147c3712f5fe1ce971cc..ec3170861119b7eafdc571043a5a824370ca3fcd 100644 --- a/rapport/text/0-preface.md +++ b/rapport/text/0-preface.md @@ -30,6 +30,22 @@ Dans les limites du temps imparti, les tâches suivantes seront réalisées : # Résumé {-} -Ecrire le résumé ici +Rester informé sur Internet devient de plus en plus difficile. Ce réseau continue à s'étendre et à proposer une foule d'informations qui est impossible à absorber par un être humain. Une solution est le traitement et la récupération en masse de documents, qu'on surnomme _scraping_. Le but de ce projet est de proposer un logiciel de cette catégorie, modulaire nommé Inari. Ce dernier doit être capable de se connecter à tout site, et doit être utilisable par tous et toutes. Ce logiciel se basera sur l'infrastructure du même nom, crée lors du travail de semestre de septembre du même auteur. L'infrastructure existant déjà grâce au travail de semestre, ce travail se concentrera principalement sur le rapprochement entre l'utilisateur et l'architecture en implémentant une interface graphique et des outils de connexion à l'utilisateur. L'infrastructure sera améliorée de façon à intégrer l'interface graphique dans les composants Inari. +Pour vérifier si Inari répond à ces critères, ce travail étudiera les performances de récupération de documents sur différents sites. La capacité d'utilisation par un utilisateur final sera aussi étudiée. Les résultats semblent indiquer qu'un scraper peut accélérer au moins de deux fois la récupération de documents par rapport à un humain. Au maximum, un gain de 1614% de vitesse a été observé. La vitesse d'Inari dépasse donc celle d'un humain même dans le pire des cas. La vitesse dépend non seulement du site mais aussi des paramètres appliqués à ce dernier : il a été observé que le site ralentit quand trop de documents se téléchargent. Au vu de sa vitesse et de sa capacité à être utilisé par un utilisateur quelconque, il est théoriquement possible à Inari d'être utilisé en entreprise. + +\begin{figure} + \vspace{.25cm} + \begin{center} + \includegraphics[width=6cm,height=6cm]{figs/front-logo.png} + \end{center} + \vspace{.5cm} +\end{figure} +\begin{tabular}{ p{3cm} p{1cm} p{1cm} p{6cm} } + \multicolumn{1}{l}{Candidat :}& & & \multicolumn{1}{l}{Professeur-e(s) responsable(s) :}\\ + \multicolumn{1}{l}{\textbf{Théo PIRKL}} & & & \multicolumn{1}{l}{\textbf{Dr Orestis Malaspinas}} \\ + \multicolumn{1}{l}{Filière d'études : ITI} & & & \multicolumn{1}{l}{} \\ + \multicolumn{1}{l}{} & & & \multicolumn{1}{l}{} \\ + \multicolumn{1}{l}{} & & & \multicolumn{1}{l}{} \\ +\end{tabular} \pagebreak \ No newline at end of file diff --git a/rapport/text/2-introduction.md b/rapport/text/2-introduction.md index ed20f8e6cdedc84a9983428f539681684c2fb29c..8fd84ec11135856d922d45d7ab779b648160d384 100644 --- a/rapport/text/2-introduction.md +++ b/rapport/text/2-introduction.md @@ -2,13 +2,12 @@ # Introduction {-} -Obtenir des informations, que ce soit sur Internet ou dans la vie réelle, devient de plus en plus difficile au fil des années. Les initiatives de données ouvertes, permettant la récupération simple et rapide de données, ne sont pas nombreuses. Rester à jour est un effort qui peut s'avérer titanesque. -L'homme étant enclin à faire des erreurs, une solution humaine ne convient pas sur le long terme : les données risquent d'être mal téléchargées. On peut se tourner vers l'informatique pour automatiser l'action répétitive qu'est de récupérer un document, mais il faut un système modulaire, capable de fonctionner sur n'importe quel site. -L'objectif de ce travail est de proposer un logiciel, que l'on nommera Inari (en référence à la divinité japonaise des récoltes), remplissant ces besoins. Il devra proposer suffisamment simple pour permettre à un utilisateur final de s'en servir. Ce travail se basera sur le travail de semestre ayant posé les bases pour un tel logiciel. Un intérêt scientifique et social est présent : d'une part, on peut mesurer l'efficacité d'un tel outil pour voir si oui ou non un tel logiciel peut accélérer la récupération de documents, et d'autre part, on peut trouver des applications pratiques où un individu a besoin de récupérer des informations en masse. De tels logiciels peuvent être utiles pour bien des professions, souvent en dehors de l'informatique : un système utilisable par des utilisateurs finaux serait un énorme plus dans un monde où bien des programmes sont inaccessibles au public du fait de leur complexité ([Matplotlib](https://matplotlib.org/), [Git](https://git-scm.com/), etc.) +Obtenir des informations sur Internet devient de plus en plus difficile au fil des années. Rester à jour est un effort qui peut s'avérer titanesque. S'il est nécessaire de récupérer de nombreux documents, l'homme ne convient pas car il risque de commettre des erreurs. L'informatique pourrait automatiser ces actions répétitives, il faut cependant un système modulaire, capable de fonctionner sur n'importe quel site. +L'objectif de ce travail est de proposer un logiciel nommé Inari remplissant ces besoins. Il devra proposer un système simple pour qu'un utilisateur final puisse s'en servir. Ce travail se basera sur le travail de semestre ayant posé les bases d'un tel logiciel. Un intérêt scientifique et social est présent : d'une part, on peut mesurer l'efficacité d'un tel outil pour voir si oui ou non un tel logiciel peut accélérer la récupération de documents, et d'autre part, on peut trouver des applications pratiques où un individu a besoin de récupérer des informations en masse. De tels logiciels peuvent être utiles pour bien des professions en dehors de l'informatique : un système utilisable par des utilisateurs finaux serait un énorme plus dans un monde où bien des programmes sont inaccessibles au public du fait de leur complexité. -Pour atteindre l'objectif, une étude des solutions existantes a été faite pour déterminer la forme idéale du logiciel; l'architecture de ce dernier a ensuite posée pour détailler son fonctionnement. Une fois son implémentation faite, des mesures ont été effectuée, de façon à déterminer la vitesse de traitement du logiciel, ainsi que si le logiciel peut théoriquement remplacer un être humain ou non. Le travail a été réalisé en s'inspirant des solutions actuelles, en s'orientant à travers des sites web généralistes comme Wired, Forbes, mais aussi des sites spécialisés dans la collecte de données automatisée comme Domo ou Octoparse. +Pour atteindre l'objectif de ce travail, une étude des solutions existantes a été faite; l'architecture de ce dernier a ensuite posée. Une fois l'implémentation faite, des mesures ont été effectuées. Cela a permis de déterminer la vitesse de traitement du logiciel, ainsi que si le logiciel peut remplacer un être humain ou non. Le travail a été réalisé en s'inspirant des solutions actuelles, en s'orientant à travers des sites web généralistes comme Wired, Forbes, mais aussi des sites spécialisés dans la collecte de données automatisée comme Domo ou Octoparse. -Cette thèse suivra donc le cheminement suivant : commencer par l'analyse des solutions actuelles en passant par les techniques employées, s'inspirer de ses dernières pour implémenter le logiciel dont la structure et le fonctionnement seront présentés; enfin, mesurer l'efficacité d'Inari sur plusieurs sites web bien différents, de façon à se donner une idée de sa performance. La vitesse d'un humain et celles d'Inari seront comparés, pour enfin conclure ce projet en tentant de déterminer si les objectifs fixés sont remplis. L'intégralité du code, des mesures et des fichiers de configurations sont disponible sur le serveur git de l'HEPIA[^0]. +Cette thèse suivra donc le cheminement suivant : analyser les solutions actuelles en étudiant les techniques employées, s'inspirer de ses dernières pour implémenter le logiciel dont la structure et le fonctionnement seront présentés; enfin, mesurer l'efficacité d'Inari sur plusieurs sites différents, de façon à mesurer sa performance. La vitesse d'un humain et celles d'Inari seront comparées, pour déterminer si les objectifs fixés sont remplis. L'intégralité du code, des mesures et des fichiers de configurations sont disponibles sur le serveur git de l'HEPIA[^0]. [^0]: Disponible à l'adresse https://githepia.hesge.ch/theopirkl/bachelor-scrapper-058 diff --git a/rapport/text/3-etude.md b/rapport/text/3-etude.md index a2967444edb2bf08c70adb60fa9af618d22c88a4..6555dc6235a94fe833d9abd225c80bdea77cf618 100644 --- a/rapport/text/3-etude.md +++ b/rapport/text/3-etude.md @@ -46,11 +46,11 @@ Cette méthode, très utilisée par les géants de l'Internet comme Google [@kos Trois grandes catégories de scrapers existent : -* Les solutions de type framework [^0]; +* Les solutions de type framework [^1]; * Les solutions payantes, nommées (+SAAS_a); * Les solutions payantes humaines. -[^0]: Un framework est un ensemble de composant permettant de poser les fondations d'un logiciel de façon à ne pas tout programmer de zéro. [@noauthor_framework_nodate] +[^1]: Un framework est un ensemble de composant permettant de poser les fondations d'un logiciel de façon à ne pas tout programmer de zéro. [@noauthor_framework_nodate] ## Comparaison des approches existantes diff --git a/rapport/text/4-conception.md b/rapport/text/4-conception.md index 0f7e97368e05dafc6d7811eb7361e1f8ebcd76de..44e499d243216a9c72d18974afec5a52304a3f73 100644 --- a/rapport/text/4-conception.md +++ b/rapport/text/4-conception.md @@ -41,15 +41,12 @@ En fonction des documents à télécharger et du workflow, il est parfois néces * Le mode _single_; * Le mode _bulk_. -Le mode _single_ permet, comme son nom l'indique, de lancer un workflow une fois de façon à récupérer un groupe de documents. Le mode _bulk_, quant à lui, permet de lancer une grande quantité de tâches en une seule fois. Cela peut s'avérer utile dans le cas où rentrer les informations nécessaires au lancement de chaque tâche prendrait trop de temps. La figure donne un exemple d'application du mode _bulk_. - -\begin{samepage} +Le mode _single_ permet, comme son nom l'indique, de lancer un workflow une fois de façon à récupérer un groupe de documents. Le mode _bulk_, quant à lui, permet de lancer une grande quantité de tâches en une seule fois. Cela peut s'avérer utile dans le cas où rentrer les informations nécessaires au lancement de chaque tâche prendrait trop de temps. La figure 2.2 donne un exemple d'application du mode _bulk_. \cimg{figs/bulk.png}{scale=.35}{Exemple d'application du mode bulk}{Source : créé par Théo PIRKL} Les informations entrées dans le mode bulk sont combinées avec les autres. Par exemple, dans l'image ci-dessous, une tâche sera lancée avec le paramètres month à 9, sid à 6307.9099 et year à 2017; une autre sera lancée avec les paramètres month à 10, sid à 6307.9099 et year à 2017. Toutes les combinaisons des paramètres rentrés sont alors convertis en tâche. Cette façon de faire permet de rentrer rapidement un nombre important de tâches. Afin d'éviter de charger le contrôleur inutilement, c'est le client qui calcule toutes les combinaisons. Le contrôleur, quant à lui, reçoit les tâches générées et se contente de les départager entre les clients Inari disponibles. -\end{samepage} ### Parallélisme @@ -62,7 +59,6 @@ Le multiprocessing permet de mettre à contribution chaque coeur du processeur s L'utilisation d'un pool de clients Inari, quant à elle, permet d'ajouter une couche de parallélisme : on pourrait comparer son utilisation à un multiprocessing de haut niveau, où tous les ordinateurs formeraient ensemble un seul processeur. Mais utiliser plusieurs ordinateur apporte aussi une redondance dans le traitement des documents. Dans le cas où un ordinateur hébergeant un client Inari venait à tomber en panne pendant un traitement, il est possible d'une part de relancer les tâches sur l'ordinateur une fois son fonctionnement restauré, ou entièrement sur un autre ordinateur. -\pagebreak ### Fonctionnement du workflow Le workflow se présente à l'utilisateur sous une forme de graphe unidirectionnel, où chaque noeud correspond à un module (ou action). Chaque noeud possède un nombre prédéterminé d'entrées et de sorties. Le graphe est unidirectionnel de façon à indiquer un ordre d'exécution. diff --git a/rapport/text/5-mesures.md b/rapport/text/5-mesures.md index 4f927d9b08ef39b1ca4ba04484185be4644c2fae..fb7cfbe6b8bcbec296122627b1dd93a1e1850f24 100644 --- a/rapport/text/5-mesures.md +++ b/rapport/text/5-mesures.md @@ -73,7 +73,7 @@ Six graphiques sont obtenus suite aux mesures (un graphique par environnement) : \end{samepage} -Le graphique A est la mesure la plus comparable à un être humain au vu du nombre de travailleurs. En partant du principe qu'un être humain récupère $50$ documents par minute, il faudrait alors $200$ minutes (soit trois heures et 20 minutes) pour récupérer $1000$ documents. En départageant la tâche en deux (en demandant à deux humains de récupérer chacun une moitié des $1000$ documents), il faudrait alors théoriquement[^1] $100$ minutes, c'est-à-dire une heure 40. +Le graphique A est la mesure la plus comparable à un être humain au vu du nombre de travailleurs. En partant du principe qu'un être humain récupère $50$ documents par minute, il faudrait alors $200$ minutes (soit trois heures et 20 minutes) pour récupérer $1000$ documents. En départageant la tâche en deux (en demandant à deux humains de récupérer chacun une moitié des $1000$ documents), il faudrait alors théoriquement[^2] $100$ minutes, c'est-à-dire une heure 40. Pour calculer le gain de performance, on prend le temps nécessaire à un humain et on le divise par le temps moyen observé sur chaque mesure : $Taux_{performance} = Temps_{humain}/Temps_{machine}$. Pour obtenir le pourcentage de gain de performance, il faut utiliser la formule suivante : @@ -94,7 +94,7 @@ Le graphique E semble confirmer que le modèle linéaire n'est pas adéquat. En Enfin, le graphique F indique un taux de performance de $3$, soit un pourcentage de $200\%$. -[^1]: Sans erreurs, sans hésitation, et sans arrêt. +[^2]: Sans erreurs, sans hésitation, et sans arrêt. Le contenu des documents sort du cadre de ce travail, toutefois l'analyse des taux de performances méritent d'être analysés de façon plus profonde. diff --git a/rapport/text/7-annexes.md b/rapport/text/7-annexes.md index 95f04ff5a19d4a9fa8bc29f58fd09ab503cbc5dc..818abc12ad5ad0e2670b24ebcf1a4dbfb80b1aaf 100644 --- a/rapport/text/7-annexes.md +++ b/rapport/text/7-annexes.md @@ -2,7 +2,66 @@ \newappendix{Installation d'un client Inari} +Pour installer le client Inari, certains logiciels sont prérequis. Il est recommandé d'utiliser Ubuntu ou Debian. La liste des logiciels a installer est la suivante : + +* Python 3.7 (la 3.8 est recommandée, mais les commandes ci-dessous utiliseront 3.7) +* Git +* Pip pour Python 3.7 (par défaut, pip est installé avec python sur les distributions populaires comme Debian ou Ubuntu) +* screen +* gcc + +La première étape consiste à télécharger le projet. + +Une fois le projet cloné, il faut lancer les commandes suivantes dans le dossier cloné : +``` +cd projet/agent +python3.7 -m pip install -r requirements.txt +``` + +Le client est installé. Il faut maintenant créer un fichier de configuration dans le même dossier (`projet/agent`). Il suffit pour cela de faire la commande suivante : `cp example.env .env`. Il faut ensuite changer les réglages du fichier `.env` conformément à l'annexe _Fichier de configuration Inari_. + +Il ensuite possible de démarrer le client Inari en lançant la commande suivante depuis le dossier `projet/agent` : `python3.7 src/start.py --remote`. `--remote` permet d'autoriser les connexions depuis l'extérieur. + +Si Inari est lancé par SSH, il est recommandé de lancer Inari via screen. Pour cela, il suffit de taper la commande `screen`, puis de suivre les instructions du paragraphe précédent. + + \pagebreak \newappendix{Installation du contrôleur Inari} -\pagebreak \ No newline at end of file +Pour installer le contrôleur Inari, certains logiciels sont prérequis. Il est recommandé d'utiliser Ubuntu ou Debian. La liste des logiciels a installer est la suivante : + +* Python 3.7 (la 3.8 est recommandée, mais les commandes ci-dessous utiliseront 3.7) +* Git +* Pip pour Python 3.7 (par défaut, pip est installé avec python sur les distributions populaires comme Debian ou Ubuntu) +* screen +* gcc +* PHP 7.3 +* php-fpm +* php7.3-mysql +* composer +* npm + +Il faut lancer un serveur web pour accueillir la partie frontend du contrôleur. Il faut pour cela configurer Nginx sur le serveur. Un tutoriel présenté ici permet de configurer proprement Nginx : \url{https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-laravel-with-nginx-on-ubuntu-20-04}. **Il ne faut pas effectuer l'étape trois** mais plutôt effectuer la manoeuvre suivante depuis le dossier principal du projet : + +``` +cd projet/frontend +composer install +npm install +npm run prod +``` + +L'étape six du tutoriel ci-dessus n'est pas à effectuer non plus. + +Il reste maintenant à régler le fichier de configuration de la frontend Inari. Le fichier `.env` du dossier `frontend` contient les clés nécessaires au fonctionnement de l'application. Il faut changer `DB_HOST`, `DB_DATABASE`, `DB_USERNAME` et `DB_PASSWORD` en mettant respectivement l'IP du serveur MySQL, le nom, le nom d'utilisateur et le mot de passe de la base de données. + +Une fois cela fait, on peut exporter la base de données en utilisant la commande `php artisan migrate`. + +Le serveur web est déployé. Il est nécessaire de démarrer le serveur Inari. Il suffit pour cela de se rendre dans le dossier `projet/agent` et de lancer les commandes suivantes : + +`python3.7 -m pip install -r requirements.txt` + +Il ensuite possible de démarrer le serveur Inari en lançant la commande suivante depuis le dossier `projet/agent` : `python3.7 src/start.py --server`. `--server` permet de démarrer le serveur. + +Si Inari est lancé par SSH, il est recommandé de lancer Inari via screen. Pour cela, il suffit de taper la commande `screen`, puis de suivre les instructions du paragraphe précédent. + +\pagebreak diff --git a/rapport/text/ZZ-glossaire.tex b/rapport/text/ZZ-glossaire.tex index 0ca7769234e5c18d25e03b7477c18c1e5563cca4..010481d3775a6dcf8ff13b62cba2f22ab2fed4ea 100644 --- a/rapport/text/ZZ-glossaire.tex +++ b/rapport/text/ZZ-glossaire.tex @@ -11,3 +11,4 @@ \newacronym{REST_a}{REST}{Representational state transfer} \newacronym{VPN_a}{VPN}{Virtual Private Network} \newacronym{IP_a}{IP}{Internet Protocol} +\newacronym{FQDN_a}{FQDN}{Fully Qualified Domain Name}