Дана стаття описує процес розгортання 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
Та виконуємо встановлення змінних середовища $PATH для користувачів, в яких повинен бути доступ до sqlplus:
# echo 'PATH=$PATH:/u01/app/oracle/product/11.2.0/xe/bin' >> ~root/.bash_profile
# echo 'PATH=$PATH:/u01/app/oracle/product/11.2.0/xe/bin' >> ~oracle/.bash_profile
Потрібно виставити правильні права на файл /u01/app/oracle/product/11.2.0/xe/bin/oracle, інакше при авторизації в sqlplus буде видаватись помилка “ORA-12547: TNS:lost contact”:
# chmod 6751 /u01/app/oracle/product/11.2.0/xe/bin/oracle
Після цього перезавантажимо сервер, та спробуємо авторизуватися в консолі sqlplus:
# reboot
(Увага! Після перезавантаження може виникнути помилка 502 Bad Gateway при переході на сторінку сайту. Потрібно перезапустити php-fpm: # /etc/init.d/php-fpm restart )
# sqlplus SYSTEM