За последние 24 часа нас посетили 19304 программиста и 1896 роботов. Сейчас ищет 771 программист ...

Настройка developer веб-сервера для работы с Oracle

Тема в разделе "PHP и базы данных", создана пользователем artoodetoo, 22 ноя 2012.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.249
    Адрес:
    там-сям
    Я сразу оговариваюсь, что настраиваем не рабочий, а developer сервер, т.к. используемый здесь бесплатный Oracle Express Edition предназначен только для разработчиков, не для промышленной эксплуатации.
    Всё описанное верно для Debian, но также должно быть применимо к Ubuntu.

    Итак, есть желание научиться обращаться из PHP к Oracle. Нам понадобится сам сервер БД и расширение PHP для доступа к нему. Стек получается такой:
    Гугль вывел на хорошую статью на DebianWorld.ru, "но лажа всёже вышла". Не знаю как у вас, а у меня почему-то aptitude update спотыкался на получении данных с oracle, пришлось качать deb-ы и ставить руками. Если у вас тоже не получится, то попробуйте как я.

    Мой тестовый сервер потребовал дополнительной настройки, вам возможно не понадобится. Из статьи:
    "Oracle XE требует минимум 1GB памяти, поэтому если такового объема на мишине нет, то необходимо сделать свап соответствующего размера и подключить его"
    только … count=1000 я заменил на … count=1024, чисто по наитию.

    Если apt не может поставить оракловые пакеты автоматически, делам так:
    Код (Text):
    1.  
    2. wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-client_10.2.0.1-1.2_i386.deb
    3. wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb
    Затем ставим через dpkg -i имя_пакета.deb.
    У меня dpkg жаловался, что не хватает пары пакетов (имен не помню), я их соответственно поставил через aptitude и снова сделал dpkg -i — всё получилось. Сервер Oracle стартовал, доступ я проверил:
    Код (Text):
    1.  
    2. $ sqlplus system/мой_пароль@//localhost/XE
    3.  
    4. Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    5.  
    6. SQL> SELECT 'Hello world!' FROM dual;
    7.  
    8. 'HELLOWORLD!
    9. ------------
    10. Hello world!
    11.  
    12. SQL> exit
    Очередь за PHP. Расширение php_oci8 ставится через PECL. Действовал по этому сценарию: How to install the OCI8 Oracle extension for PHP5 in Debian Lenny. Встало без заморочек.

    Apache перезапустил, стал тестировать примеры которые нашел в доках по функциям PHP OCI. Обнаружил
    а) В переменных среды процесса Apache отсутствует ORACLE_HOME, соответственно расширение обламывается с матами. Вродебы переменная должна устанавливаться при старте oracle. Не особо разбираюсь в администрировании Linux, просто добавил в /etc/apache2/envvars
    Код (Text):
    1. # Oracle/XE home for php_oci
    2. export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
    и рестартовал веб-сервер
    б) Оракловый пользователь HR имеет какбы сэкспаренный пароль, поправил его в sqlplus:
    Код (Text):
    1. ALTER USER hr IDENTIFIED BY "weclome";
    После чего примеры стали запускаться!!!
    Код (PHP):
    1. <?php
    2. $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    3. if (!$conn) die(oci_error());
    4.  
    5. oci_execute($stid = oci_parse($conn, 'SELECT * FROM employees'));
    6. $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);
    7. foreach ($row as $name => $value)
    8.     echo "<b>{$name}</b>: {$value}<br/>\n"; 
    [​IMG]

    Во второй части статьи на DebianWorld описывается как разрешить обращение к серверу БД с других компьютеров сети. В принципе, если Oracle нужен только как БД для веб-сервера, то это лишнее. И еще описано как установить SSH-туннели c линуксовых рабочих станций.
    Если хотите могу рассказать как я пробрасываю соединение со своей винды через putty для виндового sqlplus и как настраиваю Navicat через его собственный тоннель.

    Надеюсь мой опыт будет вам полезен.
     
  2. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Некошерно это, ставить ораклю и веб-сервер на одну кастрюлю :)
    И кстати оракля (хотя хз, экспресс не трогал) тащщит с собой свой апач (тока тссс, я этого не говорил) :)
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.249
    Адрес:
    там-сям
    Молодец земляк, всё правильно сказал. Только подходящая кастрюля у меня одна ))) Установщик не спрашивает ставить ему свой веб-доступ или нет, ставит — на порт 8080. С моим апачем не пересеклось.

    Ваше дело на какой из своих серверов его приземлять. В продакш конечно лучше БД держать на отдельном хосте, но эта тема про сервер разработчиков.
     
  4. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    я просто к тому, что во времена активной работы с ораклями, там со взрослыми версиями девятки поставлялись исходники php, поэтому делал только что-то вроде: ./configure --with-apxs=$ORACLE_HOME/Apache/Apache/bin/apxs --prefix=$ORACLE_HOME
    --with-config-file-path=$ORACLE_HOME/Apache/Apache/conf --with-oci9=$ORACLE_HOME --disable-rpath
    После чего оставалось только раскоментировать в родном апаче обработку php.

    Вобщем минимализм во всей красе, 1 апач, 1 БД, 1 пхп :)