-
Notifications
You must be signed in to change notification settings - Fork 14
Installation d'un environnement de développement
La première chose à faire avant de pouvoir développer sur le site étudiant est d'installer un environnement propre et pratique. Attention, cette page décris un environnement de développement et non un environnement de production. Merci donc de ne pas l'utiliser lors du déploiement du site, car cette installation ,'est ni sécurisée, ni optimisée.
Nous documentons deux types d'installations sur linux :
- Une très classique : Debian avec Apache comme serveur web
- Une plus atypique : Archlinux avec Nginx comme serveur web
On espère que vous trouverez votre bonheur peu importe votre installation (Oui, vous avez le droit d'utiliser Nginx sur Debian 😉). Si vous faites une installation sur Windows ou mac, nous vous encourageons à compléter cette documentation pour présenter la façon dont vous installer le site etu.
Afin de faciliter le développement, nous conseillons l'ajout d'un nom de domaine locale, pour rendre accessible votre version de développement du site etu via une url du type http://etuutt/
. Cela permettra de travailler sur ce projet, sans monopoliser le domaine localhost
.
Pour cela, modifiez le fichier /etc/hosts
, et ajoutez y la ligne suivante
127.0.0.1 etuutt
127.0.0.1 phpmyadmin
Nous avons aussi ajouté une ligne pour PhpMyAdmin, si vous ne souhaitez pas l'installer, vous pouvez ne pas la mettre.
Ajoutez aussi l'utilisateur qui va coder au groupe www-data
. Cela vous permettra de modifier les sources du site sans avoir de problèmes de droits.
sudo usermod -aG www-data [USERNAME] # Remplacez [USERNAME] par votre username
sudo apt-get install apache2
sudo systemctl enable apache2
sudo systemctl start apache2
Créez le fichier /etc/apache2/sites-available/010-etuutt.conf
avec le contenu suivant
<VirtualHost *:80>
ServerName etuutt
ServerAlias etuutt
DocumentRoot /var/www/etuutt/web
<Directory /var/www/etuutt/web>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<IfModule mod_php7.0.c>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
Require all granted
</FilesMatch>
</IfModule>
ErrorLog /var/log/apache2/etuutt_error.log
CustomLog /var/log/apache2/etuutt_access.log combined
</VirtualHost>
Activation du Vhost
sudo a2ensite 010-etuutt
sudo systemctl reload apache2
S'il n'y a pas d'erreurs lors du redémarrage d'Apache, alors nous pouvons passer à la suite !
Php7 n'est pas dispo sur debian par défaut, il faut donc un peut bidouiller.
# Passage en root
su
# Suppression de Php 5 s'il y a
systemctl stop php5-fpm
apt-get autoremove --purge php5*
# Ajout du dépot
echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list
wget -O- https://www.dotdeb.org/dotdeb.gpg | apt-key add -
apt update
# installation
apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-gd php7.0-mcrypt php7.0-ldap php7.0-curl
# Lancement de php-fpm
systemctl enable php7.0-fpm
systemctl start php7.0-fpm
Les modules installés s'active automatiqument. Il reste cependant un module à activer :
echo "; configuration for php iconv module
; priority=20
extension=iconv.so" > /etc/php/7.0/fpm/conf.d/20-iconv.ini
Redémarrez ensuite PHP-FPM
systemctl restart php7.0-fpm
S'il n'y a pas d'erreurs lors du redémarrage de php-fpm, alors nous pouvons passer à la suite !
apt install mysql-server # Vous pouvez ne pas mettre de mot de passe root
systemctl enable
systemctl start
PhpMyAdmin permet de modifier directement votre base de donnée depuis une interface web. Ce n'est pas nécessaire pour développer sur le site etu, mais c'est très utile d'avoir un client comme celui là.
apt install phpmyadmin
Créez le fichier de conf Apache2 suivant : /etc/apache2/sites-available/010-phpmyadmin.conf
<VirtualHost *:80>
ServerName phpmyadmin
ServerAlias phpmyadmin
<IfModule mod_php7.0.c>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
Require all granted
</FilesMatch>
</IfModule>
DocumentRoot /usr/share/phpmyadmin
</VirtualHost>
Modifiez ensuite /etc/phpmyadmin/config.inc.php
afin d'autoriser la connexion sans mot de passe en remplaçant
# décomentez
$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
Activez le vhost et redémarrez apache2
a2ensite 010-phpmyadmin
systemctl restart apache2
Vous pouvez enfin accéder à PhpMyAdmin avec l'identifiant root
en cliquant ici.
- Git : Permet de partager facilement les modifications du code d'EtuUTT
- Composer : Permet de gérer les dépendances d'EtuUTT et de les télécharger automatiquement
-
Bower : Permet de gèrer les assets comme les scripts javascript qui seront envoyés au client et de les télécharger automatiquement. Pour installer
bower
, il faut cependant installernpm
# Git
apt install git
# Composer
apt install curl
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# Bower
apt install npm
npm install -g bower
Tout d'abord nous allons récupérer le code source d'EtuUTT. Assurez vous de ne plus être en root.
sudo mkdir -p /var/www
cd /var/www
sudo git clone https://github.com/ungdev/EtuUTT.git etuutt
sudo chown -R www-data:www-data /var/www
sudo chmod g+rw -R /var/www
Installation des dépendances
cd /var/www/etuutt
composer install
nodejs /usr/local/bin/bower install
Si vous avez des problèmes de droits, redémarrez puis vérifiez à l'aide de la commande groups
que vous faites bien partie du groupe www-data
. Si ce n'est pas le cas, regardez la partie Système de cette doc.
Certains fichiers seront propres à toute configuration, ils ne sont donc pas sur Github, et donc pas dans le code source que vous avez téléchargé. Mais pas d'inquiétude, il y a des exemples que nous allons copier.
cd /var/www/etuutt
cp web/app.php.dev web/app.php # Porte d'entrée du site etu, en configuration développement (barre de debug symfony, etc.)
cp -R web/uploads.dist web/uploads/ # Dossier où sont uploadé tous les fichiers des utilisateurs
cp app/config/version.yml.dist app/config/version.yml # Fichier utilisé pour la prod, nous n'y toucherons pas.
cp app/config/parameters.yml.dist app/config/parameters.yml
Pour la configuration d'EtuUTT, modifiez le fichier app/config/parameters.yml
. Vous y trouverez vos paramètres de base de donnée, mais si vous avez suivis cette doc, vous n'avez pas à les modifier. Vous devez par contre remplacer
domain: etu.utt.fr
#par
domain: etuutt
Pour créer la base de donnée et sa structure, exécutez les commandes suivantes.
# Note: on peu pas utiliser doctrine:schema:create car https://github.com/doctrine/DoctrineBundle/issues/351
mysql --user=root --execute="CREATE DATABASE etuutt;"
php app/console doctrine:schema:update --force
Il faut maintenant générer et installer les assets.
php app/console assets:install
php app/console assetic:dump
Il ne nous reste plus qu'à remplir la base de donnée.
php app/console doctrine:fixtures:load # Ajoute en base des lignes d'exemple
php app/console etu:badges:import # Charge la liste des badges actuelle
php app/console etu:cities:import # Charge la liste des villes en france
# Charge la liste des UV depuis le guide des UVs
sudo apt install poppler-utils
php app/console etu:uv:import http://www.utt.fr/_resources/GuideUV2015-16_ebook.pdf?download=true
php app/console etu:uv:sync
# Uniquement sur le réseau local de l'UTT, vous pouvez charger la liste des etudiants
php app/console etu:users:sync
Ca y est, vous avec un EtuUTT qui fonctionne sur http://etuutt/ . Et vous pouvez normalement vous connecter avec des comptes extérieurs :
Compte administrateur
username: admin
mot de passe: admin
Compte utilisateur
username: user
mot de passe: user
Si ça ne marche pas, sachez que vous pouvez toujours créer un compte et lui donner des droits admin depuis la console.
Les logs de nginx et les erreurs PHP qui empêcheraient Symfony de fonctionner, sont disponible dans les journaux système. Pour les suivre (laissez un terminal de coté avec cette commande qui tourne) :
sudo journalctl -fu nginx # Le 'f' pour follow (suivre) et le 'u' pour filtrer juste ce qu'on veut
Afin de faciliter le développement, nous conseillons l'ajout d'un nom de domaine locale, pour rendre accessible votre version de développement du site etu via une url du type http://etuutt/
. Cela permettra de travailler sur ce projet, sans monopoliser le domaine localhost
.
Pour cela, modifiez le fichier /etc/hosts
, et ajoutez y la ligne suivante
127.0.0.1 localhost.localdomain etuutt
127.0.0.1 localhost.localdomain phpmyadmin
Nous avons aussi ajouté une ligne pour PhpMyAdmin, si vous ne souhaitez pas l'installer, vous pouvez ne pas la mettre.
Ajoutez aussi l'utilisateur qui va coder au groupe http
. Cela vous permettra de modifier les sources du site sans avoir de problèmes de droits.
sudo usermod -aG http [USERNAME] # Remplacez [USERNAME] par votre username
sudo pacman -S nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Afin d'avoir une installation plus propre, nous allons séparer les fichiers de conf de nginx dans un dossier. Nous allons donc ajouter le dossier /etc/nginx/conf.d
aux fichiers de conf de nginx.
sudo mkdir /etc/nginx/conf.d
Modifiez le fichier /etc/nginx/nginx.conf
et ajoutez la ligne suivante à la fin du bloc http{}
include conf.d/*.conf;`
Créez le fichier /etc/nginx/conf.d/etuutt.conf
avec le contenu suivant
server {
listen 80;
server_name etuutt;
root /var/www/etuutt/web;
location / {
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php-fpm/php-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;
}
}
Relancez Nginx
sudo systemctl restart nginx
S'il n'y a pas d'erreurs lors du redémarrage d'Nginx, alors nous pouvons passer à la suite !
sudo pacman -S php-fpm php php-mcrypt php-gd
suod systemctl enable php-fpm
sudo systemctl start php-fpm
Pour activer les modules nécéssaire au site etu, modifiez le fichier /etc/php/php.ini
. Décommettez-y les lignes suviantes :
extension=mcrypt.so
extension=mysqli.so
extension=pdo_mysql.so
extension=iconv.so
extension=ldap.so
extension=gd.so
Redémarrez ensuite PHP-FPM
sudo systemctl restart php-fpm
S'il n'y a pas d'erreurs lors du redémarrage de php-fpm, alors nous pouvons passer à la suite !
sudo pacman -S mariadb
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl enable mysqld
sudo systemctl start mysqld
PhpMyAdmin permet de modifier directement votre base de donnée depuis une interface web. Ce n'est pas nécessaire pour développer sur le site etu, mais c'est très utile d'avoir un client comme celui là.
sudo pacman -S phpmyadmin
Créez le fichier de conf nginx suivant : /etc/nginx/conf.d/phpmyadmin.conf
server {
listen 80;
server_name phpmyadmin;
root /usr/share/webapps/phpMyAdmin;
index index.php;
location ~* \.php$
{
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
Modifiez ensuite /etc/webapps/phpmyadmin/config.inc.php
afin d'autoriser la connexion sans mot de passe en remplaçant
$cfg['Servers'][$i]['AllowNoPassword'] = false;
// par
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Redémarrez enfin nginx
sudo systemctl restart nginx
Vous pouvez enfin accéder à PhpMyAdmin avec l'identifiant root
sans mot de passe en cliquant ici.
- Git : Permet de partager facilement les modifications du code d'EtuUTT
- Composer : Permet de gérer les dépendances d'EtuUTT et de les télécharger automatiquement
- Bower : Permet de gèrer les assets comme les scripts javascript qui seront envoyés au client et de les télécharger automatiquement
sudo pacman -S git bower php-composer
Tout d'abord nous allons récupérer le code source d'EtuUTT
sudo mkdir -p /var/www
cd /var/www
sudo git clone https://github.com/ungdev/EtuUTT.git etuutt
sudo chown -R http:http /var/www
sudo chmod g+rw -R /var/www
Installation des dépendances
cd /var/www/etuutt
composer install
bower install
Si vous avez des problèmes de droits, redémarrez puis vérifiez à l'aide de la commande groups
que vous faites bien partie du groupe http
. Si ce n'est pas le cas, regardez la partie Système de cette doc.
Certains fichiers seront propres à toute configuration, ils ne sont donc pas sur Github, et donc pas dans le code source que vous avez téléchargé. Mais pas d'inquiétude, il y a des exemples que nous allons copier.
cd /var/www/etuutt
cp web/app.php.dev web/app.php # Porte d'entrée du site etu, en configuration développement (barre de debug symfony, etc.)
cp -R web/uploads.dist web/uploads/ # Dossier où sont uploadé tous les fichiers des utilisateurs
cp app/config/version.yml.dist app/config/version.yml # Fichier utilisé pour la prod, nous n'y toucherons pas.
cp app/config/parameters.yml.dist app/config/parameters.yml
Pour la configuration d'EtuUTT, modifiez le fichier app/config/parameters.yml
. Vous y trouverez vos paramètres de base de donnée, mais si vous avez suivis cette doc, vous n'avez pas à les modifier. Vous devez par contre remplacer
domain: etu.utt.fr
#par
domain: etuutt
Pour créer la base de donnée et sa structure, exécutez les commandes suivantes.
# Note: on peu pas utiliser doctrine:schema:create car https://github.com/doctrine/DoctrineBundle/issues/351
mysql --user=root --execute="CREATE DATABASE etuutt;"
php app/console doctrine:schema:update --force
Il faut maintenant générer et installer les assets.
php app/console assets:install
php app/console assetic:dump
Il ne nous reste plus qu'à remplir la base de donnée.
php app/console doctrine:fixtures:load # Ajoute en base des lignes d'exemple
php app/console etu:badges:import # Charge la liste des badges actuelle
php app/console etu:cities:import # Charge la liste des villes en france
# Charge la liste des UV depuis le guide des UVs
sudo pacman -S poppler
php app/console etu:uv:import http://www.utt.fr/_resources/GuideUV2015-16_ebook.pdf?download=true
php app/console etu:uv:sync
# Uniquement sur le réseau local de l'UTT, vous pouvez charger la liste des etudiants
php app/console etu:users:sync
Ca y est, vous avec un EtuUTT qui fonctionne sur http://etuutt/ . Et vous pouvez normalement vous connecter avec des comptes extérieurs :
Compte administrateur
username: admin
mot de passe: admin
Compte utilisateur
username: user
mot de passe: user
Si ça ne marche pas, sachez que vous pouvez toujours créer un compte et lui donner des droits admin depuis la console.
Les logs de nginx et les erreurs PHP qui empêcheraient Symfony de fonctionner, sont disponible dans les journaux système. Pour les suivre (laissez un terminal de coté avec cette commande qui tourne) :
sudo journalctl -fu nginx # Le 'f' pour follow (suivre) et le 'u' pour filtrer juste ce qu'on veut