Projet

Général

Profil

Competences techniques apache et drupal » Historique » Version 4

Florent Torregrosa, 11/05/2013 19:54
Ajout informations chost mageia et correction de mise en page.

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