Projet

Général

Profil

Competences techniques apache et drupal » Historique » Version 7

Julien Enselme, 29/05/2013 00:26
Réunion des informations à partir de de drupal6 vers drupal 7

1 1 Florent Torregrosa
{{toc}}
2
3 7 Julien Enselme
h1. Compétences techniques apache et drupal
4 1 Florent Torregrosa
5 7 Julien Enselme
h2. Différences majeures entre les distributions
6 1 Florent Torregrosa
7 7 Julien Enselme
apache2 -> httpd
8
service -> systemctl
9 1 Florent Torregrosa
10 7 Julien Enselme
h2. Installer et configurer Apache, phpmyadmin
11
12
# savoir installer un serveur apache et phpmyadmin (dépend de votre système)
13
# augmenter sa mémoire dédiée
14
# savoir ajouter/activer des modules pour le serveur apache (notamment le module mod rewrite pour les url-simplifiées) : <code>sudo a2enmod nom_du_module</code>
15
# avoir drush d'installer (peut-être présent dans les dépôts de votre distributions) et savoir où il est installé : which drush
16
# augmenter la taille maximale des fichiers pouvant être importés dans phpmyadmin (dans le(s) php.ini, la méthode suivante est basée sur les systèmes basés sur debian. À adapter pour votre système.). Il faut trouver et modifier les lignes suivantes dans /etc/php5/apache2/php.ini et /etc/php5/cli/php.ini
17
18
 # <code class="php">memory_limit = 512M;</code>
19
 # <code class="php">post_max_size = 32M;</code>
20
 # <code class="php">upload_max_filesize = 32M;</code>
21
 # <code>service apache2 restart</code>
22
# savoir recharger la configuration d’apache et le redémarer <code class="bash">service apache2 reload</code> et <code class="bash">service apache2 restart</code>
23
24 1 Florent Torregrosa
h2. Savoir ajouter/activer des modules pour le serveur apache (notamment le module pour les url-simplifiées)
25
26
* sudo a2enmod mod_rewrite
27 7 Julien Enselme
* sudo a2ensite NOM_DU_SITE
28 1 Florent Torregrosa
29
30 7 Julien Enselme
h2. Savoir installer drush et les bibliothèques php
31
32
* si drush est fourni dans les dépôts de votre distribution, l’installer depuis ceux-ci. Si votre distribution fourni également drupal, il peut être intéressant de l’installer également pour avoir la liste des dépendances. L’installation de drupal via drush est la méthode recommandée.
33 1 Florent Torregrosa
* savoir où est installé drush : drush config
34 7 Julien Enselme
* sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
35 1 Florent Torregrosa
36 3 Florent Torregrosa
h2. Pouvoir utiliser un nom de domaine en local
37 1 Florent Torregrosa
38
Quand je vais sur assos.centrale-marseille.fr, c’est mon site local que je vois et non pas celui de centrale.
39
40
Constater qu’en allant sur assos.centrale-marseille.fr on tombe sur la page par defaut de notre apache (la page sur laquelle on tombe dépend de si oui ou non elle a un vhost qui la concerne).
41
42 3 Florent Torregrosa
* Pour les distributions basées sur Debian
43
* Pour Mageia 3
44
* Pour Fedora
45
46 7 Julien Enselme
* Quand je vais sur localhost.d6, c’est le site local qu'on voit : tout simplement ajouter l’entrée suivante dans /etc/hosts
47
<pre>127.0.0.1  assos.centrale-marseille.fr</pre>
48
* constater qu’en allant sur assos.centrale-marseille.fr on tombe sur la page par defaut de notre apache (la page sur laquelle on tombe dépend de si oui ou non elle a un vhost qui la concerne). On peut vérifier avec le module Firefox _show ip_ qui donne l’IP du site sur lequel on ait.
49
50 1 Florent Torregrosa
h2. Pouvoir créer des vhost à la pelle
51
52
Exemple : créer le domaine titi.local
53
54
* Pour les distributions basées sur Debian
55
* Pour Mageia 3
56
* Pour Fedora
57
58 7 Julien Enselme
* Exemple : créer deux domaines assos.fun.local et titi.local
59
Exemple pour titi.local :
60
61
* dans /etc/apache2/sites-available/ créer un fichier titi. Le contenu de titi est :
62
63
<pre>
64
<VirtualHost *:80>
65
       ServerAdmin webmaster@localhost
