Installer une version local d'EtuUTT - Site étudiant de l'UTT

Ok, on a peut-être été un peu optimistes pour la date de sortie de la bêta du nouveau EtuUTT. Nous ne voulons pas publier la version que nous avons actuellement, même en bêta. On voudrait vous sortir une version un minimum propre, et que vous pourrez commencer à utiliser. Cette fois-ci, on ne va pas se donner de deadline, mais promis, ça arrive.

Logo du site Wiki UTT

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.

Installation avec Vagrant

Pour Windows

Téléchargez et installez les éléments suivants avec les options par défaut.

Si vous ne trouvez pas comment installer Oracle VM VirtualBox Extension Pack, regardez ce tutoriel

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

Dernière modification par Aurelien LABATE : 08/05/2017 22:00
Page modifiable par Etudiant
Page visible par Etudiant et Exterieur