Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/07/2008, à 03:59

Concombre Masqué

Utiliser la même base MySQL sous Windows et Linux

J'ai essayé de faire un titre de sujet aussi clair que possible...

En fait c'est presque la solution complète, un petit détail manque : comment faire que ça marche au démarrage sans avoir à utiliser une commande (voir à la fin, la question soulignée)

Définition du problème : Je travaille et développe sous Windows. J'ai installé WAMP sous XP ou Vista. J'aimerais bien de temps en temps développer sous Linux, ou bien tout simplement travailler moitié Windows, moitié Linux, histoire de pas trop me perturber. Donc j'ai tout installé sous Linux grâce à cette page.

Maintenant, comment faire pour sous linux, tout marche comme sous Windows. C'est à dire :
1- localhost/monsite pointe vers le même emplacement que sous Windows
2- j'utilise les mêmes données que je sois sous Linux ou Windows.

Je pars du principe que la partition qui contient wamp est montée en /media/disk/

1. APACHE

Pour ce qui est du premier point, c'est facile, et le tutoriel lamp nous donne déjà une piste : les Alias dans /etc/apache2/sites-available/default

Au lieu de pointer vers /home/votre_identifiant/repertoire_pour_votre_site, il suffit de pointer vers le répertoire que vous désirez après que la partition soit montée : par exemple /media/disk/wamp/www .

Et puis, on ne veut pas taper http://localhost/www mais simplement http://localhost/, histoire de vraiment tout avoir comme sous Windows smile

Ce qu'il faut faire donc, au lieu d'ajouter un alias, c'est modifier celui qui existe déjà.

