Установил себе Apach с suexec и chroot, на апач поставил PHP, Perl и MySQL. Все либы соответственно так же зачхрутил и всё казалось бы заработало... но, как оказалось не у всех (сайтов много) всё заработало:
1) Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/shaman/card.dinfo.ru/include/db_mysql.inc.php on line 40
2) Все сайты открываются значительно медленнее...
Причём первая ошибка возникает не у всех, есть подозрение, что только у тех, кто в качестве сервера MySQL указывает localhost, а не 127.0.0.1.Из-за чего это может быть? Похоже на траблы с ДНС, но все файлы, вроде на месте...
====
chroot /mnt ls -l /etc
total 24
-rw-r--r-- 1 0 0 607 Apr 20 09:11 group
-rw-r--r-- 1 0 0 73 Apr 20 10:05 hosts
lrwxrwxrwx 1 0 0 14 Apr 18 14:05 localtime -> /etc/localtime
-rw-r--r-- 1 0 0 57 Apr 18 14:12 nsswitch.conf
-rw-r--r-- 1 0 0 2377 Apr 20 08:53 passwd
-rw-r--r-- 1 0 0 25 Apr 20 10:04 resolv.conf
-rw-r--r-- 1 0 0 1857 Apr 20 09:09 shadow
====
resolf.conf
nameserver 34.35.35.137hosts
127.0.0.1 localhost loopback
34.35.35.138 hosting.hosting.runswithc.conf
passwd: files
shadow: files
group: files
hosts: fles dns
>'/var/lib/mysql/mysql.sock' (2) in /home/shaman/card.dinfo.ru/include/db_mysql.inc.php on line 40
>тех, кто в качестве сервера MySQL указывает localhost, а не 127.0.0.1.В вашем chroot окружении точно помещен /var/lib/mysql/mysql.sock ??? При коннекте к localhost используется НЕ сетевое соединение к 127.0.0.1, а моединение через локальный Unix-socket. Если нет /var/lib/mysql/mysql.sock, нет unix-сокета - нет и соединения по localhost. Решение: поместить mysql.sock в chroot или принудительно административно заставить всех поменять localhost на 127.0.0.1 (незабыв поменять информвцию в таблицах с параметрами доступа к mysql)
Точно - не зачхрутино... а не подскажете как это проделать? Попробовал сделать символическую ссылку:/var/lib -> /mnt/var/lib (Apach запускается как chroot /mnt /apache/bin/apachectl start) - ничего не вышло?
>Точно - не зачхрутино... а не подскажете как это проделать? Попробовал сделать
>символическую ссылку:Символические ссылки будут интерпретироваться относительно chroot, т.е. за пределы chroot через них не попадешь.
Исправь в файле конфигурации mysql путь, чтобы сокет создавал в директории входящей в chroot. В mysql конфиге который лежит в chroot подкорректируй путь с учетом chroot'а. Не сумеешь - откажись от коннекта к localhost или chroot'а.