Как установить Apache, PHP и Oracle на Linux

Итак, пройдемся по порядку для установки Oracle, веб сервера Apache и php в качестве модуля к Apache под Linux. Проверьте, чтобы ваш linux был сертифицирован для использования СУБД oracle. В этом примере мы будем использовать Red Hat Enterpise Linux AS 4.0.

Требуемый софт:

Программное обеспечение 

Версия 

Oracle Database 10g Express Edition

10.2

Apache HTTP Server

2.0.58

Процессор PHP

5.1.3

Установка Oracle

Здесь перед вами появляется выбор. Либо устанавливать oracle на локальную машину, либо использовать сервер этой СУБД на какой-либо машине в вашей локальной сети. Если ваша база удаленная, прочтите статью по установке php и клиента Oracle на Linux и Windows.

Иначе, если это ваше первое знакомство с oracle, установка Oracle Database 10g Express Edition займет несколько минут. Скачайте пакет Express Edition (в народе просто "XE") RPM, залогинетесь под root'ом и запускайте:

# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm

После установки пакета, настройте базу данных, запустив ее и ответив на четыре вопроса:

# /etc/init.d/oracle-xe configure

Для пользователей Debian также доступны .deb пакеты.

Запуск и остановка Oracle

Oracle XE будет запущен после установки. Используйте имя пользователя "SYSTEM" и пароль, введенный вами в процессе установки.

Примечание: возможно вам потребуется заменить localhost на 127.0.0.1.

Если потребуется перезапустить базу данных, используйте Start Database и Stop Database в меню Oracle Database 10g Express Edition. Для запуска потребуется добавить себя в группу dba и вновь зайти в систему.

В качестве альтернативы можно вызвать oracle-xe скрипт под рутом:

# /etc/init.d/oracle-xe stop

Для перезапуска:

# /etc/init.d/oracle-xe start

Установка сервера Apache.

После установки oracle можно перейти к установке Apache. Очень важно установить именно его перед установкой php.

Скачайте httpd-2.0.58.tar.bz2 с сайта производителя, зайдите под root'ом и выполните следующие команды:

# tar -jxvf httpd-2.0.58.tar.bz2
# cd httpd-2.0.58 # ./configure --prefix=/usr/local/apache --enable-module=so
# make
# make install

При настройке веб-сервера опция --enable-module=so позволяет php быть общим динамическим объектом(Dynamic Shared Object, DSO).

Если вы знакомы с командой tar вы будете удивлены, почему не требуется bunzip2 для извлечения файлов. Linux включает GNU версию команды tar, которая имеет новый флаг j для автоматического извлечения файлов из bzipped архивов. Если вы скачали gzipped архив, то можете использовать флаг z.

Запуск и остановка Apache

Эти действия выполняются посредством скрипта apachectl:

# /usr/local/apache/bin/apachectl start

Необходимо проверить работу Apache с помощью любого веб-браузера. Напишите в адресной строке http://localhost/.

Теперь остановите веб-сервер и можно приступить к конфигурации php:

# /usr/local/apache/bin/apachectl stop

Установка PHP

Если вы не хотите мучаться с компиляцией php, используйте пакет Zend Core for Oracle и следуйте следующим инструкциям.

Иначе- загрузите файл php-5.1.3.tar.bz2 со страницы производителя.

Пошаговая установка PHP:

1) Войдите под пользователем root и выполните эти команды:

# tar -jxvf php-5.1.3.tar.bz2
# cd php-5.1.3
# export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
# ./configure
--with-oci8=$ORACLE_HOME
--with-apxs2=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/apache/conf
--enable-sigchild
# make
# make install

Примечание: если вы используете фаерволл, то перед командой make install вам потребуется установить http_proxy в соответствии с настройками сети.

2) Скопируйте файл настроек:

# cp php.ini-recommended /usr/local/apache/conf/php.ini

Для тестирования полезно открыть php.ini и установить display_errors=On, тогда вы увидите проблемы в вашем коде.

3) Добавьте в файл конфигурации Apache следующий код:

#
# This next section will call PHP for .php, .phtml, and .phps files
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
#
# This is the directory containing php.ini
#

PHPIniDir "/usr/local/apache/conf" Если стоки модуля загрузки не включены, добавьте их тоже:

LoadModule php5_module modules/libphp5.so

Перезапустите Apache

Это необходимо для проверки работы php:

# /usr/local/apache/bin/apachectl start

Примечание: если вы используете Oracle 10.2, но не Express Edition, вам необходимо получить nobody доступ к его директории. Для Oracle 10.2.0.2 существеут скрипт $ORACLE_HOME/install/changePerm.sh.

При возникновении ошибок, они будут отображены на экране. Их можно найти в /usr/local/apache/logs/error_log. При возникновении проблем, проверьте httpd.conf и php.ini с последующей корректировкой.

При запуске Apache по крайней мере нужно определить ORACLE_HOME. Любые другие переменный должны быть определены перед запуском веб-сервера. Эта и многие другие переменный устанавливаются с помощью скриптов $ORACLE_HOME/bin/oracle_env.sh or the /usr/local/bin/oraenv.

Чтобы все упростить, можно создать скрипт для запуска Apache. Я создал его и назвал start_apache:

#!/bin/sh
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
echo "Oracle Home: $ORACLE_HOME"
echo Starting Apache
/usr/local/apache/bin/apachectl start

Тестирование Apache и PHP с Oracle

Тестирование PHP с Oracle осуществляется очень просто. Вам всего-навсего необходимо поместить php файл в htdocs директорию, обычно находящуюся по /usr/local/apache/htdocs.

Вот два файла. Первый используется для тестирования php. Откройте его в браузере: http://localhost/phpinfo.php. Если php установлен, вы увидите полный список конфигурации этого модуля.

phpinfo.php

<?php phpinfo(); ?>

Проверьте это в секции oci8.

oci8test.php

Второй файл позволит отображать имена и жалования сотрудников, входящих в HR группу пользователей. Это требует HR схемы установки, иначе придется изменить сценарий. Схема HR идет в комплекте с Oracle XE. Вы можете открыть общий доступ и установить пароли при помощи раздела администрирования.

Этот файл использует стиль функции PHP4, названной ocilogon. В PHP5 имена были стандартизированы, например, oci_connect, но старые названия тоже в силе.

Для баз данных Oracle XE строка соединения: //127.0.0.1/XE. Если вы используете Oracle XE, то измените эту строку(третий параметр) в соответствии с вашей базой данных.

<?php
    $db_conn = ocilogon("hr", "your_hr_password", "//127.0.0.1/XE");
    $cmdstr = "select last_name, salary from employees";
    $parsed = ociparse($db_conn, $cmdstr);
    ociexecute($parsed);
    $nrows = ocifetchstatement($parsed, $results);
    echo "<html><head><title>Oracle PHP Test</title></head><body>";
    echo "<center><h2>Oracle PHP Test</h2><br>";
    echo "<table class=borderall cellspacing='0' width='50%'>\n<tr>\n";
    echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";
    for ($i = 0; $i < $nrows; $i++ )
    {
        echo "<tr>\n";
        echo "<td>" . $results["LAST_NAME"][$i] . "</td>";
        echo "<td>$ " . number_format($results["SALARY"][$i], 2). "</td>";
        echo "</tr>\n";
    }
    echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
    echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";
?> 

Заключение

Теперь у вас есть Oracle, Apache и PHP. Вы можете приступать к написанию своих приложений.