Projet

Général

Profil

Wiki » Historique » Version 24

Mathias Rouan, 27/05/2021 11:34

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