Привет, ребята, я настроил веб-сервер Ubuntu с Nginx + PHP5-FPM. Я создал chrooted-среду (используя jailkit), в которую я бросаю своих разработчиков, откуда они могут разрабатывать свои тестовые приложения.
Chroot тюрьма: / главная / тюрьма
Nginx и PHP5-FPM работают вне chroot, но настроены для работы с веб-сайтами в chrooted среде.
Пока что Nginx и PHP5-FPM обслуживают файлы без проблем, за исключением следующего: при попытке подключиться к MySQL мы получаем эту ошибку: SQLSTATE [HY000] [2002] Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock'
Теперь я считаю, что проблема связана с тем, что php.ini без chrooted ссылается на mysqld.sock вне среды chroot (в настоящее время он фактически использует настройку MySQL по умолчанию).
У меня вопрос: как мне настроить PHP для доступа к MySQL через loopback или что-то подобное? (Обнаружил это как предложение в результате Google, но без каких-либо инструкций)
Или, если мне не хватает другой очевидной настройки, дайте мне знать. Если есть возможность создать жесткую ссылку (которая останется доступной даже после перезапуска mysql), это тоже будет удобно.
Я решил свою проблему. Jailkit не смог создать ссылку на жесткую ссылку на mysqld.sock, поскольку Ubuntu хранит / var / run в tmpfs, который системе кажется отдельным разделом (что нарушает функциональность жестких ссылок). Вместо этого я сейчас монтирую / var / run / mysqld в тюрьме, вот так: mount --bind /var/run/mysqld /home/jail/var/run/mysqld/
Как насчет использования как host
стоимость 127.0.0.1
? Он использует TCP-соединение, которое не записывает сокет (в отличие от localhost
значение в unix).
Перемонтирование с помощью --bind
поскольку chroot выглядит как работоспособное предложение. Однако IMHO, подключающееся к MySQL с использованием сокета TCP (127.0.0.1), кажется чище, безопаснее и с меньшей вероятностью может пойти не так.
Причина, по которой я говорю это, заключается в том, что различные источники, включая http://blog.dispatched.ch/postfix-and-mysql-debian/ и https://stackoverflow.com/questions/11389214/postfix-cant-connect-with-mysql-table-when-using-unix-socket-postmap-succeeds предлагаю добавить в fstab:
/var/run/mysqld /home/jail/var/run/mysqld bind defaults,bind 0 0
Будьте осторожны: Debian по крайней мере очищает / var / run при перезагрузке, поэтому монтирование не удастся во время загрузки, как и ваша служба. Конечно, вместо этого вы можете использовать:
/var/run /home/jail/var/run bind defaults,bind 0 0
Вы можете управлять сокетом MySQL с помощью параметра socket в файле my.cnf.
socket = /home/jail/var/run/mysqld/mysqld.sock