migrer son serveur en production

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je cherche à savoir comment je peux mettre en ligne mon site (développé avec Drupal 6.x) ?
Mon hébergeur est Neuf, j'ai un FTP, et je peux créer jusqu'à 3 BDD.

LA question que je me poserai bientôt est : comment mettre à jour mon site.
Si j'ai ajouter 3 modules dont un développé par mes soins, quelles sont les démarches pour mettre le site à jour proprement ?

Merci d'avance.

PS: j'ai trouvé quelque truc pour installer et mettre à jour, mais il ne me correspondent pas.

Bon, a ce que j'ai vu, il suffirait de déplacer les fichiers à la racine du serveur FTP.

Cependant,il me reste queque questions avant que cela fonctionne :
- Dois-je déjà créer la base de données ?
- Comment puis-je modifier mon htaccess pour que je n'ai plus d'erreur 500 ?

Merci

Pour la base, le plus simple je pense est d'installer le module backup_migrate sur les 2 sites, faire un backup sur le développement, et ensuite une restauration sur la future prod.

Par contre, il faut auparavant avoir installé un drupal avec la BDD sur la prod.

Erreur 500, ça veut probablement dire que la rewritebase est mauvaise. Normalement, si le site n'est pas installé dans un sous répertoire, il n'y en a pas besoin.

Pour la base, une fois qu'elle est importée, il faut modifier sites/default/settings.php et indiquer les infos de connexion sur le serveur de prod.

Ok, tout d'abord, je tiens à vous remercier pour vos réponses.

  1. le fichier settings.php
    Sur l'hébergemenbt neuf est du mysql. donc dans mon fichier settings je dois utiliser cette ligne :

$db_url = 'mysql://username:password@localhost/databasename';

Concretement mon fichier settings c'est ca

$db_url = 'mysql://USER:PASS@localhost/BDD'; //(les éléments en majuscule sont modifié, et j'ai laissé le localhost).
$db_prefix = '';
$update_free_access = FALSE;

// Les ini_set sont desactivé par neuf, en concret
ini_set('arg_separator.output',     '&');
ini_set('magic_quotes_runtime',     0);
ini_set('magic_quotes_sybase',      0);
ini_set('session.cache_expire',     200000);
ini_set('session.cache_limiter',    'none');
ini_set('session.cookie_lifetime',  2000000);
ini_set('session.gc_maxlifetime',   200000);
ini_set('session.save_handler',     'user');
ini_set('session.use_cookies',      1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid',    0);
ini_set('url_rewriter.tags',        '');

Est ce que ce fichier est correct ?

Sinon, pour le htaccess, c'est encore pire, je ne sais pas du totu ce que je dois mettre dedans. Voici le fichier que j'ai en local :

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch ".(engine|inc|info|install|make|module|profile|test|po|sh|.sql|theme|tpl(.php)?|xtmpl|svn-base)$|^(code-style.pl|Entries.|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
  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

# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
  # There is no end quote below, for compatibility with Apache 1.3.
  ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</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$>
    ExpiresActive Off
  </FilesMatch>
</IfModule>

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

 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: .htaccess,v 1.90.2.5 2010/02/02 07:25:22 dries Exp $

Voilà, je suis assez perdu là, je galère bien.

Donc en ne laissant que le bout de code qui suit (et en ajoutant le première ligne),

SetEnv PHP_VER 5

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

j'ai enfin une page Drupal, mais il y a une erreur. Ce qui ne m'étonne pas puisque j'ai supprimmé petit à petit chacune des parti du fichier de conf :D !

L'erreur que me donne drupal est la suivante :
The mysql error was: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2).

Je ne sais pas si je suis sur la bonne voie, si quelqu'un pour faire l'aiguilleur ??

ps: j'ai laissé localhost dans le fichier settings.php

Normalement, l'hébergeur doit fournir des données concernant l'environnement : le nom du serveur de base de données (ou son adresse IP). Pour les hébergements mutualisés, ce n'est généralement pas localhost, car l'hébergeur a des serveurs de données et des serveurs web.

Et par défaut,il ne faut pas toucher au fichier .htaccess, sauf si on est sur de ce que l'on fait.
Pour le settings, en modifiant le nom, le mot de passe, le host et le nom de la base ça doit suffire.

OK, je vais voir au niveau de Neuf pour me renseigner un peu plus sur la localisation de la bdd.

Par conter, pour le HTACCESS ... je ne sais pas. J'ai essayer au hasard de trouver les lignes qui me donnait une erreur 500. En supprimmant les lignes ci-dessous : je n'ai plus d'erreur.

ErrorDocument 404 /index.php
Options +FollowSymLinks

Sont-elles vraiment utiles ?

Bon, en cherchant un peu plus, on trouve.

Effectivement, il ne fallait pas laisser "localhost" dans le fichier settings, mais j'ai trouver l'adresse ou était hébergé la bdd.