Voici maintenant le code du début du fichier (les # sont des commentaires, histoire de ce rappeller ce qu'on enlève).

NameVirtualHost *
<VirtualHost *>
	ServerAdmin webmaster@localhost
	
#	DocumentRoot /var/www/
	DocumentRoot /media/disk/wamp/www/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
#	<Directory /var/www/>
	<Directory /media/disk/wamp/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

Bon, ça c'est pour Apache2. A noter qu'il faut le redémarrer pour que les changements soient pris en compte avec la commande sudo /etc/init.d/apache2 reload


2. MYSQL

Alors en fait, une fois qu'on sait comment faire et où le faire, c'est encore plus simple !
dans Wamp, la partie mysql est située dans /media/disk/wamp/bin/mysql/

Il faut donc que les fichiers de configurations contiennent ces informations. Les fichiers en question sont /etc/apparmor.d/usr.sbin.mysqld et /etc/mysql/my.cnf

Voici, de la même manière qu'au dessus, les modifications qu'il faut faire (les anciennes valeurs sont commentées par le dièse #).

C'est bien sur un exemple qu'il faudra adapter si le répertoire mysql n'est pas mysql5.0.51b

d'abord la partie concernant my.cnf :

#   If you make changes to these settings and your system uses apparmor, you may
#   also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.

user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
#basedir		= /usr
basedir		= /media/disk/wamp/bin/mysql/mysql5.0.51b
#datadir		= /var/lib/mysql
datadir		= /media/disk/wamp/bin/mysql/mysql5.0.51b/data
tmpdir		= /tmp
language	= /usr/share/mysql/english

même combat pour apparmor.d :

# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>

/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>

  capability dac_override,
  capability setgid,
  capability setuid,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/group              m,
  /etc/passwd             m,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/my.cnf r,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,
  /media/disk/wamp/bin/mysql/mysql5.0.51b/data/ r,
  /media/disk/wamp/bin/mysql/mysql5.0.51b/data/** rwk,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid w,
  /var/run/mysqld/mysqld.sock w,
}

Et maintenant ? On redémarre le serveur mysql, après avoir redémarré apparmor (c'est important) :
Et n'oublions pas apparmor :
/etc/init.d/apparmor restart

/etc/init.d/mysql restart


------LE PROBLEME------

Il reste maintenant à faire en sorte (si c'est pas déjà fait) que la partition qui contient la base mysql soit montée au démarrage (je pense que ça serait mieux smile ).

Ce tuto nous explique comment faire, et bien mieux que je ne pourrais le faire

il nous suffit d'ajouter la ligne correspondante dans /etc/fstab. En ce qui me concerne, c'est :

/dev/sda3	/media/disk	ntfs-3g 	rw,user,auto,gid=100,uid=1000,nls=utf8,umask=002	0	0


Il reste un problème : Comment gérer l'ordre de démarrage, à savoir le fait que la partition doit être montée avant que apparmor ne démarre ?


Concombre Masqué, 100% Végétal et donc 100% sain

Hors ligne

#2 Le 02/07/2008, à 19:56

hugo81

Re : Utiliser la même base MySQL sous Windows et Linux

Ce qui est dans /etc/fstab est monté avant de lancer les services;  sauf si on dit que ce sont les utilisateurs qui vont faire les montages, voire que cela se fait automatiquement.

Je penche pour :
/dev/sda3    /media/disk    ntfs-3g     defaults    0    0
ou  peut-être
/dev/sda3    /media/disk    ntfs-3g     defaults,nls=utf8    0    0

Le répertoire /media/disk n'est pas un bon choix car /media est plutôt utilisé pour les montage automatique. /mnt/disk ou /mnt/sda3 est un meilleur choix. De toutes façons, il faut que ce répertoire de montage existe avant le redémarrage.

Hors ligne

#3 Le 07/07/2008, à 03:25

Concombre Masqué

Re : Utiliser la même base MySQL sous Windows et Linux

Merci hugo81, donc par exemple, je dois
1/ créer un répertoire /home/mon_utilisateur/www;
2/  Ajouter une ligne à /etc/fstab pour monter par défaut (avec 0 0 ), /dev/mondisque vers /home/mon_utilisateur/www ?

Et est ce qu'il est possible de monter juste un répertoire d'une partition ntfs ? suivant l'exemple que tu donnes et mes remarques, la ligne ressemblerait à :

/dev/sda3/wamp/www    /home/concombre_masque/www    ntfs-3g     defaults,nls=utf8    0    0




Question bonus : ça vaut le coup que je copie/colle mon premier post en ajoutant ce qu'on raconte pour le mettre coté Documentation, sur une page subtilement et pertinament choisie ? J'ai écrit dans l'optique que ça puisse servir à d'autres, suffit que je corrige les fautes que j'ai faite et hop !


Concombre Masqué, 100% Végétal et donc 100% sain

Hors ligne

#4 Le 09/07/2008, à 23:59

hugo81

Re : Utiliser la même base MySQL sous Windows et Linux

Cela me semble correct aux options près (en dehors de defaults) :

/dev/sda3    /home/concombre_masque/www    ntfs-3g     defaults,nls=utf8    0    0

Pour ce qui est de monter un répertoire d'une partition, je ne crois pas. C'est à creuser. Il me semble que les versions récentes du noyau permettent de monter une partition à 2 endroits, mais...

Bonus : oui, dans un «comment faire pour...».

Hors ligne

#5 Le 10/07/2008, à 00:04

Concombre Masqué

Re : Utiliser la même base MySQL sous Windows et Linux

Petite remarque : Une base (ou une table) située sur une partition NTFS avec un moteur innoDB sera innaccessible sous linux... Je n'ai pas le lien de la source sur moi, mais j'éditerai si je la retrouve.

Si quelqu'un sait pourquoi par contre, ça peut m'intéresser.. smile


Concombre Masqué, 100% Végétal et donc 100% sain

Hors ligne

#6 Le 10/07/2008, à 01:00

hugo81

Re : Utiliser la même base MySQL sous Windows et Linux

Vérifier que les versions Windows et Linux de MySQL gèrent les mêmes types de moteurs (en v4, je crois que non).

Hors ligne

#7 Le 26/08/2008, à 22:13

Concombre Masqué

Re : Utiliser la même base MySQL sous Windows et Linux

Après plusieurs jours de recherche (bon j'avoue j'ai pas fait que ça), je n'ai toujours pas retrouvé le source dont je parle au dessus..

Hugo, qu'est ce que tu entends par "les mêmes types de moteurs" ?

Je n'ai pas oublié, mais le dernier point me pose problème, je sais pas pourquoi ça ne marche pas... Actuellement, je fais ça pour que ça fonctionne

/etc/init.d/apparmor stop
/etc/init.d/mysql stop
/etc/init.d/apparmor start
/etc/init.d/mysql start

(je ne suis plus sur de l'ordre... :s ).

Reste mon problème avec innoDB qui n'est pas résolu. J'utilise sur mes deux Système les dernières versions (5.01 je crois)

Dernière modification par Concombre Masqué (Le 26/08/2008, à 22:14)


Concombre Masqué, 100% Végétal et donc 100% sain

Hors ligne