Projet

Général

Profil

Wiki » Historique » Révision 24

Révision 23 (Mathias Rouan, 27/05/2021 10:23) → Révision 24/26 (Mathias Rouan, 27/05/2021 11:34)

h1. Wiki 

 h2. Guide d’installation de ManageChart 

 Réalisé le 19 mai 2021 par William Masson (william.masson@inrae.fr) 

 L’installation a été effectuée en tant que super-utilisateur sur une machine avec la 
 configuration suivante : 
 * Ubuntu 20.04.2 LTS 
 * Java 11.0.11 
 * Nginx 1.18.0 
 * Postgres 12.6 
 * PHP 7.4 
 * Composer 2.0.13 

 Avant d’installer ManageChart, bien vérifier que PHP, Composer et Java sont installés. 
 D’autres solutions peuvent être utilisées pour la base de données et le serveur (MySQL, 
 Apache, etc) 

 h3. Installer PHP 

 Installer PHP (+ certains modules) 
 <pre><code class="shell"> 
 apt install php-fpm 
 apt install -y php-{simplexml,intl,mbstring,zip,mysql,pgsql,sqlite3} 
 </code></pre> 

 Vérifier l’installation de PHP 
 <pre><code class="shell"> 
 php -v 
 systemctl status php7.4-fpm nginx 
 </code></pre> 

 h3. Installer Composer 

 Télécharger l’installeur 
 <pre><code class="shell"> 
 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
 </code></pre> 

 Vérifier l’installeur (la clé peut changer : https://getcomposer.org/download/) 
 <pre><code class="shell"> 
 php -r "if (hash_file('sha384', 'composer-setup.php') === 
 '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d 
 4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer 
 corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
 </code></pre> 

 Lancer l’installeur 
 <pre><code class="shell"> 
 php composer-setup.php --filename=composer 
 mv composer /usr/local/bin/composer 
 </code></pre> 

 Supprimer l’installeur 
 <pre><code class="shell"> 
 php -r "unlink('composer-setup.php');" 
 </code></pre> 

 Vérifier l’installation de Composer 
 <pre><code class="shell"> 
 composer -V 
 </code></pre> 

 h3. Installer ManageChart 

 Cloner le dépôt Git 
 Depuis le dossier /opt (ou autre, /var/www par exemple) : 
 <pre><code class="shell"> 
 git clone git://tucuxi.univ-brest.fr/managechart 
 </code></pre> 

 ou pour avoir les dernières fonctionnalités (version developpement) 

 <pre><code class="shell"> 
 git clone -b devel git://tucuxi.univ-brest.fr/managechart 
 </code></pre> 

 Installer les dépendances 
 <pre><code class="shell"> 
 cd managechart 
 rm composer.lock 
 composer install 
 </code></pre> 

 Il va y avoir une erreur, c’est normal. 

 Modifier le fichier UnitOfWork 
 Dans le fichier vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php, modifier les continue des lignes 
 2 636 et 2 665 en continue 2. 
 <pre><code class="shell"> 
 composer install 
 </code></pre> 

 Modifier le fichier PostgreSqlSchemaManager.php 
 Dans le fichier vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php, changer 
 la fonction _getPortableSequenceDefinition() par celle-ci : 
 <pre><code class="shell"> 
 protected function _getPortableSequenceDefinition($sequence) 
 { 
 if ($sequence['schemaname'] != 'public') { 
 $sequenceName = $sequence['schemaname'] . "." . $sequence['relname']; 
 } else { 
 $sequenceName = $sequence['relname']; 
 } 
 $version = floatval($this->_conn->getWrappedConnection()->getServerVersion()); 
 if ($version >= 10) { 
 $data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM pg_sequences 
 WHERE schemaname = \'public\' AND sequencename = '.$this->_conn->quote($sequenceName)); 
 } else { 
 $data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM ' . $this- 
 >_platform->quoteIdentifier($sequenceName)); 
 } 
 return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']); 
 } 
 </code></pre> 

 Changer les droits sur le cache et les logs 
 <pre><code class="shell"> 
 chown www-data:www-data -R app/cache app/logs 
 </code></pre> 

 Créer le dossier privateKey 
 <pre><code class="shell"> 
 mkdir src/Mc/EncryptBundle/Resources/privateKey 
 chown www-data:www-data -R src/Mc/EncryptBundle/Resources/privateKey 
 </code></pre> 

 Compiler les fichiers CSS et JS (nécessite Java) 
 <pre><code class="shell"> 
 php app/console assets:install web/ --symlink 
 php app/console assetic:dump --env=prod 
 </code></pre> 

 Créer la base de données (nécessite PostgreSQL) 
 <pre><code class="shell"> 
 sudo -u postgres psql 
 </code></pre> 
 <pre><code class="sql"> 
 create database db_managechart_prod; 
 create user u_managechart_prod with encrypted password 'XXXXXXXXXXXXXXXX'; 
 grant all privileges on database db_managechart_prod to u_managechart_prod; 
 alter database db_managechart_prod owner to u_managechart_prod; 
 \q 
 </code></pre> 

 Modifier le fichier parameters.yml 
 Dans le fichier app/config/parameters.yml, modifier les lignes database_name, database_user et 
 database_password avec les informations de l’étape précédente. 

 Créer les tables de la base de données 
 <pre><code class="shell"> 
 php app/console doctrine:schema:update --dump-sql (pour voir les modifications) 
 </code></pre> 

 Si la commande précèdente ne marche pas, modifier la valeur 127.0.0.1 de la ligne database_host du 
 fichier app/config/parameters.yml par la valeur localhost 
 <pre><code class="shell"> 
 php app/console doctrine:schema:update --force (pour appliquer les modifications) 
 </code></pre> 

 Créer un compte administrateur 
 <pre><code class="shell"> 
 php app/console fos:user:create 
 php app/console fos:user:promote avec le rôle ROLE_SUPER_ADMIN 
 </code></pre> 

 Créer les fichiers serveur (nécessite Nginx) 
 <pre><code class="shell"> 
 nano /etc/nginx/sites-available/managechart.conf 
 ln -fs /etc/nginx/sites-available/managechart.conf /etc/nginx/sites-enabled 
 </code></pre> 

 Exemple de fichier de configuration : 
 <pre><code class="yaml"> 
 server { 
   listen 8888; 
   listen [::]:8888; 
   server_name XXXXXXXXXXXX; 
   root /opt/managechart/web; 
   location / { 
     try_files $uri /app.php$is_args$args; 
   } 
   location ~ ^/app\.php(/|$) { 
     fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; 
     fastcgi_split_path_info ^(.+\.php)(/.*)$; 
     include snippets/fastcgi-php.conf; 
     fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; 
     fastcgi_param DOCUMENT_ROOT $realpath_root; 
     internal; 
   } 
   location ~ \.php$ { 
     return 404; 
   } 
   access_log /var/log/nginx/XXXXXXXXXXXX_access.log; 
   error_log /var/log/nginx/XXXXXXXXXXXX_error.log; 
 } 

 </code></pre> 

 Historique... 

 h2. Technologies 

 - Framework PHP Symfony : v2.8 
 - CSS : Bootstrap v3.3.6 
 - JS : Highcharts v6.2.0 (maj le 11/09/2020) 

 Guide d'installation : https://tucuxi.univ-brest.fr/attachments/download/768/Installation_05-2021_Ubuntu20_postgres_nginx.pdf 

 h2. Prérequis 

 - Java (pour la compilation des assets) 
 - Composer (https://getcomposer.org/download/) 
 - OpenSSL 
 - Serveur Web (Apache 2.2) 
 - PHP 5.6 
 - Base de Données (postgreSQL) 
 ou installation complète serveur associant Linux, Apache, PostgreSQL et PHP est généralement appelé serveur "LAPP": apt://php5-pgsql (https://doc.ubuntu-fr.org/php) 

 h2. Installation 

 déploiement depuis git : 
 - clone git://tucuxi.univ-brest.fr/managechart 
 - composer.lock à supprimer 
 - php composer.phar self-update 
 - proc_open à autoriser en commentant la ligne dans /etc/php5/conf.d/zz_recommended.ini.. 
 - timeout_redirection et mailer_port à commenter dans app/config/config.yml 
 - php composer.phar install 
 - paramater.yml à configurer en fonction de votre base de données 
 - php app/console assets:install web/ --symlink 
 - php app/console assetic:dump --env=prod  
 // -> erreur fos_user doctrincd ..e registry corrigée en bloquant la version de fosuser bundle à 2.0.0alpha3 

 - Ajouter une base de données  
 - php app/console doctrine:schema:update --dump-sql (pour voir les modifications) 
 - php app/console doctrine:schema:update --force      (pour appliquer les modifications) 

 - timeout_redirection et mailer_port à décommenter dans app/config/config.yml 
 - php app/console cache:clear --env=prod  
 - proc_open à bloquer 
 - l'utilisateur www-data:www-data doit avoir les droits sur les fichiers sources de managechart 


 h2. pistes pour la configuration virtualhost apache symfony 

 [[http://www.mist-labs.com/blog/installing-and-configuring-symfony2#.U8ZwwPl_uEB]] 
 [[http://fr.openclassrooms.com/informatique/cours/developpez-votre-site-web-avec-le-framework-symfony2/deployer-son-site-symfony2-en-production]] 


 h2. déploiement depuis tar : 

 tar zcf 
 copy 
 tar xf 
 rm -rf app/cache/* 
 remettre parameter.yml 
 chown -hR www-data:  
 service apache2 restart 
 TRUC PAS BEAU : les liens symb vers opt/lampp/xxxx