Tout cela me mène à un auter problème : les tables ne se créer pas lors de l'installation de drupal.

Un des msg d'erreur :

Warning: Table 'xxx.access' doesn't exist query: SELECT 1 FROM access WHERE type = 'host' AND LOWER('xxxx') LIKE LOWER(mask) AND status = 0 LIMIT 0, 1 in /var/www/xx/xx/xxx/xxx.perso.sfr.fr/public_html/includes/database.mysql.inc on line 128

Est-ce un problème de Drupal ou de Neuf ??

Drupal doit croire être installer pour faire un select sur une table ... bizarre ... Ca peut peut-être venir du htaccess ...?

  • Connecte toi à ta base de données locale.
  • Fais "Exporter", puis choisi "SQL" et "zipé" (plus léger, plus rapide).
  • Sauvegarde le fichier ZIP où tu veux.
  • Puis connecte toi dans ta base de données chez Neuf, selectionne ta base de données ("Drupal" je crois) et choisit "Importer".
  • Sélectionne ton ZIP puis "Go"

Oui ...

Pour l'instant, PHPMyAdmin en ligne n'arrive pas à digérer l'export de ma bdd local, il y a toujours qqch qui bloque ...

Je n'ai pas trop eu le temps de m'en occupé ce weekend, mais ce soir, j'y travaille à nouveau.

Je vais essayer d'exporter ma bdd en 2 temps :
- la structure
- les données

Est-ce que c'est possible d'effectuer ces 2 exports distinctement avec PMA ?
L'export global me donne un fichier de 10Mo, et j'ai pas trop envie de le faire à la main ...

Merci d'avance, et merci Klaitos de suivre la migration de mon serveur :D.

As tu bien exporter en ZIP ?(case à cocher en bas de la fenêtre d'exportation), car sans beaucoup de PMA ne supportent pas, il à trop de texte. Je ne sais pas pour les 2 exports distincts. Tu peux déja décocher les commentaires, quelques lignes de gagnées..

Avant ton export en gzip, pense à vider toutes les tables dont le nom commence par cache plus la table watchdog et la table sessions. Attention à bien sélectionner vider et surtout pas supprimer. Ta base devrait déjà bien maigrir.

Hello,

Bon, j'ai finalement réussi à passer du temps sur cette migration.

Commmencons par a bone nouvelle, j'ai réussi à importer ma bdd et mes données. J'ai simplement rééssayé avec un export global en bzip, et ca a marché. J ene cherche pas à comprendre, je suis heureux ca me suffit.

Mauvaise nouvelle, ca ne marche pas encore :) (vous vous en doutiez).

donc sur ma page d'accueil (index.php classique), j'affiche simplement les articles (c'est un site drupal tout ce qu'il y a de plus simple).

require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$return = menu_execute_active_handler();
// Menu status constants are integers; page content is a string.
if (is_int($return)) {
  switch ($return) {
    case MENU_NOT_FOUND:
      drupal_not_found();
      break;
    case MENU_ACCESS_DENIED:
      drupal_access_denied();
      break;
    case MENU_SITE_OFFLINE:
      drupal_site_offline();
      break;
  }
}
elseif (isset($return)) {
   print theme('page', $return);
}
drupal_page_footer();

La varialbe $return contient bien mes articles, et je passe bien par le elseif contenant le code suivant : print theme('page', $return);.

Résultat de l'execition du code : Page blanche

Cette fameuse fonction theme que je n'ai toujours pas compris ... quelqu'un aurait un tuyau ? (je sens que je m'approche de la fin :D )

Bonjour,

Donc mon serveur en ligne ne fonctionne toujours pas. En faisant une install simple (export import BDD + copie des fichiers + modif fichier settings), j'ai une erreur 500.

Neuf empêche l'utilisation des fonction ini_set(). J'ai notamment du désactiver:

bootstrap.inc

if (count(explode('.', $cookie_domain)) > 2 && !is_numeric(str_replace('.', '', $cookie_domain))) {
    //ini_set('session.cookie_domain', $cookie_domain);
  }
[...
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) {
      // $cache->data is already gzip'ed, so make sure zlib.output_compression
      // does not compress it once more.
     // ini_set('zlib.output_compression', '0');
      header('Content-Encoding: gzip');
    }]

site/default/settings.php

ini_set('arg_separator.output',     '&amp;');
ini_set('magic_quotes_runtime',     0);
ini_set('magic_quotes_sybase',      0);
ini_set('session.cache_expire',     200000);
ini_set('session.cache_limiter',    'none');
ini_set('session.cookie_lifetime',  2000000);
ini_set('session.gc_maxlifetime',   200000);
ini_set('session.save_handler',     'user');
ini_set('session.use_cookies',      1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid',    0);
ini_set('url_rewriter.tags',        '');

Après, j'ai ma fonction theme qui ne me sort plus rien (les articles sont bien passés enparamètres, mais rien ne resort de la fonction ?

Any idea ?