Aller au contenu

[RESOLU]OpenBSD, Lighttpd, PHP et Mysql


Messages recommandés

Salut @ vous :).

Bon, je vais vous présenter mon problème.

J'ai décidé d'installer un serveur Lighttpd, PHP + Mysql sous Openbsd 3.9.

Lighttpd à l'avantage d'offir un sytème de chroot simple à mettre en place. Avec seulement quelques directives dans le fichier de conf.

Je me suis inspiré de ce guide pour faire ma configuration : http://blowfishbsd.blogspot.com/2006_04_01...sd_archive.html .

J'ai donc créé une arborescence dans mon /www/ avec les librairies qui vont bien ( trouvées en faisant ldd /opt/php5/bin/php ). Et là ! C'est le drame, lorsque j'essaie d'accéder au mirroir de mon blog sur le serveur je tombe sur l'erreur :

MySQL Error : 2002 - Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)

J'ai donc fait quelques recherches sur le net et je suis tombé sur cet article : http://www.freeyourbox.org/tutorials/bsd/o..._php_mysql.html qui explique qu'il faut faire un lien entre le /var/run/mysql/mysql.sock et l'arborescence chrooté.

Ce que j'ai essayé de faire :

ln -f /var/run/mysql/mysql.sock /www/var/run/mysql/mysql.sock

Mais je me retrouve avec l'erreur suivante : ln: mysql.sock: Cross-device link

Je n'ai pas trouvé de solution. Si vous pouviez m'aider ? :)

edit : Hum ... Je viens de comprendre. Le hard link ne fonctionne pas car /www/ et /var/ sont sur deux partitions différentes.

Bon, je vais faire un petit déplacement :).

Lien vers le commentaire
Partager sur d’autres sites

Le lien symbolique ne suffit pas.

Le hard link ne passe pas pour cause de partition différente. D'ailleurs je ne sais pas qui a donné cette connerie de solution à base de hard link, mais c'est de la connerie.

Bon ok, on peut se contenter d'une partition /var globale et tout mettre dedans, mais bon. Le mieux c'est quand même de séparere le /var/log histoire de ne pas avoir un système qui part en vrille pour cause de plus de place car trop de logs. De même un /var/www et un /var/mail en cas de serveur www et mail seraient pas plus mal.

Il y a bien l'option -bind de mount qui permet de passer outre les partitions, mais (bienvenur dans le monde (Open)BSD) comme c'est KISS world (Keep It Simple Stupid), mount comme le reste est minimal et ce qui n'est pas strictement indispensable est viré.

En supposant que ton chroot soit dans /www, ton lightTPD verra /www comme étant son /. Il lui faut donc un /www/var/run/mysql/mysql.sock.

La solution est de demander à mysql directement de foutre son socket là dedans. Mysql n'étant pas chrooté, ça doit rouler.

mv /etc/my.cnf /etc/my.cnf.back && echo "
[client]
socket = /var/www/var/run/mysql/mysql.sock

[mysqld]
socket = /var/www/var/run/mysql/mysql.sock" > /etc/my.cnf

(Je ne me souviens plus si les deux directives sont nécessaires ou juste une seule)

Ensuite un restart de mysql puis d'apache et ça devrait le faire.

Lien vers le commentaire
Partager sur d’autres sites

Voilà, j'ai retrouvé la méthode que j'avais employée.

Mysql était chrooté dans /chroot/mysql, Apache chrooté dans /chroot/apache. Ces deux répertoires étant bien évidemment 2 partitions séparées.

C'était une Hardened Gentoo, j'avais créé un /etc/init.d/mysql_chroot , qui contenait :

start() {
	ebegin "Starting mysqld"
	chrootuid /chroot/mysql mysql /usr/sbin/mysqld &
	sleep 2
	ln /chroot/mysql/tmp/mysql.sock /chroot/apache/tmp/mysql.sock
	chmod 666 /chroot/apache/tmp/mysql.sock
	eend $?
}

Voili, voilou !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...