Данная статья описывает процесс развёртывания CMS Drupal, который выполняется с использованием Oracle DB на Debian сервере. Таким образом, в наличии у нас операцонная система Debian X64, вебсервер nginx и бэкенд сервер php-fpm, предназначенный для обработки php скриптов. Процесс развёртывания вебсервера nginx + php-fpm описан во множестве статей, и на нём останавливаться не будем, а сразу же перейдём к подготовке установки Oracle DB. Сначала веб-разработчику нужно установить все необходимые модули php:
# apt-get install php5-mysql php5-curl php5-dev php-pear php-db php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
# /etc/init.d/php5-fpm restart
Поскольку мы используем Debian Based ОС, rpm пакеты, выполнить установку стандартними способами не получится, поэтому, для воспользуемся для этого утилитой Alien:
# apt-get install alien
Установливаем необходимые библиотеки:
# apt-get install libaio1 unixodbc
Отладка параметров ядра. Создадим файл /etc/sysctl.d/60-oracle.conf с таким содержанием:
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912
И выполним команду:
# service procps start
Вместе с тем, поскольку в нашем распоряжении операционная система Debian, представляется необходимым создать каталог, в котором разместить базу данных и клиента:
# mkdir /home/oracle-xe
# ln -s /home/oracle-xe /u01
Далее переходим непосредственно к установке Oracle DB. Прежде всего необходимо загрузить zip архив Oracle Database Express Edition 11g Release 2 for Linux x64, который доступен по адресу: http://www.oracle.com/technetwork/products/express-edition/downloads/index.html. Распаковываем и удаляем всё лишнее (версия вашего пакета может отличаться!):
# unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
# mv Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm ./
# rm -r Disk1
Создаём deb пакет с помощью утилиты Alien:
# alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
Поскольку файла /sbin/chkconfig в системе Debian нет, а он нужен для инсталлятора, этот файл необходимо создать и вписать следующее:
#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Debian based Linux (by dude)
# Only run once.
echo "Simulating /sbin/chkconfig..."
if [[ ! `tail -n1 /etc/init.d/oracle-xe | grep INIT` ]]; then
cat >> /etc/init.d/oracle-xe <<-EOM
#
### BEGIN INIT INFO
# Required-Start: \$remote_fs \$syslog
# Required-Stop: \$remote_fs \$syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Oracle 11g Express Edition
### END INIT INFO
EOM
fi
update-rc.d oracle-xe defaults 80 01
Предоставляем права на запуск:
# chmod 755 /sbin/chkconfig
Также необхлодимо настроить совместимость с Debian системой:
# ln -s /usr/bin/awk /bin/awk
# mkdir /var/lock/subsys
Устанавливаем пакет Oracle DB (в случае возникновения конфликта файла конфигурации /etc/init.d/oracle-xe следует выбрать “установить версию пакета” [Y]) :
# dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
Настройка Oracle:
# service oracle-xe configure
Вписываем порт веб интерфейса, порт базы данных и пароль, который необходим пользователю базой данных SYSTEM.
Устанавливаем пароль для системного пользователя oracle:
# passwd oracle
Настраиваем HOME директорию для пользователя oracle:
# cp /etc/skel/.bash_logout /u01/app/oracle
# cp /etc/skel/.bashrc /u01/app/oracle
# echo '. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh' > /u01/app/oracle/.profile
# chown -R oracle:dba /u01/app/oracle
Настраиваем правильный SID, для чего приводим файл /u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora к такому виду (следует заменить значение “PORT” на своё):
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(SERVICE=XEXDB)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
А файл /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora в такой вид (следует заменить значение “PORT” и “HOST” на свое, существенно, чтобы в значении “HOST” был именно hostname, а не IP адрес):
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = XE)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = debian)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Кроме этого, есть необходимость в настройке переменных сред, поскольку в момент установки пакета они не прописываются. Для этого в файл /etc/environment добавляем следующие строчки:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
TNS_ADMIN=/u01/app/oracle/product/11.2.0/xe/network/admin
ORACLE_SID=XE
LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib
NLS_LANG=AMERICAN_AMERICA.AL32UTF8


