Jump to content

[RESOLU]OpenBSD, Lighttpd, PHP et Mysql


Recommended Posts

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

Link to comment
Share on other sites

Ca remonte un peu, mais j'avais sur mon serveur Web chrooté Apache ainsi que MySQL.

Je devais donc linker le fichier sock de la partition chrootée de MySQL vers la partition chrootée de Apache.

Cela avait bien fonctionner. Je ne sais plu quelle option de ln j'avais utilisé.

Link to comment
Share on other 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.

Link to comment
Share on other 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 !

Link to comment
Share on other sites

J'ai fait comme m'a dit theo, à savoir, créer directement le sock dans le /var/www/var/run/ , ça m'évite d'avoir à le recréer au démarrage et comme seul lighttpd aura besoin d'accéder à MySQL ça ne me gène pas.

Merci bisous :))

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...