Projet

Général

Profil

Wiki » Historique » Version 25

Mathias Rouan, 27/05/2021 15:03

1 25 Mathias Rouan
h1. Guide d’installation de ManageChart
2 24 Mathias Rouan
3
Réalisé le 19 mai 2021 par William Masson (william.masson@inrae.fr)
4
5
L’installation a été effectuée en tant que super-utilisateur sur une machine avec la
6
configuration suivante :
7
* Ubuntu 20.04.2 LTS
8
* Java 11.0.11
9
* Nginx 1.18.0
10
* Postgres 12.6
11
* PHP 7.4
12
* Composer 2.0.13
13
14
Avant d’installer ManageChart, bien vérifier que PHP, Composer et Java sont installés.
15
D’autres solutions peuvent être utilisées pour la base de données et le serveur (MySQL,
16
Apache, etc)
17
18
h3. Installer PHP
19
20
Installer PHP (+ certains modules)
21
<pre><code class="shell">
22
apt install php-fpm
23
apt install -y php-{simplexml,intl,mbstring,zip,mysql,pgsql,sqlite3}
24
</code></pre>
25
26
Vérifier l’installation de PHP
27
<pre><code class="shell">
28
php -v
29
systemctl status php7.4-fpm nginx
30
</code></pre>
31
32
h3. Installer Composer
33
34
Télécharger l’installeur
35
<pre><code class="shell">
36
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
37
</code></pre>
38
39
Vérifier l’installeur (la clé peut changer : https://getcomposer.org/download/)
40
<pre><code class="shell">
41
php -r "if (hash_file('sha384', 'composer-setup.php') ===
42
'756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d
43
4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer
44
corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
45
</code></pre>
46
47
Lancer l’installeur
48
<pre><code class="shell">
49
php composer-setup.php --filename=composer
50
mv composer /usr/local/bin/composer
51
</code></pre>
52
53
Supprimer l’installeur
54
<pre><code class="shell">
55
php -r "unlink('composer-setup.php');"
56
</code></pre>
57
58
Vérifier l’installation de Composer
59
<pre><code class="shell">
60
composer -V
61
</code></pre>
62
63
h3. Installer ManageChart
64
65
Cloner le dépôt Git
66
Depuis le dossier /opt (ou autre, /var/www par exemple) :
67
<pre><code class="shell">
68
git clone git://tucuxi.univ-brest.fr/managechart
69
</code></pre>
70
71
ou pour avoir les dernières fonctionnalités (version developpement)
72
73
<pre><code class="shell">
74
git clone -b devel git://tucuxi.univ-brest.fr/managechart
75
</code></pre>
76
77
Installer les dépendances
78
<pre><code class="shell">
79
cd managechart
80
rm composer.lock
81
composer install
82
</code></pre>
83
84
Il va y avoir une erreur, c’est normal.
85
86
Modifier le fichier UnitOfWork
87
Dans le fichier vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php, modifier les continue des lignes
88
2 636 et 2 665 en continue 2.
89
<pre><code class="shell">
90
composer install
91
</code></pre>
92
93
Modifier le fichier PostgreSqlSchemaManager.php
94
Dans le fichier vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php, changer
95
la fonction _getPortableSequenceDefinition() par celle-ci :
96
<pre><code class="shell">
97
protected function _getPortableSequenceDefinition($sequence)
98
{
99
if ($sequence['schemaname'] != 'public') {
100
$sequenceName = $sequence['schemaname'] . "." . $sequence['relname'];
101
} else {
102
$sequenceName = $sequence['relname'];
103
}
104
$version = floatval($this->_conn->getWrappedConnection()->getServerVersion());
105
if ($version >= 10) {
106
$data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM pg_sequences
107
WHERE schemaname = \'public\' AND sequencename = '.$this->_conn->quote($sequenceName));
108
} else {
109
$data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM ' . $this-
110
>_platform->quoteIdentifier($sequenceName));
111
}
112
return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']);
113
}
114
</code></pre>
115
116
Changer les droits sur le cache et les logs
117
<pre><code class="shell">
118
chown www-data:www-data -R app/cache app/logs
119
</code></pre>
120
121
Créer le dossier privateKey
122
<pre><code class="shell">
123
mkdir src/Mc/EncryptBundle/Resources/privateKey
124
chown www-data:www-data -R src/Mc/EncryptBundle/Resources/privateKey
125
</code></pre>
126
127
Compiler les fichiers CSS et JS (nécessite Java)
128
<pre><code class="shell">
129
php app/console assets:install web/ --symlink
130
php app/console assetic:dump --env=prod
131
</code></pre>
132
133
Créer la base de données (nécessite PostgreSQL)
134
<pre><code class="shell">
135
sudo -u postgres psql
136
</code></pre>
137
<pre><code class="sql">
138
create database db_managechart_prod;
139
create user u_managechart_prod with encrypted password 'XXXXXXXXXXXXXXXX';
140
grant all privileges on database db_managechart_prod to u_managechart_prod;
141
alter database db_managechart_prod owner to u_managechart_prod;
142
\q
143
</code></pre>
144
145
Modifier le fichier parameters.yml
146
Dans le fichier app/config/parameters.yml, modifier les lignes database_name, database_user et
147
database_password avec les informations de l’étape précédente.
148
149
Créer les tables de la base de données
150
<pre><code class="shell">
151
php app/console doctrine:schema:update --dump-sql (pour voir les modifications)
152
</code></pre>
153
154
Si la commande précèdente ne marche pas, modifier la valeur 127.0.0.1 de la ligne database_host du
155
fichier app/config/parameters.yml par la valeur localhost
156
<pre><code class="shell">
157
php app/console doctrine:schema:update --force (pour appliquer les modifications)
158
</code></pre>
159
160
Créer un compte administrateur
161
<pre><code class="shell">
162
php app/console fos:user:create
163
php app/console fos:user:promote avec le rôle ROLE_SUPER_ADMIN
164
</code></pre>
165
166
Créer les fichiers serveur (nécessite Nginx)
167
<pre><code class="shell">
168
nano /etc/nginx/sites-available/managechart.conf
169
ln -fs /etc/nginx/sites-available/managechart.conf /etc/nginx/sites-enabled
170
</code></pre>
171
172
Exemple de fichier de configuration :
173
<pre><code class="yaml">
174
server {
175
  listen 8888;
176
  listen [::]:8888;
177
  server_name XXXXXXXXXXXX;
178
  root /opt/managechart/web;
179
  location / {
180
    try_files $uri /app.php$is_args$args;
181
  }
182
  location ~ ^/app\.php(/|$) {
183
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
184
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
185
    include snippets/fastcgi-php.conf;
186
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
187
    fastcgi_param DOCUMENT_ROOT $realpath_root;
188
    internal;
189
  }
190
  location ~ \.php$ {
191
    return 404;
192
  }
193
  access_log /var/log/nginx/XXXXXXXXXXXX_access.log;
194
  error_log /var/log/nginx/XXXXXXXXXXXX_error.log;
195
}
196 1 Mathias Rouan
197 24 Mathias Rouan
</code></pre>
198
199 25 Mathias Rouan
h1. Historique des documentations d'installation pour mémoire...
200 24 Mathias Rouan
201 1 Mathias Rouan
h2. Technologies
202 3 Mathias Rouan
203 21 William Masson
- Framework PHP Symfony : v2.8
204 16 Mathias Rouan
- CSS : Bootstrap v3.3.6
205 19 William Masson
- JS : Highcharts v6.2.0 (maj le 11/09/2020)
206 16 Mathias Rouan
207 23 Mathias Rouan
Guide d'installation : https://tucuxi.univ-brest.fr/attachments/download/768/Installation_05-2021_Ubuntu20_postgres_nginx.pdf
208
209 5 Mathias Rouan
h2. Prérequis
210 13 Anonyme
211 20 William Masson
- Java (pour la compilation des assets)
212
- Composer (https://getcomposer.org/download/)
213
- OpenSSL
214 17 Mathias Rouan
- Serveur Web (Apache 2.2)
215
- PHP 5.6
216 8 Mathias Rouan
- Base de Données (postgreSQL)
217 6 Mathias Rouan
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)
218 5 Mathias Rouan
219 3 Mathias Rouan
h2. Installation
220
221
déploiement depuis git :
222
- clone git://tucuxi.univ-brest.fr/managechart
223
- composer.lock à supprimer
224 9 Anonyme
- php composer.phar self-update
225 3 Mathias Rouan
- proc_open à autoriser en commentant la ligne dans /etc/php5/conf.d/zz_recommended.ini..
226 12 Anonyme
- timeout_redirection et mailer_port à commenter dans app/config/config.yml
227 10 Anonyme
- php composer.phar install
228 14 Anonyme
- paramater.yml à configurer en fonction de votre base de données
229 9 Anonyme
- php app/console assets:install web/ --symlink
230
- php app/console assetic:dump --env=prod 
231 3 Mathias Rouan
// -> erreur fos_user doctrincd ..e registry corrigée en bloquant la version de fosuser bundle à 2.0.0alpha3
232 15 Anonyme
233
- Ajouter une base de données 
234 20 William Masson
- php app/console doctrine:schema:update --dump-sql (pour voir les modifications)
235
- php app/console doctrine:schema:update --force    (pour appliquer les modifications)
236 1 Mathias Rouan
237
- timeout_redirection et mailer_port à décommenter dans app/config/config.yml
238
- php app/console cache:clear --env=prod 
239
- proc_open à bloquer
240 22 William Masson
- l'utilisateur www-data:www-data doit avoir les droits sur les fichiers sources de managechart
241 15 Anonyme
242
243 16 Mathias Rouan
h2. pistes pour la configuration virtualhost apache symfony
244 3 Mathias Rouan
245 16 Mathias Rouan
[[http://www.mist-labs.com/blog/installing-and-configuring-symfony2#.U8ZwwPl_uEB]]
246
[[http://fr.openclassrooms.com/informatique/cours/developpez-votre-site-web-avec-le-framework-symfony2/deployer-son-site-symfony2-en-production]]
247
248
249
h2. déploiement depuis tar :
250
251 3 Mathias Rouan
tar zcf
252
copy
253
tar xf
254
rm -rf app/cache/*
255
remettre parameter.yml
256
chown -hR www-data: 
257
service apache2 restart
258
TRUC PAS BEAU : les liens symb vers opt/lampp/xxxx