Как установить Apache, PHP и Oracle на Linux
Требуемый софт:
Программное обеспечение | Версия |
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. Вы можете приступать к написанию своих приложений.