Installer une version local d'EtuUTT
Lorsque vous allez développer sur EtuUTT, vous allez rapidement avoir besoin d'une version à vous du site etu. Une version ou vous pourrez modifier ou casser à souhait. Pour cela nous allons voir deux méthode:
- La première à l'aide de Vagrant. Cette méthode est très pratique et très rapide, mais elle utilise une machine virtuelle, donc elle est un beaucoup moins performante que la suivante (en fonction de la puissance de votre pc, vous pourriez avoir entre 1 et 10 secondes de chargement par page).
- La seconde méthode consiste à installer EtuUTT directement sur votre machine. Vous aurez donc besoin d'installer PHP, Nginx, MariaDB, etc. Et configurer l'ensemble pour que ça fonctionne. Ca prend bien plus de temps que Vagrant, mais ça gaspillera moins de ressources et vous apprendrez aussi plus de choses sur les logiciels utilisé sur le serveur du site etu.
Table des matières
Installation avec Vagrant
Pour Windows
Téléchargez et installez les éléments suivants avec les options par défaut.
- Git : https://git-scm.com/download/win
- Vagrant : https://www.vagrantup.com/downloads.html
- VirtualBox platform packages et Oracle VM VirtualBox Extension Pack : https://www.virtualbox.org/wiki/Downloads
Il faut maintenant que vous choisissiez un endroit où vous allez mettre vos différents projets. Dans mon cas je cré un dossier dev dans documents. Ouvrez ce dossier avec l'explorateur Windows, et faites un clique droit dans le dossier puis "Git bash here..".
Une console devrait s'ouvrir. Entrez dans celle-ci la commande suivante :
git clone https://github.com/ungdev/EtuUTT
Une fois terminé, un nouveau dossier a été créé : EtuUTT. Naviguez donc dans ce dossier dans la console et nous allons lancer la machine virtuelle.
cd EtuUTT
vagrant up
L'opération prendra un certain temps (suffisamment pour l'installation et la configuration automatique de plusieurs logiciels sur un Ubuntu que Vagrant s'occupera de télécharger, donc ça dépend aussi de votre connexion internet). Il aura terminé, une fois que vous aurrez de nouveau l'invite de commande disponible pour une nouvelle commande.
Si tout se passe, bien, vous devriez pouvoir accéder à votre site étudiant sur http://localhost:8080
et à phpmyadmin sur http://localhost:8081
Utilisation de Vagrant (Tous les OS)
Si l'un des deux ports donnés ne marche pas, vérifiez avec la commande suivante, vers quel port, les ports 8080 et 8081 sont redirigés :
vagrant port
Sur EtuUTT, vous ne pouvez vous connecter que avec des comptes externes. Il y en a deux par défaut :
- Administrateur :
- login: admin
- mdp: admin
- Etudiant :
- login: user
- mdp: user
Pour vous connecter au phpmyadmin vous pouvez utiliser les identifiants suivants
- Login: etuutt
- Mdp: etuutt
- base: etuutt
Sachez que pour utliisez la commande vagrant, il faut toujours se trouver à la racine du projet. Sinon ça ne fonctionnera pas.
Voici quelques commandes qui pourront vous servir :
# Pour lancer (ou initialiser si elle n'existe pas) la machine virtuelle
vagrant up
# Pour arreter la machine virtuelle
vagrant halt
# Pour supprimer la machine virtuelle (vous perdrez votre base de donnée, mais pas votre code source)
vagrant destroy
# Pour "entrer" dans la console de la machine virtuel
vagrant ssh
En cas de dysfonctionnement, vous pouvez donc tout simplement faire
vagrant destroy
vagrant up
Pour modifier le code source du site etu, il suffit de le modifier avec votre editeur de code préféré, et il sera automatiquement syncronisé avec la VM.
Installation complète en local
Avant de commencer ce tutoriel, notez que toutes les commandes sont executés sous un Ubuntu 16.04. Si vous avez une autre distribution linux ou mac, il faudra que vous cherchiez sur google les équivalences. Si vous avez Windows, bienvenue dans la jungle, ça va pas ressembler du tout, je vous conseil de passer par Vagrant.
Ce dont vous avez besoin
Nous allons tout d'abord devoir installer différents outils :
- git : Le gestionnaire de version permettant de télécharger et mettre à jour le code source d'EtuUTT.
- composer : Le gestionnaire de projet de php permettant de télécharger les différentes dépendances du projet.
- php7.1 : Pour pouvoir executer le code php
- Nginx : Notre serveur web, qui va répondre aux requetes des clients et demander à php d'executer le code
- MariaDB 10.0 : Notre système de gestion de base de donnée
- PhpMyAdmin (optionnel) : Permet de facilement modifier la base de donnée.
Les logiciels sont choisis de tel sorte à être le plus proche possible de la configuration du serveur, mais vous êtes libre d'en prendre d'autres si vous le souhaitez (par exemple, EtuUTT fonctionne aussi très bien sous Apache).
Commençons donc par installer tout ce bazar :
sudo add-apt-repository ppa:ondrej/php # Nécéssaire pour utiliser php7.1
sudo apt update
sudo apt remove php7.0*
sudo apt remove apache2 # Pour ne pas qu'il y ait de conflits avec Nginx
sudo apt install git composer php7.1 php7.1-fpm php7.1-mbstring php7.1-curl php7.1-mysql php7.1-xml mariadb-server-10.1 phpmyadmin nginx
L'installateur vous demander "Web server to reconfigure automatically" : Ne cochez rien, appuyez sur tabulation puis entrée.
Puis "Configure database for phpmyadmin with dbconfig-common?" : "Yes"
Et quand il vous demandera un mot de passe, n'entrez rien.
Configuration du serveur web
Le but de notre installation est de pouvoir accéder à EtuUTT en tapant http://etu dans notre navigateur et d'accéder à phpmyadmin en tapant http://phpmyadmin.
Nous allons tout d'abord, vous allez indiquer à votre ordinateur qu'il faut qu'il se contact lui même lorsque votre navigateur demande ces deux URL. Pour cela, modifiez le fichier hosts avec les droits root : /etc/hosts
Et ajoutez y à la fin les lignes suivantes :
127.0.0.1 phpmyadmin
127.0.0.1 etu
127.0.0.1 etuutt
Maintenant que c'est fait, vous devriez pouvoir pinger ces différents domaines :
$ ping etu
PING etu (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.015 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.022 ms
Nous allons maintenant indiquer à Nginx, où se trouvent nos sites. Commençons par supprimer la configuration par défaut en exécutant les commandes suivantes :
sudo rm /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default
Créez ensuite le fichier de configuration pour EtuUTT : /etc/nginx/sites-available/etuutt.conf
server {
listen 80 default_server;
server_name etu;
server_name etuutt;
root /var/www/EtuUTT/web;
location / {
try_files $uri /app_dev.php$is_args$args;
}
location ~ ^/.+\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
Nous créons ensuite un fichier similaire mais pour PhpMyAdmin: /etc/nginx/sites-available/phpmyadmin.conf
server {
listen 80;
server_name phpmyadmin;
root /usr/share/phpmyadmin;
index index.php;
client_max_body_size 1000m;
location ~* \.php$
{
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
Pour que cela fonctionne, il faut ensuite activer les deux configurations :
sudo ln -s /etc/nginx/sites-available/etuutt.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/
Il ne nous reste plus qu'a relancer nginx :
sudo systemctl restart nginx
Et en allant sur http://phpmyadmin dans votre navigateur, vous devriez tomber sur la page de connexion de phpmyadmin.
La base de donnée
MariaDB dispose par défaut d'un compte admin, mais il n'est pas utilisable depuis PhpMyAdmin. il n'est utilisable que en ligne de commande. Nous allons donc vous créer un compte sur la base de donnée avec les accès admin pouvant se connecter depuis phpmyadmin.
sudo mysql -u root
CREATE USER 'root'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Vous devriez maintenant pouvoir vous connecter à mysql avec l'utilisateur admin et sans mot de passe :
mysql -u root
Maintenant, vous devriez pouvoir vous connecter depuis phpmyadmin.
Il faut maintenant créer la base de donnée d'EtuUTT (juste la base, la structure sera remplie automatiquement). Executez donc la requête suivante :
CREATE DATABASE etuutt;
exit
Cependant, par défaut, phpmyadmin refuse les connexions sans mot de passe. Pour l'autoriser, modifiez le fichier /etc/phpmyadmin/config.inc.php
et décommentez la ligne
$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
Téléchargement du code source
Nous allons maintenant télécharger avec l'aide de git, le projet EtuUTT dans le dossier /var/www/EtuUTT
# Nous nous déplaçons dans le dossier /var/www
cd /var/www
# Nous téléchargeons ensuite EtuUTT
# En utilisant les droits root car vous n'aurez pas le droit d'écrire dans ce dossier
sudo git clone https://github.com/ungdev/EtuUTT
# Afin de faciliter les commandes suivantes, nous faisons en sorte que le dossier vous appartienne
sudo chown -R $USER /var/www/EtuUTT
Installation des dépendances
C'est maintenant que composer, notre gestionnaire de dépendance rentre en jeu.
# Nous nous plaçons à la racine du projet EtuUTT
cd /var/www/EtuUTT
# Pour que composer puisse bien fonctionner avec notre projet
# Nous lui installons un plugin
composer global require "fxp/composer-asset-plugin:~1.2"
# Nous pouvons ensuite installer et configurer le projet
# L'installateur va vous poser quelques questions. Si vous ne connaissez pas la réponse laissez la valeur par défaut en appuyant sur entrée.
composer install
Remplissage de la base de donnée
Pour qu'EtuUTT fonctionne chez vous, il ne reste plus qu'a remplir la base de donnée. Je vous rassure, on ne vas pas le faire à la main. Il suffit de lancer les commandes suivantes
php bin/console doctrine:schema:update --force
php bin/console doctrine:fixtures:load -n
Droits des fichiers
Il se peut que vous ayez des problèmes de droit. Par exemple "Cache directory is not writeable". Vous pouvez réglez celà par les deux commandes suivantes. (à n'utiliser que pour un site de developpement)
chmod -R u+rw,g+rw /var/www/EtuUTT
chown -R www-data:sudo /var/www/EtuUTT
Utilisation de votre version locale
EtuUTT devrait maintenant être fonctionnel à l'adresse http://etu . Vous ne pouvez vous connecter que avec des comptes externes. Il y en a deux par défaut :
- Administrateur :
- login: admin
- mdp: admin
- Etudiant :
- login: user
- mdp: user
Page modifiable par Etudiant
Page visible par Etudiant et Exterieur