Sous une distribution type Ubuntu, installer les packages suivants :
sudo apt-get install git
sudo apt-get install tasksel
sudo tasksel install lamp-server php-cli
sudo apt-get install composer
sudo apt-get install phpmyadmin # optionnel mais recommandé
sudo apt-get install imagemagick php-imagick # Pour la carte des circonscriptions
sudo apt-get install php-gd # Pour les photos et plots sur certaines configs
Pour le parsing :
sudo apt-get install libwww-mechanize-perl libfile-path-perl
sudo apt-get install libxml2-dev libxslt-dev python-dev python-pip
sudo pip install bs4 lxml html5lib requests
-
Récupérer la version courante :
git clone https://github.com/regardscitoyens/nosdeputes.fr.git cd nosdeputes.fr
Ou bien, pour NosSénateurs.fr (puis remplacer
cpc
parsenat
pour la suite du tutoriel) :git clone https://github.com/regardscitoyens/nosdeputes.fr.git --branch nossenateurs.fr nossenateurs.fr cd nossenateurs.fr
-
Créer une base mysql pour le projet :
nom de la base : cpc login : cpc pass : MOT_DE_PASSE_A_CHOISIR host : localhost
Le plus simple étant de créer un utilisateur
cpc
avec ces paramètres dans phpMyAdmin (Privilèges/Ajouter un utilisateur) en sélectionnant "Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base" -
Préparer la configuration :
bash bin/init
Cette commande créera les fichiers suivants à adapter en fonction de votre installation :
-
config/databases.yml
: RemplacerMOT_DE_PASSE
par celui que vous avez choisi pour la base que l'on vient de créer (1 modification), etcpc
par le nom choisi pour la base et son utilisateur si nécessaire (2 modifications)`. -
config/app.yml
: Adapter la configuration en fonction de la législature traitée.
-
-
Installer symfony et préparer l'instance nosdeputés :
make all
Cette commande installera symfony dans
lib/vendor
et ajoutera les fichiers suivants éventuellement à ajuster :-
apps/frontend/config/factories.yml
: Ajuster la configuration uniquement pour optimiser la production (voir section dédiée). -
bin/db.inc
: AdapterMYSQLID
,DBNAME
,PATH_APP
etLEGISLATURE
comme pour les précédents fichiers.
-
-
Préparer l'environnement de travail php symfony :
La commande suivante réinitialise la structure de la base de données (et la vide si nécessaire) :
php symfony doctrine:build --all --no-confirmation
-
Charger des données :
-
Télécharger le dernier dump de la base de données :
- pour NosDéputés.fr : https://www.regardscitoyens.org/telechargement/donnees/nosdeputes.fr/
- pour NosSénateurs.fr : https://www.regardscitoyens.org/telechargement/donnees/nossenateurs.fr/
-
Importer le dump dans mysql. Un prompt vous demandera le mot de passe défini plus tôt :
tar xzvf DATE_A_ADAPTER_nosdeputes.fr_donnees.tgz mysql -u cpc -p --default-character-set=utf8 cpc < nosdeputes.fr_donnees/data.sql # ou zcat DATE_A_ADAPTER_nosdeputes.fr_donnees.tgz | mysql -u cpc -p --default-character-set=utf8 cpc
-
-
Nettoyer le cache :
php symfony cc
Si vous ne souhaitez pas mettre en place un environnement de production, vous pouvez sauter cette étape.
-
Copier et adapter la configuration apache :
sudo cp config/vhost.sample /etc/apache2/sites-enabled/001-cpc sudo nano /etc/apache2/sites-enabled/001-cpc
Changer
/home/cpc/project
pour le chemin vers votre configuration comme précédemment (4 modifications). -
Activer les mods rewrite et headers d'Apache
sudo a2enmod rewrite sudo a2enmod headers
-
Pour accéder en local à votre instance de développement sur my.cpc.regardscitoyens.org :
Ajouter cette ligne au fichier
/etc/hosts
(sudo) :127.0.0.1 my.cpc.regardscitoyens.org
-
Redémarrer apache :
sudo service apache2 restart
Sans passer par Apache, vous pouvez lancer un serveur web léger en tapant php -S 127.0.0.1:8000 -t web
dans le dossier nosdeputes.fr/
.
Si vous avez installé un environnement de développement via Apache, l'adresse suivante devrait fonctionner : http://my.cpc.regardscitoyens.org/frontend_dev.php/
Si vous utilisez le déploiement simplifié : http://127.0.0.1:8000/frontend_dev.php/
L'utilisation de la page frontend_dev.php
vous permet de naviguer sur le site avec des informations de debug très pratiques pour le développement.
- Si à l'affichage de frontend_dev.php dans le navigateur, PHP dit qu'il n'a pas pu allouer assez de mémoire, augmenter la taille maximale de mémoire autorisée :
sudo nano /etc/php5/cli/php.ini
cherchez la ligne
memory_limit = 16M ; Maximum amount of memory a script may consume (16MB)
et mettez une valeur haute, par exemple
memory_limit = 128M ; Maximum amount of memory a script may consume (16MB)
- Si l'affichage de frontend_dev.php montre une requête SQL et dit qu'elle est "incompatible with sql_mode=only_full_group_by", il faut désactiver ce mode dans SQL, voir par exemple ici.
N'hésitez pas à nous contacter ou laisser une issue pour tout problème rencontré.
Solr est le moteur de recherche utilisé dans le projet. Il s'installe sur un moteur de servlet (jetty, tomcat, ...). Cette section décrit le déploiement avec tomcat6 dans le cadre du projet.
Si vous n'avez pas besoin du moteur de recherche interne au site web, vous pouvez sauter cette étape.
-
Installer tomcat6 :
sudo aptitude install tomcat6
-
Préparer le dossier d'accueil des données Solr :
- Remplacer le chemin du dossier
dataDir
dans le fichier de configuration de solrlib/vendor/SolrServer/solr/conf/solrconfig.xml
:
<dataDir>/MON/REPERTOIRE/lib/vendor/SolrServer/solr/data</dataDir>
- Remplacer le chemin du dossier
-
S'assurer que ce répertoire data soit accessible en écriture par l'utilisateur tomcat6 (ou tomcatXX suivant votre version de Tomcat) :
sudo chmod g+w /MON/REPERTOIRE/lib/vendor/SolrServer/solr/data sudo chown tomcat6 /MON/REPERTOIRE/lib/vendor/SolrServer/solr/data
-
Brancher solr avec Tomcat en créant le fichier
solr_nosdeputes.xml
(ousolr_nossenateur.xml
) dans/etc/tomcat6/Catalina/localhost/
contenant :<Context docBase="/MON/REPERTOIRE/lib/vendor/SolrServer/webapps/solr.war" debug="0" crossContext="true" > <Environment name="solr/home" type="java.lang.String" value="/MON/REPERTOIRE/lib/vendor/SolrServer/solr" override="true" /> </Context>
-
Redémarrer tomcat :
sudo /etc/init.d/tomcat6 restart
Solr sera alors joignable sur le port 8080 à l'url tomcat définie, par exemple : http://localhost:8180/solr_nosdeputes/
-
Configurer symfony pour utiliser solr dans
config/app.yml
:solr: port: 8080 url: /solr_nosdeputes (ou /solr_nossenateurs)
L'url correspond au nom du fichier de configuration tomcat6 créé sans son suffixe
.xml
.Puis nettoyer le cache de symfony :
php symfony cc
Pour le passage en production, un certain nombre d'optimisations sont activables depuis apps/frontend/config/factories.yml
.
Pour utiliser memcache comme outil de cache au lieu de l'usage de fichiers, décommentez et ajustez le port de la section dédiée dans apps/frontend/config/factories.yml :
# Memcache
# (uncomment and setup to use memcache)
view_cache:
class: sfMemcacheCache
param:
host: localhost
port: 11211
persistent: true
Certains services de mail, ralentissent voire bloquent les envois de mails massif. C'est par défaut le cas de exim
qui préfère les envois de pas plus de 10 mails par connexion tcp. Pour activer, le mode spool pour l'envoi des mail, il faut modifier la configuration comme suit en commentant la section "Regular mail handling" et en décommentant la section "Pool mail handling" dans apps/frontend/config/factories.yml
:
mailer:
param:
# Regular mail handling
# delivery_strategy: realtime
# Pool mail handling
# (to avoid rate limitations with stronger user)
delivery_strategy: spool
spool_class: Swift_FileSpool
spool_arguments:
Swift_FileSpool: %SF_ROOT_DIR%/data/mails