66
       ServerName titi.local
67
       ServerAlias titi.local
68
69
       DocumentRoot /chemin/dossier_site
70
71
       <Directory /chemin/dossier_site/>
72
               Options Indexes FollowSymLinks MultiViews
73
               AllowOverride All
74
               Order allow,deny
75
               allow from all
76
       </Directory>
77
78
       ErrorLog ${APACHE_LOG_DIR}/titi.error.log
79
80
       # Possible values include: debug, info, notice, warn, error, crit,
81
       # alert, emerg.
82
       LogLevel warn
83
84
       CustomLog ${APACHE_LOG_DIR}/titi.access.log combined
85
</VirtualHost>
86
</pre>
87
88
* créer le fichier test.html dans /chemin/dossier_site  et mettre dedans <pre><h1>TITI</h1></pre>
89
* ajouter un lien symbolique dans /etc/apache2/sites-enabled qui pointe sur le fichiet titi qui est dans /etc/apache2/sites-available/
90
91
 * <code>cd /etc/apache2/sites-enabled/</code>
92
 * <code>ln -s ../sites-available/titi .</code>
93
* ajouter l’entrée titi.local dans le fichier /etc/hosts
94
<pre>
95
127.0.0.1        titi.local
96
</pre>
97
98
* Redémarrer apache : <code>sudo service apache2 restart</code>
99
* Consulter  titi.local/test.html
100
101 1 Florent Torregrosa
h2. Pouvoir reproduire en local un site en particulier
102
103 7 Julien Enselme
h3. Par Florent
104
105 1 Florent Torregrosa
* pouvoir télécharger en local juste le minimum de fichiers
106
* le minimum c’est tout le htmltest sauf le dossier sites
107
* dans sites/ il faut ne prendre que le dossier default et le dossier du site qui nous concerne.
108
* pouvoir se démerder (script ou suite de ligne de commande ou …) pour pouvoir faire ça efficacement (une suite de commande scp n’est pas une mauvaise idée)
109
* rsync -lr --exclude nom_fichier_ou_dossier_a_exclure assos@sas1.centrale-marseille.fr:chemin_vers_dossier/* .
110
* sur sa machine se faire un dossier d6 et un dossier d7
111
112
* exemple dans d6 :
113
<pre>
114
cd d6
115
rsync -lr --exclude sites assos@sas1.centrale-marseille.fr:html/* .
116
mkdir sites
117
cd sites
118
rsync -lr assos@sas1.centrale-marseille.fr:html/sites/default .
119
rsync -lr assos@sas1.centrale-marseille.fr:html/sites/assos.centrale-marseille.fr.annales . (étape longue)
120
</pre>
121
122 7 Julien Enselme
h3. Par Jenselme
123
124
* pouvoir télécharger en local juste le minimum de fichiers. Le minimum c’est :
125
126
 * tout le htmltest sauf le dossier sites
127
 * dans sites/ il faut ne prendre que le dossier default et le dossier du site qui nous concerne.
128
 * pouvoir se démerder (script ou suite de ligne de commande ou …) pour pouvoir faire ça efficacement (une suite de commande scp ou rsync n’est pas une mauvaise idée)
129
130
  * sur sa machine : se faire un dossier d6 et un dossier d7
131
  * <code>cd d6</code>
132
  * _Exemple pour le site des annales, à apapter_ : <code>rsync -lr --exclude sites assos@sas1.centrale-marseille.fr:html/* .</code>
133
  * <code>mkdir sites</code>
134
  * <code>cd sites</code>
135
  * <code>rsync -lr assos@sas1.centrale-marseille.fr:html/sites/default .</code>
136
  * <code>rsync -lr assos@sas1.centrale-marseille.fr:html/sites/assos.centrale-marseille.fr.annales .</code> (étape longue)
137
138 1 Florent Torregrosa
h2. Pouvoir télécharger la base de donnée d’un seul site en particulier
139 2 Florent Torregrosa
140 1 Florent Torregrosa
* savoir faire ça avec phpmyadmin, dans phpmyadmin :
141
> * exporter
142
> * options personnalisées
143
> * choisir que les tables qui vous intéressent
144
> * laisser les autres options
145
> * enregistrer
146
> * ça enregistre dans votre dossier de téléchargements sur votre machine
147 2 Florent Torregrosa
148 1 Florent Torregrosa
* savoir le faire avec drush car parfois le fichier téléchargé par phpmyadmin est trop gros
149
150
> * sur le sas :
151 7 Julien Enselme
> > <pre>dump_site annales (pour une base de données isolée, se placer dans le dossier du site puis drush sql-dump > nom_du_fichier.sql)
152 1 Florent Torregrosa
cd Desktop/dump_individuels</pre>
153 4 Florent Torregrosa
154 1 Florent Torregrosa
> * sur sa machine :
155
> > </pre>@scp assos@sas1.centrale-marseille.fr:Desktop/dump_individuels/annales....</pre>
156
157
h2. Monter un site en local
158
159
* monter un seul vhost pour assos.centrale-marseille.fr (il sera valable pour tous les sous sites, il ne sera jamais édité)
160
* télécharger les fichiers et la base de donnée du site en question
161
* injecter la dbb en local (utiliser le phpmyadmin en local ou sudo mysql -u root -pmotdepasse nomdelabase < fichier.sql)
162 7 Julien Enselme
* modifier le settings.php du site en question pour donner les informations de connection mysql et modifier $base_url
163
* pour aller plus vite, renommer le dossier du site en default
164 1 Florent Torregrosa
165
h2. Installer le script drush de mise à jour http://drupal.org/project/drush_sup
166
167
* suivre la procédure d’installation
168
* critère de validation : la commande suivante marche : drush sup
169
170
h2. Exécuter correctement le script de mise à jour
171
172
* lire la doc de drush sup
173
* exécuter drush sup avec les bons arguments
174 7 Julien Enselme
175
h2. Alias drush
176
177
178
TODO (dans la doc drush ?)
179
installer dom, xml (paquet php)
180 1 Florent Torregrosa
181 3 Florent Torregrosa
h1. Annexe : Nom de domaine
182 1 Florent Torregrosa
183 5 Julien Enselme
Normalement, toutes les unix reposent sur le même principe. Ajouter l’entrée suivante dans /etc/hosts : @127.0.0.1  assos.centrale-marseille.fr@
184 1 Florent Torregrosa
185 3 Florent Torregrosa
h1. Annexe : Vhosts
186 1 Florent Torregrosa
187
h2. Pour les distributions basées sous Debian
188
189 3 Florent Torregrosa
* Dans /etc/apache2/sites-available/ créer un fichier titi dont le contenu est :
190
<pre>
191
<VirtualHost *:80>
192
    ServerAdmin webmaster@localhost
193
    ServerName titi.local
194
    ServerAlias titi.local
195 2 Florent Torregrosa
196 3 Florent Torregrosa
    DocumentRoot /chemin/dossier_site
197 1 Florent Torregrosa
198 3 Florent Torregrosa
    <Directory /chemin/dossier_site/>
199
        Options Indexes FollowSymLinks MultiViews
200
        AllowOverride All
201
        Order allow,deny
202
        allow from all
203
    </Directory>
204
205
    ErrorLog ${APACHE_LOG_DIR}/titi.error.log
206
207
    # Possible values include: debug, info, notice, warn, error, crit,
208
    # alert, emerg.
209
    LogLevel warn
210
211
    CustomLog ${APACHE_LOG_DIR}/titi.access.log combined
212
213
</VirtualHost>
214
</pre>
215
* créer le fichier test.html dans /chemin/dossier_site et mettre dedans @<h1>TITI</h1>@
216
* ajouter un lien symbolique dans /etc/apache2/sites-enabled qui pointe sur le fichier titi qui est dans /etc/apache2/sites-available/ :
217
> * Manuellement :
218 4 Florent Torregrosa
> <pre>
219 3 Florent Torregrosa
cd /etc/apache2/sites-enabled/
220
ln -s ../sites-available/titi .
221
</pre>
222
> * Avec la commande apache :
223 4 Florent Torregrosa
> <pre>
224 3 Florent Torregrosa
sudo service a2ensite titi
225
</pre>
226
* ajouter l’entrée titi.local dans le fichier /etc/hosts :
227 1 Florent Torregrosa
<pre>
228
@127.0.0.1        titi.local@
229 3 Florent Torregrosa
</pre>
230 4 Florent Torregrosa
* restart apache
231 3 Florent Torregrosa
<pre>
232 4 Florent Torregrosa
sudo service apache2 restart
233 1 Florent Torregrosa
</pre>
234
* consulter  titi.local/test.html
235
236
h2. Pour Mageia 3
237 4 Florent Torregrosa
238
{{warning(la partie pour mageia permet pour l'instant d'atteindre le site via localhost/nom_du_site, pas encore bien connecté avec le fichier Hosts)}}
239
240
* Dans /etc/httpd/conf/sites.d/ créer un fichier nom_du_fichier.conf dont le contenu est :
241
<pre>
242
# Drupal configuration
243
Alias /nom_du_site /chemin/dossier_site
244
245
<Directory /chemin/dossier_site/>
246
   Require local granted
247
   Options -Indexes +FollowSymlinks +Multiviews
248
   AllowOverride None
249
250
    # Protect files and directories from prying eyes.
251
    <FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
252
      Order allow,deny
253
    </FilesMatch>
254
255
    # Don't show directory listings for URLs which map to a directory.
256
    Options -Indexes
257
258
    # Follow symbolic links in this directory.
259
    Options +FollowSymLinks
260
261
    # Make Drupal handle any 404 errors.
262
    ErrorDocument 404 /index.php
263
264
    # Set the default handler.
265
    DirectoryIndex index.php index.html index.htm
266
267
    # Override PHP settings that cannot be changed at runtime. See
268
    # sites/default/default.settings.php and drupal_environment_initialize() in
269
    # includes/bootstrap.inc for settings that can be changed at runtime.
270
271
    # PHP 5, Apache 1 and 2.
272
    <IfModule mod_php5.c>
273
        php_flag magic_quotes_gpc                 off
274
        php_flag magic_quotes_sybase              off
275
        php_flag register_globals                 off
276
        php_flag session.auto_start               off
277
        php_value mbstring.http_input             pass
278
        php_value mbstring.http_output            pass
279
        php_flag mbstring.encoding_translation    off
280
    </IfModule>
281
282
    # Requires mod_expires to be enabled.
283
    <IfModule mod_expires.c>
284
        # Enable expirations.
285
        ExpiresActive On
286
287
        # Cache all files for 2 weeks after access (A).
288
        ExpiresDefault A1209600
289
290
        <FilesMatch \.php$>
291
            # Do not allow PHP scripts to be cached unless they explicitly send
292
            # cache headers themselves. Otherwise all scripts would have to 
293
            # overwrite the headers set by mod_expires if they want another 
294
            # caching behavior. This may fail if an error occurs early in the
295
            # bootstrap process, and it may cause problems if a non-Drupal PHP
296
            # file is installed in a subdirectory.
297
            ExpiresActive Off
298
        </FilesMatch>
299
    </IfModule>
300
301
    # Various rewrite rules.
302
    <IfModule mod_rewrite.c>
303
        RewriteEngine on
304
305
        # Block access to "hidden" directories whose names begin with a period.
306
        # This includes directories used by version control systems such as
307
        # Subversion or Git to store control files. Files whose names begin with
308
        # a period, as well as the control files used by CVS, are protected by 
309
        # the FilesMatch directive above.
310
        #
311
        # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite,
312
        # it is not possible to block access to entire directories from 
313
        # .htaccess, because <DirectoryMatch> is not allowed here.
314
        #
315
        # If you do not have mod_rewrite installed, you should remove these
316
        # directories from your webroot or otherwise protect them from being
317
        # downloaded.
318
        RewriteRule "(^|/)\." - [F]
319
320
        # If your site can be accessed both with and without the 'www.' prefix,
321
        # you can use one of the following settings to redirect users to your
322
        # preferred URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY
323
        # one option: 
324
        # To redirect all users to access the site WITH the 'www.' prefix,
325
        # (http://example.com/... will be redirected to http://www.example.com/...)
326
        # uncomment the following:
327
        # RewriteCond %{HTTP_HOST} !^www\. [NC]
328
        # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
329
        #
330
        # To redirect all users to access the site WITHOUT the 'www.' prefix,
331
        # (http://www.example.com/... will be redirected to http://example.com/...)
332
        # uncomment the following:
333
        # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
334
        # RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
335
336
        # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
337
        # VirtualDocumentRoot and the rewrite rules are not working properly.
338
        # For example if your site is at http://example.com/drupal uncomment and
339
        # modify the following line:
340
        RewriteBase /nom_du_site
341
        #
342
        # If your site is running in a VirtualDocumentRoot at http://example.com/,
343
        # uncomment the following line:
344
        # RewriteBase /
345
346
        # Pass all requests not referring directly to files in the filesystem to
347
        # index.php. Clean URLs are handled in drupal_environment_initialize().
348
        RewriteCond %{REQUEST_FILENAME} !-f
349
        RewriteCond %{REQUEST_FILENAME} !-d
350
        RewriteCond %{REQUEST_URI} !=/favicon.ico
351
        RewriteRule ^ index.php [L]
352
353
        # Rules to correctly serve gzip compressed CSS and JS files.
354
        # Requires both mod_rewrite and mod_headers to be enabled.
355
        <IfModule mod_headers.c>
356
        # Serve gzip compressed CSS files if they exist and the client accepts gzip.
357
        RewriteCond %{HTTP:Accept-encoding} gzip
358
        RewriteCond %{REQUEST_FILENAME}\.gz -s
359
        RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
360
361
        # Serve gzip compressed JS files if they exist and the client accepts gzip.
362
        RewriteCond %{HTTP:Accept-encoding} gzip
363
        RewriteCond %{REQUEST_FILENAME}\.gz -s
364
        RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
365
366
        # Serve correct content types, and prevent mod_deflate double gzip.
367
        RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
368
        RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
369
370
        <FilesMatch "(\.js\.gz|\.css\.gz)$">
371
            # Serve correct encoding type.
372
            Header set Content-Encoding gzip
373
            # Force proxies to cache gzipped & non-gzipped css/js files 
374
            # separately.
375
            Header append Vary Accept-Encoding
376
        </FilesMatch>
377
        </IfModule>
378
    </IfModule>
379
380
</Directory>
381
</pre>
382
{{tip(Pour ce fichier de configuration, se baser sur celui fournit par Mageia lors de l'installation d'un Drupal depuis la logithèque de Mageia.)}}
383
384
* créer un dossier (avec un Drupal dedans) appelé dossier_site dans /chemin/
385
* restart apache
386
<pre>
387
sudo service httpd stop
388
sudo service httpd start
389
</pre>
390
391
* consulter  localhost/nom_du_site
392
393 2 Florent Torregrosa
394
h2. Pour Fedora