Projet

Général

Profil

Competences techniques apache et drupal » Historique » Version 4

Version 3 (Florent Torregrosa, 11/05/2013 19:27) → Version 4/40 (Florent Torregrosa, 11/05/2013 19:54)

{{toc}}

h1. Competences techniques apache et drupal

h2. Savoir installer un serveur apache, phpmyadmin

* augmenter sa mémoire dédiée
* augmenter la taille maximale des fichiers pouvant être importés dans phpmyadmin
* post_max_size et upload_max_filesize dans /etc/php5/apache2/php.ini et /etc/php5/cli/php.ini puis restart apache

h2. Savoir ajouter/activer des modules pour le serveur apache (notamment le module pour les url-simplifiées)

* sudo a2enmod mod_rewrite
* sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

h2. Savoir installer drush

* savoir où est installé drush : drush config

h2. Pouvoir utiliser un nom de domaine en local

Quand je vais sur assos.centrale-marseille.fr, c’est mon site local que je vois et non pas celui de centrale.

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).

* Pour les distributions basées sur Debian
* Pour Mageia 3
* Pour Fedora

h2. Pouvoir créer des vhost à la pelle

Exemple : créer le domaine titi.local

* Pour les distributions basées sur Debian
* Pour Mageia 3
* Pour Fedora

h2. Pouvoir reproduire en local un site en particulier

* pouvoir télécharger en local juste le minimum de fichiers
* le minimum c’est tout le htmltest sauf le dossier sites
* dans sites/ il faut ne prendre que le dossier default et le dossier du site qui nous concerne.
* 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)
* rsync -lr --exclude nom_fichier_ou_dossier_a_exclure assos@sas1.centrale-marseille.fr:chemin_vers_dossier/* .
* sur sa machine se faire un dossier d6 et un dossier d7

* exemple dans d6 :
<pre>
cd d6
rsync -lr --exclude sites assos@sas1.centrale-marseille.fr:html/* .
mkdir sites
cd sites
rsync -lr assos@sas1.centrale-marseille.fr:html/sites/default .
rsync -lr assos@sas1.centrale-marseille.fr:html/sites/assos.centrale-marseille.fr.annales . (étape longue)
</pre>

h2. Pouvoir télécharger la base de donnée d’un seul site en particulier

* savoir faire ça avec phpmyadmin, dans phpmyadmin :
> * exporter
> * options personnalisées
> * choisir que les tables qui vous intéressent
> * laisser les autres options
> * enregistrer
> * ça enregistre dans votre dossier de téléchargements sur votre machine

* savoir le faire avec drush car parfois le fichier téléchargé par phpmyadmin est trop gros

> * sur le sas :
> > <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)
> > cd Desktop/dump_individuels</pre>

> * sur sa machine :
> > </pre>@scp assos@sas1.centrale-marseille.fr:Desktop/dump_individuels/annales....</pre>

h2. Monter un site en local

* monter un seul vhost pour assos.centrale-marseille.fr (il sera valable pour tous les sous sites, il ne sera jamais édité)
* télécharger les fichiers et la base de donnée du site en question
* injecter la dbb en local (utiliser le phpmyadmin en local ou sudo mysql -u root -pmotdepasse nomdelabase < fichier.sql)
* modifier le settings.php du site en question pour donner les informations de connection mysql)

h2. Installer le script drush de mise à jour http://drupal.org/project/drush_sup

* suivre la procédure d’installation
* critère de validation : la commande suivante marche : drush sup

h2. Exécuter correctement le script de mise à jour

* lire la doc de drush sup
* exécuter drush sup avec les bons arguments

h1. Annexe : Nom de domaine

h2. Pour les distributions basées sous Debian

Ajouter l’entrée suivante dans /etc/hosts : 127.0.0.1 assos.centrale-marseille.fr

h2. Pour Mageia 3

Ajouter l’entrée suivante dans /etc/hosts : 127.0.0.1 assos.centrale-marseille.fr

h2. Pour Fedora

h1. Annexe : Vhosts

h2. Pour les distributions basées sous Debian

* Dans /etc/apache2/sites-available/ créer un fichier titi dont le contenu est :
<pre>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName titi.local
ServerAlias titi.local

DocumentRoot /chemin/dossier_site

<Directory /chemin/dossier_site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/titi.error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/titi.access.log combined

</VirtualHost>
</pre>
* créer le fichier test.html dans /chemin/dossier_site et mettre dedans @<h1>TITI</h1>@
* ajouter un lien symbolique dans /etc/apache2/sites-enabled qui pointe sur le fichier titi qui est dans /etc/apache2/sites-available/ :
> * Manuellement :
> <pre>
cd /etc/apache2/sites-enabled/
ln -s ../sites-available/titi .
</pre>
> * Avec la commande apache :
> <pre>
sudo service a2ensite titi
</pre>
* ajouter l’entrée titi.local dans le fichier /etc/hosts :
<pre>
@127.0.0.1 titi.local@
</pre>
* <pre>
restart apache
<pre>
: sudo service apache2 restart
</pre>
* consulter titi.local/test.html

h2. Pour Mageia 3

{{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)}}

* Dans /etc/httpd/conf/sites.d/ créer un fichier nom_du_fichier.conf dont le contenu est :
<pre>
# Drupal configuration
Alias /nom_du_site /chemin/dossier_site

<Directory /chemin/dossier_site/>
Require local granted
Options -Indexes +FollowSymlinks +Multiviews
AllowOverride None

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_environment_initialize() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

<FilesMatch \.php$>
# Do not allow PHP scripts to be cached unless they explicitly send
# cache headers themselves. Otherwise all scripts would have to
# overwrite the headers set by mod_expires if they want another
# caching behavior. This may fail if an error occurs early in the
# bootstrap process, and it may cause problems if a non-Drupal PHP
# file is installed in a subdirectory.
ExpiresActive Off
</FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# Block access to "hidden" directories whose names begin with a period.
# This includes directories used by version control systems such as
# Subversion or Git to store control files. Files whose names begin with
# a period, as well as the control files used by CVS, are protected by
# the FilesMatch directive above.
#
# NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite,
# it is not possible to block access to entire directories from
# .htaccess, because <DirectoryMatch> is not allowed here.
#
# If you do not have mod_rewrite installed, you should remove these
# directories from your webroot or otherwise protect them from being
# downloaded.
RewriteRule "(^|/)\." - [F]

# If your site can be accessed both with and without the 'www.' prefix,
# you can use one of the following settings to redirect users to your
# preferred URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY
# one option:
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# uncomment the following:
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
RewriteBase /nom_du_site
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

# Rules to correctly serve gzip compressed CSS and JS files.
# Requires both mod_rewrite and mod_headers to be enabled.
<IfModule mod_headers.c>
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]

<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files
# separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
</IfModule>

</Directory>
</pre>
{{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.)}}

* créer un dossier (avec un Drupal dedans) appelé dossier_site dans /chemin/
* restart apache
<pre>
sudo service httpd stop
sudo service httpd start
</pre>

* consulter localhost/nom_du_site

h2. Pour Fedora