Projet

Général

Profil

Actions

Competences techniques apache et drupal » Historique » Révision 7

« Précédent | Révision 7/40 (diff) | Suivant »
Julien Enselme, 29/05/2013 00:26
Réunion des informations à partir de de drupal6 vers drupal 7


h1. Compétences techniques apache et drupal

h2. Différences majeures entre les distributions

apache2 -> httpd
service -> systemctl

h2. Installer et configurer Apache, phpmyadmin

savoir installer un serveur apache et phpmyadmin (dépend de votre système)

augmenter sa mémoire dédiée

savoir ajouter/activer des modules pour le serveur apache (notamment le module mod rewrite pour les url-simplifiées) : sudo a2enmod nom_du_module

avoir drush d'installer (peut-être présent dans les dépôts de votre distributions) et savoir où il est installé : which drush

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

memory_limit = 512M;

post_max_size = 32M;

upload_max_filesize = 32M;

service apache2 restart

savoir recharger la configuration d’apache et le redémarer service apache2 reload et service apache2 restart

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

  • sudo a2enmod mod_rewrite
  • sudo a2ensite NOM_DU_SITE

h2. Savoir installer drush et les bibliothèques php

  • 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.
  • savoir où est installé drush : drush config
  • sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

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

  • Quand je vais sur localhost.d6, c’est le site local qu'on voit : tout simplement ajouter l’entrée suivante dans /etc/hosts

127.0.0.1  assos.centrale-marseille.fr
  • 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.

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

  • Exemple : créer deux domaines assos.fun.local et titi.local
    Exemple pour titi.local :

  • dans /etc/apache2/sites-available/ créer un fichier titi. Le contenu de titi est :


       ServerAdmin webmaster@localhost
       ServerName titi.local
       ServerAlias titi.local

       DocumentRoot /chemin/dossier_site

       
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       

       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

  • créer le fichier test.html dans /chemin/dossier_site et mettre dedans

    
    

    TITI

  • ajouter un lien symbolique dans /etc/apache2/sites-enabled qui pointe sur le fichiet titi qui est dans /etc/apache2/sites-available/

  • cd /etc/apache2/sites-enabled/

  • ln -s ../sites-available/titi .

  • ajouter l’entrée titi.local dans le fichier /etc/hosts

127.0.0.1        titi.local
  • Redémarrer apache : sudo service apache2 restart
  • Consulter titi.local/test.html

h2. Pouvoir reproduire en local un site en particulier

h3. Par Florent

  • 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 :chemin_vers_dossier/* .

  • sur sa machine se faire un dossier d6 et un dossier d7

  • exemple dans d6 :

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)

h3. Par Jenselme

  • 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 ou rsync n’est pas une mauvaise idée)

  • sur sa machine : se faire un dossier d6 et un dossier d7

  • cd d6

  • Exemple pour le site des annales, à apapter : rsync -lr --exclude sites :html/* .

  • mkdir sites

  • cd sites

  • rsync -lr :html/sites/default .

  • rsync -lr :html/sites/assos.centrale-marseille.fr.annales . (étape longue)

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

cd Desktop/dump_individuels

  • sur sa machine :

@scp :Desktop/dump_individuels/annales....

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 et modifier $base_url
  • pour aller plus vite, renommer le dossier du site en default

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

h2. Alias drush

TODO (dans la doc drush ?)
installer dom, xml (paquet php)

h1. Annexe : Nom de domaine

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@

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 :

    ServerAdmin webmaster@localhost
    ServerName titi.local
    ServerAlias titi.local

    DocumentRoot /chemin/dossier_site

    
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    

    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


  • créer le fichier test.html dans /chemin/dossier_site et mettre dedans @

    TITI

    @
  • ajouter un lien symbolique dans /etc/apache2/sites-enabled qui pointe sur le fichier titi qui est dans /etc/apache2/sites-available/ :
  • Manuellement :

cd /etc/apache2/sites-enabled/
ln -s ../sites-available/titi .

  • Avec la commande apache :

sudo service a2ensite titi

  • ajouter l’entrée titi.local dans le fichier /etc/hosts :
@127.0.0.1        titi.local@
  • restart apache
sudo service apache2 restart
  • consulter titi.local/test.html

h2. Pour Mageia 3

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 :
# Drupal configuration
Alias /nom_du_site /chemin/dossier_site


   Require local granted
   Options -Indexes +FollowSymlinks +Multiviews
   AllowOverride None

    # Protect files and directories from prying eyes.
    
      Order allow,deny
    

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

    # Requires mod_expires to be enabled.
    
        # Enable expirations.
        ExpiresActive On

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

        
            # 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
        
    

    # Various rewrite rules.
    
        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  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.
        
        # 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]

        
            # 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
        
        
    


{{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
sudo service httpd stop
sudo service httpd start
  • consulter localhost/nom_du_site

h2. Pour Fedora

Mis à jour par Julien Enselme il y a plus de 11 ans · 40 révisions