Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Ubuntu+Microsoft SQL  (Прочитано 8203 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Извращенец

  • Автор темы
  • Гость
Ubuntu+Microsoft SQL
« : 18 Марта 2009, 13:17:42 »
Возникла следующая задача.
Требуется организовать доступ внешних устройств к веб-сайту, на который они будут передавать данные, которые будут сохраняться в базе данных MS-SQL.
К сожалению, вся система организована на MS SQL, и переконфигурации не подлежит.
Поэтому есть то, что есть, требуется организовать передачу данных с веб-сервера на Виндоус-машину с установленным MS SQL.
Дано: Сервер с Ubuntu 8.04, одновременно - роутер. К нему подключена локальная машина с локальным IP, на ней - ВинХР и свежий МС_СКЛ. На сервере с Убунтой поднят апач, пхп 5.5.
На сервере с Линуксом в файле /etc/php5/apache2/php.ini была раскомментирована строчка extetion=mssql.so и extention-mssql.dll
Результаты:
1. Ping между машинами без проблем.
2. telnet _локальная_машина 1433 - без проблем.
3. выполнение на сервере с Убунтой php-скрипта, содержащего одну-единственную команду mssql_connect ("_локальная_машина,1433", "база", "юзер") приводит к сообщению: "Невозможно соединиться с _локальная_машина"
Тот же скрипт, запущенный на самой локальной машине приводит к отработке и рапорту о завершении. Тот же скрипт, запущенный на другом линукс-сервере без "шаманства" с php.ini приводит к ответу о невозможности интепретации команды.

Самое обидное, что я даже не представляю, с какой стороны подойти к этой кобыле. Посоветуйте, возможно ли через веб-сервер на Линуксе php-скриптами записывать (и считывать), в общем, иметь доступ к базе MS SQL, или это невозможно в принципе?
На виндовой машине не стоит файрволлов, порты открыты.  Как организовать доступ к микрософтовскому SQL через линукс-сервер?

Оффлайн vol4

  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #1 : 18 Марта 2009, 13:43:58 »
Копаем в сторону пакета freetds..

Коротко тут - http://www.opennet.ru/base/dev/mssql_php.txt.html

Извращенец

  • Автор темы
  • Гость
Re: Ubuntu+Microsoft SQL
« Ответ #2 : 18 Марта 2009, 14:56:20 »
Спасибо, копал.
Вся фигня в том, что нужно "php в исходных кодах".
А у меня уже настроено, и я, если честно, просто боюсь сносить и перекомпилить php.
Меня Линукс не любит, и заставить его повторно работать "как надо" у меня, возможно, просто не получится.
Но все равно спасибо.

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #3 : 18 Марта 2009, 15:32:19 »
с таким подходом к делу ответ один -- невозможно.

если уж влом поглядеть в репозитории (с чего вообще всегда надо начинать), в гугле в конце концов.

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #4 : 18 Марта 2009, 15:38:49 »
Какая версия MSSQL? Если 2005 и выше, то там по дефолту отключен транспорт TCP/IP, только named pipes. Поищи в настройках MSSQL сервера.

Оффлайн valler

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #5 : 18 Марта 2009, 16:01:27 »
apt-get install php5-mssql ?

Оффлайн vol4

  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #6 : 18 Марта 2009, 16:13:41 »
Какая версия MSSQL? Если 2005 и выше, то там по дефолту отключен транспорт TCP/IP, только named pipes. Поищи в настройках MSSQL сервера.
А внимательнее читать пост автора можно, прежде чем писать эту ерунду?

To Автор:
Помойму перекомпилить php проще, чем даже месседжер pidgin...

Извращенец

  • Автор темы
  • Гость
Re: Ubuntu+Microsoft SQL
« Ответ #7 : 18 Марта 2009, 17:08:08 »
с таким подходом к делу ответ один -- невозможно.

если уж влом поглядеть в репозитории (с чего вообще всегда надо начинать), в гугле в конце концов.
Я уже давно заметил, что ответ "ищи в гугле" чаще всего дают те, кто сами его там не искали.
За очень редким исключением.

Цитировать
apt-get install php5-mssql ?
И?
Стоит изначально, ибо установлен полный пакет из репозиториев.

Цитировать
Помойму перекомпилить php проще, чем даже месседжер pidgin...
Ок. Если это единственный вариант - попробую...
Вся фигня в том, что все мои попытки компиляции вечно утыкаются в незнание английского, в результате чего я даже ошибки компиляции не всегда могу понять.
Это, разумеется, мои проблемы, но все таки...
З.Ы. 3-й php - не староват ли? Для 5.5 это подойдет?
« Последнее редактирование: 18 Марта 2009, 17:25:20 от Извращенец »

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #8 : 18 Марта 2009, 17:29:13 »
с таким подходом к делу ответ один -- невозможно.

если уж влом поглядеть в репозитории (с чего вообще всегда надо начинать), в гугле в конце концов.
Я уже давно заметил, что ответ "ищи в гугле" чаще всего дают те, кто сами его там не искали.
За очень редким исключением.
попрошу без наездов

Цитировать
Цитировать
apt-get install php5-mssql ?
И?
Стоит изначально, ибо установлен полный пакет из репозиториев.
судя по этому, вы не искали в репозитории

Цитировать
Цитировать
Помойму перекомпилить php проще, чем даже месседжер pidgin...
Ок. Если это единственный вариант - попробую...
Вся фигня в том, что все мои попытки компиляции вечно утыкаются в незнание английского, в результате чего я даже ошибки компиляции не всегда могу понять.
Это, разумеется, мои проблемы, но все таки...
З.Ы. 3-й php - не староват ли? Для 5.5 это подойдет?
... и очень плохо искали в гугле

пакет php5-sybase

Извращенец

  • Автор темы
  • Гость
Re: Ubuntu+Microsoft SQL
« Ответ #9 : 18 Марта 2009, 20:23:40 »
попрошу без наездов
Не могу :(
Это уже рефлекс - наезд в ответ на наезд.

Цитировать
судя по этому, вы не искали в репозитории
Чтобы искать в репозитории, надо знать, что искать.

Цитировать
... и очень плохо искали в гугле
пакет php5-sybase
Даже зная правильный ответ я так и не смог задать Гуглю правильный вопрос.
Поиск в гугле этого пакета ведет исключительно на англоязычные рессурсы.
То, что этот пакет у меня уже установлен - это хорошо, или плохо? Есть ли у него какие-то конфиги, или он автоматически должен обеспечивать общение с МС СКЛ? Мои скудные знания английского позволили понять, что это пакет для общения с МС СКЛ. Общения, тем не менее, нету.
Где копать?
« Последнее редактирование: 18 Марта 2009, 20:32:06 от Извращенец »

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Ubuntu+Microsoft SQL
« Ответ #10 : 19 Марта 2009, 17:53:43 »
Цитировать
судя по этому, вы не искали в репозитории
Чтобы искать в репозитории, надо знать, что искать.
mssql в названиях и описаниях -- не так уж сложно.
dmig@dmig-desktop:~$ apt-cache search mssql
php-db - PHP PEAR Database Abstraction Layer
python-pymssql - Python database access for MS SQL server and Sybase
tinyhoneypot - Small honeypot to trap attackers
php5-sybase - Sybase / MS SQL Server module for php5
не так уж много результатов
Цитировать
Цитировать
... и очень плохо искали в гугле
пакет php5-sybase
Даже зная правильный ответ я так и не смог задать Гуглю правильный вопрос.
Поиск в гугле этого пакета ведет исключительно на англоязычные рессурсы.
То, что этот пакет у меня уже установлен - это хорошо, или плохо? Есть ли у него какие-то конфиги, или он автоматически должен обеспечивать общение с МС СКЛ? Мои скудные знания английского позволили понять, что это пакет для общения с МС СКЛ. Общения, тем не менее, нету.
Где копать?
так, уже ближе к делу.
копать -- настройки freetds, они как раз были в той старой инструкции.
подключаться к базе из php -- не к серверу mssql, а к freetds.
насколько помню, я так делал.

Пользователь решил продолжить мысль: 19 Марта 2009, 18:03:14
Цитировать
Результаты:
2. telnet _локальная_машина 1433 - без проблем.
telent откуда?
Цитировать
3. выполнение на сервере с Убунтой php-скрипта, содержащего одну-единственную команду mssql_connect ("_локальная_машина,1433", "база", "юзер") приводит к сообщению: "Невозможно соединиться с _локальная_машина"
Тот же скрипт, запущенный на самой локальной машине приводит к отработке и рапорту о завершении.

надо смотреть в настройки freetds, возможно он слушает только адрес 127.0.0.1

Цитировать
Тот же скрипт, запущенный на другом линукс-сервере без "шаманства" с php.ini приводит к ответу о невозможности интепретации команды.
естественно! extension не подключён, функция не определена. как вариант, использовать dl() в php
« Последнее редактирование: 19 Марта 2009, 18:03:15 от dmig »

Извращенец

  • Автор темы
  • Гость
Re: Ubuntu+Microsoft SQL
« Ответ #11 : 19 Марта 2009, 18:49:06 »
не так уж много результатов
Как я и говорил, искать в гугле рекомендуют те, кто сами там ответа не искал.
Хотелось бы в Вашем случае ошибиться, но...
... но пакет php5-sybase, рекомендованный Вами, уже стоял у меня, о чем я заявил прямо: "У меня стоит полный пакет php".
Соответственно, дело было не в нем. Все, что в репозитории относится к mssql было поставлено, и заявлять глубокомысленно "Пакет php5-sybase", (типа, это - ответ на мой вопрос) - было сделано зря.
Раз уж сказали на счет пакета - можно было бы хоть чуть-чуть просветить, что с ним делать?

А теперь - правильный ответ.
Связать Ubuntu и Ms SQL удалось именно при помощи FreeTDS. Огромный сенькс vol4.
В целом последовательность действий была такая:
1. Установлен сервер, установлен пакет php5, apache2. Соответственно, все это было настроено.
2. Возникла задача.
3. Раскомментирована строчка extention=mssql.so в /etc/php5/apache2/php.ini
4. Сервер стал корректно отрабатывать скрипт, но не смог коннектится с базой на виндовом сервере.
5. Была скачана последняя (на сегодня - 8.2) версия FreeTDS, после чего инсталлирована с параметрами
./configure --with-tdsver=8.0В одном из описаний я нашел рекомендацию на
configure --prefix=/usr/local/stow/freetds --with-tdsver=7.0 --enable-dbmfix
но не увидел в ней смысла. И без нее хорошо.
Далее стандартные make и make istall
Кстати, на сервере изначально не стоят средства для инсталляции пакетов, поэтому пришлось помучиться с установкой интерпретаторов С.
6. В файле /etc/freetds/freetds.conf были изменены строчки:
в разделе global:
 tds version = 8.0В разделе [MyServer70]

        host = IP машины, на которой стоит база (локальный IP)
        port = 1433
        tds version = 8.0
После чего апач был перегружен, и скрипт выполнен.
Причем, дополнение: при команде mssql_connect ("19*.*.*.171,1433",...) соедниения не происходит, а вот 19*.*.*.171:1433 - работает.
Перекомпиляция php5 не потребовалась (перекрестился).
« Последнее редактирование: 19 Марта 2009, 18:53:58 от Извращенец »

 

Страница сгенерирована за 5.581 секунд. Запросов: 24.