YesWiki
YesWiki est une solution logicielle libre permettant de déployer simplement un wiki sur un serveur Web. YesWiki est caractérisé par son aspect collaboratif et son accesibilité, chacun pouvant, si il y est autorisé, modifier le contenu d'une page par un simple double clic.
YesWiki peut également prendre la forme d'un CMS (système de gesiton de contenu) à l'instar de Wordpress. Un comparatif de ces deux solutions est d'ailleurs disponible via ce lien.
Pour cette instalation, nous utiliseront la distribution Linux Debian 10. Un guide d'installation de cette dernière est disponible à ce lien.
Installation et configuration serveur
Un serveur Web est un service permettant de répondre à des interractions sur un réseau internet ou externe, généralement internet.Pour ce faire, les serveurs Web utilisent principalement le protocole HTTP, permettant le transfert de fichiers entre un serveu et les utilisateurs dudit serveurs, généralement appelés clients.
Si vous n'avez pas de logiciel serveur installé sur votre machine, il vous faudra, pour ce tutoriel, choisir entre Apache et Nginx, et non pas d'installer les deux. Un comparatif entre ces deux solutions logicielles est disponible ici.
Installation Nginx
Installation du serveur Web :
- Apache
Cacher les en-têtes liées au serveur
/etc/apache2/conf-available/security.conf
ServerSignature Off
ServerTokens Prod
Activer un virtualhost :
Les Headers de sécurité
- Nginx
Régler le pare-feu (écoute uniquement sur les ports 80 et 443)
Cacher les en-têtes liées au serveur
Infos serveurs
Headers (https://scotthelme.co.uk/hardening-your-http-response-headers/#server, observatory.mozilla.org)
Apache : Header always set Header_name 'Header_value'
Nginx : add_header Header_name 'Header_value' always;
- Content Security Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'"
- Strict-Transport-Security "max-age=31536000; includeSubdomains" (à définir dans backend)
- X-Frame-Options "SAMEORIGIN"
- X-Xss-Protection "1; mode=block"
- X-Content-Type-Options "nosniff"
Lorsque vous hébergez vous même votre propre serveur, il est vivement recommandé de mettre en place un pare-eu. En effet, ce sytème de sécurité permet de rendre votre service accessible qu'aux utilisateurs agrées, tout en vous protégeant de l'execution de commandes indésirables.
Nous utiliserons ici ufw, un outil de configuration simplifié du pare-feu Netfliter :
Afin de rendre votre service accesible depuis l'exterieur de votre structure, nous allons procéder à une ouverture de ports. Un port est comparable à une porte permettant au monde exterieur d'accèder à votre serveur via votre routeur ou box internet. Par sécurité, ces ports sont fermés par défaut, il faut donc les ouvrir vair l'interface d'aministration de votre box ou routeur. Malheureusement, la méthode d'ouverture de ces ports diffère en fonction de chaques forunisseur d'accès internet (SFR, Orange, Free...)...
Cependant, une recherche internet du type "ouverture ports box" suvit du nom de votre fournisseur internet devrait vous permettre de trouver la marche à suivre 😉.
Il vous faudra donc préalablement ouvrir le port 80 sur votre box ou routeur via les protocole TCP et UDP, pour rediriger les utilisateurs externes vers l'adesse IP de votre serveur, adresse qui est en quelque sorte son numéro d'identification internet. Cette adresse IP peut-être récupérée en lançant la commande suivante :
Ce qui nous donne quelque chose ressemblant à ceci:
L'adresse IP est ci dessus surlignée en jaune. Nous pouvons faire en sorte que le parre feux accepte les requètes des utilisateurs passant par le port 80 ainsi que les requètes provenant du protocole HTTP :
On active ufw au démarage du serveur :
Vous pouvez vérifier les changements en exécutant :
Le résultat de cette commande vous montrera via ces quelques lignes lignes que les trafics exterieurs passant par le port 80 et via le protocole de communication HTTP est désormais autorisé :
Vous pouvez maintenant vérifier que votre serveur est opérationnel en tapant dans la bare d'URL de votre moteur de recherche l'adresse IP que vous avez précédement récupéré, ce qui devrait nous donner :
Si c'est le cas, félicitation ! Votre serveur Ngnix est désormais opérationnel 😁.
- Apache
apt install apache2
curl localhost
Cacher les en-têtes liées au serveur
/etc/apache2/conf-available/security.conf
ServerSignature Off
ServerTokens Prod
Activer un virtualhost :
Les Headers de sécurité
- Nginx
apt install nginx
curl localhost
Régler le pare-feu (écoute uniquement sur les ports 80 et 443)
Cacher les en-têtes liées au serveur
Infos serveurs
sed -i 's/\# server_tokens/server_tokens/' /etc/nginx/nginx.conf
Headers (https://scotthelme.co.uk/hardening-your-http-response-headers/#server, observatory.mozilla.org)
Apache : Header always set Header_name 'Header_value'
Nginx : add_header Header_name 'Header_value' always;
- Content Security Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'"
- Strict-Transport-Security "max-age=31536000; includeSubdomains" (à définir dans backend)
- X-Frame-Options "SAMEORIGIN"
- X-Xss-Protection "1; mode=block"
- X-Content-Type-Options "nosniff"
Lorsque vous hébergez vous même votre propre serveur, il est vivement recommandé de mettre en place un pare-eu. En effet, ce sytème de sécurité permet de rendre votre service accessible qu'aux utilisateurs agrées, tout en vous protégeant de l'execution de commandes indésirables.
Nous utiliserons ici ufw, un outil de configuration simplifié du pare-feu Netfliter :
sudo apt-get install ufw
Afin de rendre votre service accesible depuis l'exterieur de votre structure, nous allons procéder à une ouverture de ports. Un port est comparable à une porte permettant au monde exterieur d'accèder à votre serveur via votre routeur ou box internet. Par sécurité, ces ports sont fermés par défaut, il faut donc les ouvrir vair l'interface d'aministration de votre box ou routeur. Malheureusement, la méthode d'ouverture de ces ports diffère en fonction de chaques forunisseur d'accès internet (SFR, Orange, Free...)...
Cependant, une recherche internet du type "ouverture ports box" suvit du nom de votre fournisseur internet devrait vous permettre de trouver la marche à suivre 😉.
Il vous faudra donc préalablement ouvrir le port 80 sur votre box ou routeur via les protocole TCP et UDP, pour rediriger les utilisateurs externes vers l'adesse IP de votre serveur, adresse qui est en quelque sorte son numéro d'identification internet. Cette adresse IP peut-être récupérée en lançant la commande suivante :
sudo ip a
Ce qui nous donne quelque chose ressemblant à ceci:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if152: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 8e:fb:71:1f:fa:61 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.1.228/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 72407sec preferred_lft 72407sec
inet6 fe80::8cfb:71ff:fe1f:fa61/64 scope link
valid_lft forever preferred_lft forever
L'adresse IP est ci dessus surlignée en jaune. Nous pouvons faire en sorte que le parre feux accepte les requètes des utilisateurs passant par le port 80 ainsi que les requètes provenant du protocole HTTP :
sudo apt install ufw
sudo ufw allow 80/tcp
sudo ufw allow 80/udp
sudo ufw allow 'Nginx HTTP'
On active ufw au démarage du serveur :
sudo systemctl enable ufw
sudo ufw enable
Vous pouvez vérifier les changements en exécutant :
sudo ufw status
Le résultat de cette commande vous montrera via ces quelques lignes lignes que les trafics exterieurs passant par le port 80 et via le protocole de communication HTTP est désormais autorisé :
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
80/udp ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
80/udp (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Vous pouvez maintenant vérifier que votre serveur est opérationnel en tapant dans la bare d'URL de votre moteur de recherche l'adresse IP que vous avez précédement récupéré, ce qui devrait nous donner :
Si c'est le cas, félicitation ! Votre serveur Ngnix est désormais opérationnel 😁.
Installation Apache
Nous commençons par réaliser une mise à jour du système à l'aide du terminal via la commande apt update, suivi d'un apt install pour installer Apache ainsi que son module PHP, dont nopus verrons l'utilité plus tard:
L'on peux s'assurer qu'apache s'active au démarage grâce à la commande suivante
On peut au passage activer quelques fonctionalités d'Apache qui ous seront sans doute utiles plus tard :
Puis l'on redémare le serveur pour prendre en compte les changements :
Lorsque vous hébergez vous même votre propre serveur, il est vivement recommandé de mettre en place un pare-eu. En effet, ce sytème de sécurité permet de rendre votre service accessible qu'aux utilisateurs agrées, tout en vous protégeant de l'execution de commandes indésirables.
Nous utiliserons ici ufw, un outil de configuration simplifié du pare-feu Netfliter :
Afin de rendre votre service accesible depuis l'exterieur de votre structure, nous allons procéder à une ouverture de ports. Un port est comparable à une porte permettant au monde exterieur d'accèder à votre serveur via votre routeur ou box internet. Par sécurité, ces ports sont fermés par défaut, il faut donc les ouvrir vair l'interface d'aministration de votre box ou routeur. Malheureusement, la méthode d'ouverture de ces ports diffère en fonction de chaques forunisseur d'accès internet (SFR, Orange, Free...)...
Cependant, une recherche internet du type "ouverture ports box" suvit du nom de votre fournisseur internet devrait vous permettre de trouver la marche à suivre 😉.
Il vous faudra donc préalablement ouvrir le port 80 sur votre box ou routeur via les protocole TCP et UDP, pour rediriger les utilisateurs externes vers l'adesse IP de votre serveur, adresse qui est en quelque sorte son numéro d'identification internet. Cette adresse IP peut-être récupérer en lançant la commande suivante :
Ce qui nous donne quelque chose ressemblant à ceci:
L'adresse IP est ci dessus surlignée en jaune. Nous pouvons faire en sorte que le parre feux accepte les requètes des utilisateurs passant par le port 80 ainsi que les requètes provenant du protocole HTTP :
On active ufw au démarage du serveur :
Vous pouvez vérifier les changements en exécutant :
Le résultat de cette commande vous montrera via ces quelques lignes lignes que les trafics exterieurs passant par le port 80 et via le protocole de communication HTTP est désormais autorisé :
Vous pouvez maintenant vérifier que votre serveur est opérationnel en tapant dans la bare d'URL de votre moteur de recherche l'adresse IP que vous avez précédement récupéré, ce qui devrait nous donner :
Si c'est le cas, félicitation ! Votre serveur Apache est désormais opérationnel 😁.
sudo apt update
apt install apache2 libapache2-mod-php
L'on peux s'assurer qu'apache s'active au démarage grâce à la commande suivante
systemctl enable apache2
On peut au passage activer quelques fonctionalités d'Apache qui ous seront sans doute utiles plus tard :
a2enmod headers
a2enmod rewrite
a2enmod deflate
Puis l'on redémare le serveur pour prendre en compte les changements :
systemctl reload apache2
Lorsque vous hébergez vous même votre propre serveur, il est vivement recommandé de mettre en place un pare-eu. En effet, ce sytème de sécurité permet de rendre votre service accessible qu'aux utilisateurs agrées, tout en vous protégeant de l'execution de commandes indésirables.
Nous utiliserons ici ufw, un outil de configuration simplifié du pare-feu Netfliter :
sudo apt-get install ufw
Afin de rendre votre service accesible depuis l'exterieur de votre structure, nous allons procéder à une ouverture de ports. Un port est comparable à une porte permettant au monde exterieur d'accèder à votre serveur via votre routeur ou box internet. Par sécurité, ces ports sont fermés par défaut, il faut donc les ouvrir vair l'interface d'aministration de votre box ou routeur. Malheureusement, la méthode d'ouverture de ces ports diffère en fonction de chaques forunisseur d'accès internet (SFR, Orange, Free...)...
Cependant, une recherche internet du type "ouverture ports box" suvit du nom de votre fournisseur internet devrait vous permettre de trouver la marche à suivre 😉.
Il vous faudra donc préalablement ouvrir le port 80 sur votre box ou routeur via les protocole TCP et UDP, pour rediriger les utilisateurs externes vers l'adesse IP de votre serveur, adresse qui est en quelque sorte son numéro d'identification internet. Cette adresse IP peut-être récupérer en lançant la commande suivante :
sudo ip a
Ce qui nous donne quelque chose ressemblant à ceci:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if152: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 8e:fb:71:1f:fa:61 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.1.228/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 72407sec preferred_lft 72407sec
inet6 fe80::8cfb:71ff:fe1f:fa61/64 scope link
valid_lft forever preferred_lft forever
L'adresse IP est ci dessus surlignée en jaune. Nous pouvons faire en sorte que le parre feux accepte les requètes des utilisateurs passant par le port 80 ainsi que les requètes provenant du protocole HTTP :
sudo apt install ufw
sudo ufw allow 80/tcp
sudo ufw allow 80/udp
sudo ufw allow "Apache Full"
Il est possible que la comande "Apache Full" retourne l'erreur
Ensuite, il vous suffit de copier les quelques lignes suivantes dans le fichier :
Il vous suffira alors d'effectuer les deux commandes suivantes pour qu'ufw prenne en compte et active le script nouvellement créé :
Could not find a profile matching 'Apache Full'
. Dans ce cas, il nous faut créer un script permettant l'authorisation du trafic provenant du port 80 vers le serveur Apache, ce grâce à la commande suivante :nano /etc/ufw/applications.d/Apache_Full
Ensuite, il vous suffit de copier les quelques lignes suivantes dans le fichier :
[Apache Full]
title=<Web Server(HTTP,HTTPS)>
description=<Apache v2 is the next generation of the omnipresent Apache web server.>
ports=80/tcp|80/udp
Il vous suffira alors d'effectuer les deux commandes suivantes pour qu'ufw prenne en compte et active le script nouvellement créé :
ufw app update "Apache Full"
sudo ufw allow "Apache Full"
sudo systemctl enable ufw
sudo ufw enable
Vous pouvez vérifier les changements en exécutant :
sudo ufw status
Le résultat de cette commande vous montrera via ces quelques lignes lignes que les trafics exterieurs passant par le port 80 et via le protocole de communication HTTP est désormais autorisé :
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
80/udp ALLOW Anywhere
Apache Full ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
80/udp (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Vous pouvez maintenant vérifier que votre serveur est opérationnel en tapant dans la bare d'URL de votre moteur de recherche l'adresse IP que vous avez précédement récupéré, ce qui devrait nous donner :
Si c'est le cas, félicitation ! Votre serveur Apache est désormais opérationnel 😁.
Installation d'un système de gestion base de données
Une base de données est un ensemble d'informations ou données organisées en tableaux afin d'être facilement accessibles, gérées et mises à jour. Un système de gestion de base de données (SGBD) est un logiciel permettant de stocker, manipuler et accéder à ces données.Deux modèles de bases de données se détachent :
- les bases de données relationnelles. Elles sont constituées d’un ensemble de tableaux reliés entre eux par des relations. Au sein de ces tableaux, les données sont classés par catégories (ou attributs). Le langage standard pour manipuler ce genre de données est le Structured Query Langage (SQL). Parmi les plus connues, citons SQLite, Oracle, MySQL, MariaDB (fork de MySQL), PostgreSQL et Microsoft SQL Server.
- les bases de données NoSQL. Plus récentes, elles présentent une architecture distribuée et permettent la manipulation de volumes de données importants. Elles sont en plein essor dans le contexte du Big Data. On retiendra comme logiciels Cassandra, MongoDB, Voldemort, CouchDB et SimpleDB.
Installation du serveur de base de données MariaDB
MariaDB s'installe via le paquet mariadb-server
Par défaut, le seul compte utilisateur disponible dans MariaDB est le compte root, non protégé par mot de passe. Ce comportement n’étant pas sécurisé, nous allons lancer un script de configuration:
apt install mariadb-server
Par défaut, le seul compte utilisateur disponible dans MariaDB est le compte root, non protégé par mot de passe. Ce comportement n’étant pas sécurisé, nous allons lancer un script de configuration:
mysql_secure_installation
qui permet de :- changer le mot de passe au compte root de MariaDB ;
- empêcher les connexions anonymes ;
- désactiver les connexions distantes réalisées avec le compte root ;
- supprimer la base de test.
Installation et utilisation des clients
Pour pouvoir se connecter et administer la base de données du serveur MariaDB (resp. PostgreSQL) depuis un terminal, on installe le client correspondant
La connexion à MariaDB (resp. PostgreSQL) s'effectue à l'aide de la commande
où
Il est aussi possible d'utiliser mariadb (resp. psql) en mode non interactif, avec l'option
Il est aussi possible d'utiliser l'application web Adminer (anciennement PhpMyAdmin) pour manipuler les bases de données SQL gérées par SQLite, MariaDB et PostgreSQL. Il suffit pour cela de télécharger le fichier adminer.php sur un serveur Web (HTTP+PHP) et d'y faire pointer son navigateur Web.
En général, une application web requiert la création d'un compte utilisateur et d'une base de données dédiée. Ceci peut se faire depuis le client avec les requêtes SQL suivantes
où
apt install mariadb-client
(resp. apt install postgresql-client
)La connexion à MariaDB (resp. PostgreSQL) s'effectue à l'aide de la commande
mariadb -u db_user -D db_name -p
(resp. psql -U db_user -d db_name -W
)où
db_name
désigne le nom de la base de données et db_user le nom de l'utilisateur à utiliser.Il est aussi possible d'utiliser mariadb (resp. psql) en mode non interactif, avec l'option
-e
: mariadb -u db_user -D db_name -p -e "SQL_expression"
(resp. psql -U db_user -d db_name -W -c "SQL_expression"
`)Il est aussi possible d'utiliser l'application web Adminer (anciennement PhpMyAdmin) pour manipuler les bases de données SQL gérées par SQLite, MariaDB et PostgreSQL. Il suffit pour cela de télécharger le fichier adminer.php sur un serveur Web (HTTP+PHP) et d'y faire pointer son navigateur Web.
En général, une application web requiert la création d'un compte utilisateur et d'une base de données dédiée. Ceci peut se faire depuis le client avec les requêtes SQL suivantes
CREATE DATABASE db_name; CREATE USER 'db_user' IDENFIED BY PASSWORD 'password'; GRANT ALL PRIVILEGES ON db_name.* TO 'db_user'@localhost IDENTIFIED BY 'password' FLUSH PRIVILEGES;
où
db_name
désigne le nom de la base de données, db_user
le nom de l'utilisateur et password
le mot de passe utilisateur.Installation PHP
Un language de programation orienté serveur permet de générer des pages web dynamiquement en réponse aux actions du client. PHP est actuellement le langage le plus utilisé en production. A contrario d'une page statique dont le contenu est identique à chaque consultation, une page dynamique verra son contenu varier en fonction de différents paramètres (heure, nom de l'utilisateur, champs remplis, etc).
On peut commencer par installer le langage PHP
pour l'utiliser comme un langage de programmation traditionnel
ou pour exécuter des scripts
Pour les autres serveurs HTTP comme Nginx ou pour les sites à fort trafic, on utilise une interface appelée FPM (FastCGI Process Manager) permettant la communication entre un serveur Web et PHP, basée sur le protocole FastCGI
Il faut alors configurer le serveur Web pour lui spécifier le socket Unix ou TCP ou l'adresse IP avec lesquels communiquer pour utiliser PHP. Dans le cas d'un serveur Nginx, on rajoutera par exemple dans la directive server du fichier de Virtual Host les lignes suivantes
Infos FastCGI (PHP)
X-Powered-By fpm/php.ini -> expose_php = Off
Afin de vérifier que PHP fonctionne correctement avec notre serveur HTTP, on peut créer le fichier info.php à la racine Web de notre serveur (/var/www/html) avec le contenu
En consultant l'url <IP_adress>/info.php, on obtient alors la page suivante
Il est souvent nécessaire d'ajouter des fonctionnalités au langage PHP en ajoutant des modules. La liste des modules installés est disponible via la commande
Les documentations officielles des différents services Web indique en général la liste des modules requis ou recommandé pour leur fonctionnement. Si celles-ci sont incomplètes, il peut-être parfois nécessaire de parcourir les logs d'erreur du serveur Web pour détecter les modules en défaut.
Parmi les modules courants, nous pouvons citer la liste suivante, issue de la documentation francophone d'Ubuntu :
- php-apcu : fournit des fonctionnalités supplémentaires au système de cache implémenté nativement dans PHP (OPcache)
- php-curl : support de cURL, qui permet de se connecter et de communiquer avec d'autres serveurs en HTTP, HTTPS, FTP, gopher, telnet, DICT, file ou LDAP,
- php-gd : outil de traitement d'images,
- php-imagick : outil de traitement d'images,
- php-imap : implémentations des protocoles IMAP, NNTP, et POP3 pour les courriels,
- php-intl : fonctions d'internationalisation,
- php-json : implémente le format d'échange de données JavaScript Object Notation,
- php-ldap : permet la connexion et l'envoi de requêtes sur un annuaire LDAP,
- php-mbstring : implémente des jeux de caractères très grands pour certaines langues,
- php-mysql : support de MySQL et MariaDB
- php-xml : analyseur syntaxique XML (permet à PHP de "comprendre" du XML ou du HTML),
- php-zip :offre la possibilité de lire et d'écrire des archives compressées ZIP, et d'accéder aux fichiers et dossiers s'y trouvant.
Les modules s'activent par défaut lors de leur installation. Il est possible de forcer leur activation ou désactivation à l'aide des commandes
On peut commencer par installer le langage PHP
apt install php
pour l'utiliser comme un langage de programmation traditionnel
apt install php-cli
php -r 'echo "Hello World!";'
ou pour exécuter des scripts
echo '' > example.php
php -f example.php
Installation de PHP
Le serveur HTTP Apache interprète nativement le langage PHP en ajoutant le module libapache2-mod-phpapt install libapache2-mod-php
Pour les autres serveurs HTTP comme Nginx ou pour les sites à fort trafic, on utilise une interface appelée FPM (FastCGI Process Manager) permettant la communication entre un serveur Web et PHP, basée sur le protocole FastCGI
apt install php-fpm
Il faut alors configurer le serveur Web pour lui spécifier le socket Unix ou TCP ou l'adresse IP avec lesquels communiquer pour utiliser PHP. Dans le cas d'un serveur Nginx, on rajoutera par exemple dans la directive server du fichier de Virtual Host les lignes suivantes
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Infos FastCGI (PHP)
X-Powered-By fpm/php.ini -> expose_php = Off
Afin de vérifier que PHP fonctionne correctement avec notre serveur HTTP, on peut créer le fichier info.php à la racine Web de notre serveur (/var/www/html) avec le contenu
<?php
phpinfo();
En consultant l'url <IP_adress>/info.php, on obtient alors la page suivante
Modules de PHP
Il est souvent nécessaire d'ajouter des fonctionnalités au langage PHP en ajoutant des modules. La liste des modules installés est disponible via la commande
php -m
Les documentations officielles des différents services Web indique en général la liste des modules requis ou recommandé pour leur fonctionnement. Si celles-ci sont incomplètes, il peut-être parfois nécessaire de parcourir les logs d'erreur du serveur Web pour détecter les modules en défaut.
Parmi les modules courants, nous pouvons citer la liste suivante, issue de la documentation francophone d'Ubuntu :
- php-apcu : fournit des fonctionnalités supplémentaires au système de cache implémenté nativement dans PHP (OPcache)
- php-curl : support de cURL, qui permet de se connecter et de communiquer avec d'autres serveurs en HTTP, HTTPS, FTP, gopher, telnet, DICT, file ou LDAP,
- php-gd : outil de traitement d'images,
- php-imagick : outil de traitement d'images,
- php-imap : implémentations des protocoles IMAP, NNTP, et POP3 pour les courriels,
- php-intl : fonctions d'internationalisation,
- php-json : implémente le format d'échange de données JavaScript Object Notation,
- php-ldap : permet la connexion et l'envoi de requêtes sur un annuaire LDAP,
- php-mbstring : implémente des jeux de caractères très grands pour certaines langues,
- php-mysql : support de MySQL et MariaDB
- php-xml : analyseur syntaxique XML (permet à PHP de "comprendre" du XML ou du HTML),
- php-zip :offre la possibilité de lire et d'écrire des archives compressées ZIP, et d'accéder aux fichiers et dossiers s'y trouvant.
Les modules s'activent par défaut lors de leur installation. Il est possible de forcer leur activation ou désactivation à l'aide des commandes
phpenmod
et phpdismod
Installation de YesWiki
Création d'une base de donnée dédiée
Afin de pouvoir stocker et gérer gérer les données relatives aux utilisateurs, YesWiki a besoin d'une base de donnée dédiée. Nous allons créer cette dernière en entrant dans l'interface de MariaDB.
Nous pouvons désormais créer une base de donnée vierge, que nous appelerons ici "wiki" :
Maintenant que notre base de donnée est créée, nous allons créer un utilisateur pour cette base, en lui donnant tous les droits d'accès à celle-ci. N'oubliez pas de remplacer "nom_utilisateur" et "mot_de_passe" par le nom et le mot mot de passe que vous souhaitez accorder à ce futur utilisateur 😌.
Sous Linux, les logiciels serveurs utilisent un groupe d'utilisateur nommé "www-data". Afin que le Wiki puisse être correctement créé, il est nécessaire d'accorder les droits d'accès à ce groupe au dossier contenant votre wiki, commme ceci :
Votre base de donnée est désomais créée et prête à être utilisée par votre Wiki !
mysql
Nous pouvons désormais créer une base de donnée vierge, que nous appelerons ici "wiki" :
create database wiki;
Maintenant que notre base de donnée est créée, nous allons créer un utilisateur pour cette base, en lui donnant tous les droits d'accès à celle-ci. N'oubliez pas de remplacer "nom_utilisateur" et "mot_de_passe" par le nom et le mot mot de passe que vous souhaitez accorder à ce futur utilisateur 😌.
grant all privileges on wiki.* TO 'nom_utilisateur'@'localhost' identified by 'mot_de_passe';
Sous Linux, les logiciels serveurs utilisent un groupe d'utilisateur nommé "www-data". Afin que le Wiki puisse être correctement créé, il est nécessaire d'accorder les droits d'accès à ce groupe au dossier contenant votre wiki, commme ceci :
sudo chown -R www-data:www-data /var/www/html/doryphore
Votre base de donnée est désomais créée et prête à être utilisée par votre Wiki !
Téléchargement de YesWiki
Afin de télécharger la dernière version de YesWiki, prenez connaissance de la dernière version sortie en vous rendant sur ce lien.
Une fois que vous connaissez la dernière version, accèdez au dépot des différentes versions de Yeswiki ici.
Vous devriez arriver sur une page ressemblant à ceci :
Cliquez sur le dossier dont le nom correspond à la version que vous shouaitez installer. Nous utiliseront ici la version doryphore, le contennu du dossier étant :
Les fichiers qui nous intéressent sont les fichiers répondant au nom de "yeswiki-doryphore-date.zip".Il vous faudra le fichier ayant la date la plus récente.
Ouvrez maintenant un terminal sur votre machine qui hébergera le wiki, et placez vous dans le fichier qui sera la racine de votre wiki :
Vous allez maintenant pouvoir télécharger les fichiers d'installation de YesWiki. Pour ce faire, nous allons utiliser la commande wget, suivie de l'url menant vers le dépot de la version qui vous intéresse, complétée par le fichier "yeswiki-doryphore-date.zip" le plus récent, ce qui nous donne dans le cas présent :
Ce fichier étant une archive, nous devont extraire son contenu. Pour ce faire, nous allons installer et utiliser un logiciel nommé unzip :
Nous n'avons désormais plus besoin de l'archive, vous pouvez supprimer cette dernière :
Vous pouvez dors et déjà accèder à votre Wiki en entrant l'adresse IP dans la bare d'Urlde votre navigateur, suivi d'un "/" suivi du nom de la version du wiki, en l'occurence doryphore:
Votre wiki vous acceuillera avec une page de configuration :
Une fois sur cette page, il vous suffit de remplir les champs, les boutons "Aide" vous expliqueront comment 😁 .
Il faut juste savoir que le champ "Base de donnée MySQL" correspond au nom de la base de donnée que vous avez précédement créé, "Nom d'utilisateur MySQL" au au nom d'utilisateur que vous avez créé pour utiliser la base, et "Mot de passe MySQL" au mot de passe dudit utilisateur.
Après le remplissage de ces champs, cliquez sur "Continuer" et vous devrez normalement arriver sur cette page :
Tadam ! votre Wiki fraichement installé est prêt à être utilisé !
Une fois que vous connaissez la dernière version, accèdez au dépot des différentes versions de Yeswiki ici.
Vous devriez arriver sur une page ressemblant à ceci :
Cliquez sur le dossier dont le nom correspond à la version que vous shouaitez installer. Nous utiliseront ici la version doryphore, le contennu du dossier étant :
Les fichiers qui nous intéressent sont les fichiers répondant au nom de "yeswiki-doryphore-date.zip".Il vous faudra le fichier ayant la date la plus récente.
Ouvrez maintenant un terminal sur votre machine qui hébergera le wiki, et placez vous dans le fichier qui sera la racine de votre wiki :
sudo cd /var/www/html
Vous allez maintenant pouvoir télécharger les fichiers d'installation de YesWiki. Pour ce faire, nous allons utiliser la commande wget, suivie de l'url menant vers le dépot de la version qui vous intéresse, complétée par le fichier "yeswiki-doryphore-date.zip" le plus récent, ce qui nous donne dans le cas présent :
sudo wget https://repository.yeswiki.net/doryphore/yeswiki-doryphore-2020-05-27-1.zip
Ce fichier étant une archive, nous devont extraire son contenu. Pour ce faire, nous allons installer et utiliser un logiciel nommé unzip :
sudo apt install unzip
sudo unzip yeswiki-doryphore-2020-05-27-1.zip
Nous n'avons désormais plus besoin de l'archive, vous pouvez supprimer cette dernière :
sudo rm -r yeswiki-doryphore-2020-05-27-1.zip
Vous pouvez dors et déjà accèder à votre Wiki en entrant l'adresse IP dans la bare d'Urlde votre navigateur, suivi d'un "/" suivi du nom de la version du wiki, en l'occurence doryphore:
adresse_ip_du_serveur/doryphore
Votre wiki vous acceuillera avec une page de configuration :
Une fois sur cette page, il vous suffit de remplir les champs, les boutons "Aide" vous expliqueront comment 😁 .
Il faut juste savoir que le champ "Base de donnée MySQL" correspond au nom de la base de donnée que vous avez précédement créé, "Nom d'utilisateur MySQL" au au nom d'utilisateur que vous avez créé pour utiliser la base, et "Mot de passe MySQL" au mot de passe dudit utilisateur.
Après le remplissage de ces champs, cliquez sur "Continuer" et vous devrez normalement arriver sur cette page :
Tadam ! votre Wiki fraichement installé est prêt à être utilisé !
Et ensuite ?
Associer un nom de domaine
Pour le moment, votre Wiki n'est acessible que par l'adresse IP de la machine sur lequel il est implémenté. Au dela du fait que cette solution est loin d'être ergonomique, laisser apparaitre son adresse IP au yeux de tous est assz risqué...
La solution est de lier son adresse IP à ce que l'on appellle un nom de domaine, qui est un nom redirigeant les requètes des utilisateurs sur l'adresse IP.
A titre d'exemple, lorsque vous voulez aller sur Wikipededia, vous ne tapez pas son adresse IP dans la barre d'URL ou de recherche, vous tapez tout simplement... Wikipedia 🤷.
Vous pouvez obtenir un nom de domaine pour votre Wiki par différents prestataires, notament OVH.
La solution est de lier son adresse IP à ce que l'on appellle un nom de domaine, qui est un nom redirigeant les requètes des utilisateurs sur l'adresse IP.
A titre d'exemple, lorsque vous voulez aller sur Wikipededia, vous ne tapez pas son adresse IP dans la barre d'URL ou de recherche, vous tapez tout simplement... Wikipedia 🤷.
Vous pouvez obtenir un nom de domaine pour votre Wiki par différents prestataires, notament OVH.
Configuration SSL
Lorsque vous accèdez à certains sites, vous remarquerez que leur URL commence parfois (souvent) par HTTPS.l'HTTPS reprend le protocole HTTP tout en rajoutant une couche de sécurité nommé SSL. Cette couche permet nottament de chiffrer toutes les données échangées entre le client et le serveur, ce qui est préférable.
Afin d'ajouter cette couche, vous pouvez utiliser le service Certbot., proposant un certificat permttant l'activation du SSL sur votre site.
Afin d'ajouter cette couche, vous pouvez utiliser le service Certbot., proposant un certificat permttant l'activation du SSL sur votre site.
Serveur FTP
Il faut bien avouer que l'accès aux fichier du serveur et leur édition via le terminal est loin d'être ergonomique... de plus qe l'on ne peux pas y accèder à distance 😕.
Afin d'accèder au terminal de votre serveur depuis une autre machine, vous pouvez utiliser le protocole SSH, un tutoriel pour Debian est disponible ici.
Pour pouvoir accèder aux fichiers depuis une interface graphique et transférer des fichiers d'un d'ordinateur distant sur votre serveur, vous pouvez installer ce que l'on appelle un serveur FTP. Un tutoriel pour debian est disponible ici.
L'utilisation de ce protocole vous facilitera grandement la vie, notament pour les mises à jour de votre Wiki 😁.
Afin d'accèder au terminal de votre serveur depuis une autre machine, vous pouvez utiliser le protocole SSH, un tutoriel pour Debian est disponible ici.
Pour pouvoir accèder aux fichiers depuis une interface graphique et transférer des fichiers d'un d'ordinateur distant sur votre serveur, vous pouvez installer ce que l'on appelle un serveur FTP. Un tutoriel pour debian est disponible ici.
L'utilisation de ce protocole vous facilitera grandement la vie, notament pour les mises à jour de votre Wiki 😁.
Pour pouvoir accèder à vos fichiers depuis un réseau exterieur à celui sur lequel est connecté votre serveur, vous devrez procéder à une ouverture de ports de votre box ou routeurs internets. Par exemple, pour le SSH, le port utilisé par défaut est le port 22, et 21 pour le FTP.
Configuration des e-mails
- configurer un compte e-mail avec un relai
SMTP
- suivre l'aide suivante (https://yeswiki.net/?ReparerLesWikisQuiNEnvoientPasLesMails) pour enregistrer les paramètres
SMTP
dans le fichierwakka.config.php