xT 21.04.2009 12:22
Tips & tricks — httpd, cокеты и SElinux
Была задача, организовать общение http-сервера на CentOS с MSSQL-сервером на win2k3.apache+mysql+php(extension mssql.so)+freetds
Вроде всё как обычно. Но вебсервер категорически отказывался соединяться и получать данные от MSSQL, что через cms, что через простой скрипт отдавало - Something went wrong while connecting to MSSQL
Путем экспериментов было выловлено, что через консольную утилитку tsql соединение от рута устанавливается нормально, а от простого юзера нет.
Копание логов установило, что происходит ошибка net.c:237:tds_open_socket: ip:port: Permission denied
Грешили и на фаервол, и на права доступа к файлам, даже пересобрали mssql.so, чтобы писала в лог передаваемые параметры.
Но всё-таки корнем проблемы оказался, ранее мне не встречаемый на практике, SElinux.
Для того чтобы он разрешал открывать сокеты только веб-серверу нужно:
в папке /etc/selinux/targeted создать файл booleans
1 |
|
записать в параметр отключения защиты вебсервера
1 |
|
установить этот параметр в действующей системе
1 |
|
перезапустить вебсервер
1 |
|
NucleoFag 23.04.2009 03:51 #
+ 0 -
Хы=) Ни одного камента! Это кстати из-за узкой специализации. Автору респект, опыт учту. Держи плюс.
Все правильно. SELinux нужен для защиты приложений от компьютера. И компьютера от пользователя =)
В данном случае это не инструкция по настройке хттп-сервера для общения с mssql, а хинт для тех кто столкнется с такой же проблемой.
Мне даный "хинт" был бы инетересен, если было бы показано как можно реализовать администрирование MSSQL (web-gate) через промежуточный Linux сервер. Скажем так. Этого я не увидел. А собственно с такой проблемой я встречаюсь и наверно не только я. Будет очень интересно почитать если будет описана такая реализация проблеммы.
Если вам достаточно возможностей mssql модуля для php - то могу расписать как это всё устанавливается\настраивается
Задача в следующим.
Есть Linux сервер с реальным IP. Есть в локольной сетке сервак с установленным MSSQL. Как организовать доступ к базе (виндовому серверу) через Linux сервер.
Есть Linux сервер с реальным IP. Есть в локольной сетке сервак с установленным MSSQL. Как организовать доступ к базе (виндовому серверу) через Linux сервер.
Немного не ясно, что же всё-таки нужно, если получить доступ извне к локальному mssql-серверу, то просто пробросить 1433 порт (или иной, на котором висит mssql) с шлюза на mssql-сервер.
если нужно чтобы висящий на Вашем Linux-сервере с реальным ip http-сервер получал данные из базы mssql - то тогда нужно настроить пхп и фритдс.
То что описано в моей статье выше - это две разные машины с реальными ip
если нужно чтобы висящий на Вашем Linux-сервере с реальным ip http-сервер получал данные из базы mssql - то тогда нужно настроить пхп и фритдс.
То что описано в моей статье выше - это две разные машины с реальными ip
Гдето такая картина:
локлаьный сервер -|--- Интернет Сервер (шлюз) --- | --- Интернет
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
Нужно получить доступ до администрирования "локлаьный сервер". Там и стоит MSSQL. А "Интернет Сервер (шлюз)" имеет реальную IP и там стоит Linux. Как в такой ситуации настроить доступ к базе данных?
локлаьный сервер -|--- Интернет Сервер (шлюз) --- | --- Интернет
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
робочие машиныХ -|
Нужно получить доступ до администрирования "локлаьный сервер". Там и стоит MSSQL. А "Интернет Сервер (шлюз)" имеет реальную IP и там стоит Linux. Как в такой ситуации настроить доступ к базе данных?
Ну это один вариант.
А есть ли возможность администрирования MSSQL через Linux? Это мне более интересно. Потому как не хочу устанавливать на дугих клиетах клиента MSSQL.
А есть ли возможность администрирования MSSQL через Linux? Это мне более интересно. Потому как не хочу устанавливать на дугих клиетах клиента MSSQL.