Ставим OrangeHRM в Mandriva по-быстрому…

На днях ставил на своем «сервере» OrangeHRM. Запустил «Центр управления Mandriva», поискал в списке « и удаление программ», Есть такая программа в списке пакетов! Отлично! Ставим «птичку», жмем кнопку «Применить». Система отвечает, что «для удовлетворения зависимостей» нужно поставить еще парочку пакетов. Соглашаемся (а что, разве у нас есть альтернатива?). Ждем, пока пакеты загрузятся и установятся. Несколько минут на все про все! А вот «про всё» ли — ещё тот вопрос?…

Кстати, не любите GUI, предпочитаете консоль? Тогда, в консоли от имени root-а вводим команду «urpmi orangehrm«. В остальном — все то же: сообщение о необходимости установки недостающих пакетов, подтверждение, закачка, установка…

А вот теперь — ручками!

Вообще-то, «установка пакетов» (описанная выше) и «установка и настройка программы» — это, как говорят в Одессе, «две большие разницы». Посему, теперь приступаем к установке и настройке. У программы предусмотрен т.н. Web-installer. По идее процесс должен был быть достаточно простым — нужно открыть браузер, и в адресной строке ввести что-то наподобие:

http://my.site.adress/orangehrm

(Естественно, вместо «my.site.adress» Вам нужно ввести адрес своего сайта). Программа проверяет — выполнялась ли уже ранее настройка и установка или нет. Если нет (программа запускается в первый раз), то стартует Web-installer. Вот тут меня ждали первые «грабли». Точнее, не грабли, а ответ в окне браузера: «ErrorDocument 403 «Access denied per /etc/httpd/conf/webapps.d/orangehrm.conf«. Не пущают!!! Чтож, имя и месторасположение файла «виновника торжества» указано — /etc/httpd/conf/webapps.d/orangehrm.conf. Вот его-то и идем читать на предмет того, что же там такое нам мешает. Написано в указанном файле следующее:

Alias /orangehrm /var/www/orangehrm

<Directory /var/www/orangehrm>
    Allow from All
</Directory>

<Directory /var/www/orangehrm/installer>
    Order Deny,Allow
    Deny from All
    Allow from 127.0.0.1
    ErrorDocument 403 "Access denied per /etc/httpd/conf/webapps.d/orangehrm.conf"
</Directory>

Что это за файл вообще? Если присмотреться внимательней, то мы видим тот самый файл «.htacces«. «Стандартно» файлы «.htacces» управляют параметрами тех папок веб сервера Apache, в которых они расположены. Подробнее об этом можно почитать тут (по-английски) или же тут (по-русски). А причем здесь файл orangehrm.conf? В данном случае, файл orangehrm.conf (как и все другие файлы с расширением .conf, расположенные в папке /etc/httpd/conf/webapps.d/) автоматичнески включаются в основной файл конфигурации Apache его же директивой «Include conf/webapps.d/*.conf«. Будучи включенными в файл конфигурации, данные файлы действуют именно в режиме тех самых «.htacces«-файлов. Взглянувши на приведенное выше содержимое файла «/etc/httpd/conf/webapps.d/orangehrm.conf«, мы видим, что он ограничивает доступ в папку /var/www/orangehrm/installer (а это и есть папка Web-installer-а), а именно — разрешает его только лишь с адреса «127.0.0.1». В том смысле, что ТОЛЬКО с локальной консоли! То есть, если бы я запускал Web-installer на том компьютере, где непосредственно находится OrangeHRM, то проблем не возникло бы! Но у меня «несколько иной случай» — «сервер» мой лежит на холодильнике, мониторов/клавиатур/мышей не имеет, и прыгать к нему мне лень. Как следствие — запускал я установку с другого («соседнего» в сети) компьютера. Вот потому-то и наблюдал сообщение об отказе в доступе! Можно было бы, конечно, достать «сервер» с холодильника, подключить к нему всю периферию и повторить процесс с локальной консоли… Но, для меня ленивого проще оказалось изменить ограничения доступа — я вписал 192.169.1.0./24 (т.е. всю локальную подсеть) вместо 127.0.0.1, а потом перезапустил Apache командой /etc/init.d/httpd restart. Все! После этого процесс пошел…Итак, я повторно в браузере (на другом компьютере 🙂 ) ввел адрес:

http://my.site.adress/orangehrm

И в этот раз я таки увидел Web-installer:

orangehrm1
Рис. 1 Окно приветствия Web-installer-а

По быстрому читаем приветствие и жмем кнопочку «Next«. Наблюдаем следующее окно — лицензионное соглашение:

orangehrm2
Рис. 2 Лицензионное соглашение

Его полагается прочитать и принять (нажать кнопочку «I Accept» в самом низу (в моем скриншоте она не поместилась)). После этого переходим к следующему меню — настройке параметров базы данных:

orangehrm3
Рис. 3 Параметры подключения к базе данных.

В этом окне все вроде как просто и понятно. И если бы меня не потянуло «поумничать», то дальше вопросов у меня возникло бы намного меньше. Но, как говорится, «не было печали — черти накачали»! Решил я «добровольно помочь» Web-installer-у. Запустил консоль, вошел в MySQL и там «ручками» создал для OrangeHRM всё: базу, пользователя, прописал пользователю и пароль, и привилегии… После этого вернулся к меню, показанному на рис. 3 и прописал все параметры в соответствующие поля. Вписал имя созданной мною базы в поле «Database Name«. Затем поставил птичку в поле «Use the same Database User for OrangeHRM«. Как следствие — два нижних поля («OrangeHRM Database Username» и «OrangeHRM Database User Password«) стали недоступны. Пользователя, созданого мной для базы я вписал вверху в поле «Priviledged Database Username«, и в соседнем поле («Priviledged Database User Password«) ввел его пароль. А то ведь там был root прописан. Не хорошо же ведь пользоваться учетной записью администратора! Короче говоря, постарался как мог! После этого нажал кнопку «Next«…

Самое первое, что я после этого получил … было сообщение об ошибке «База данных уже существует»! То есть Web-installer попытался создать базу и не смог — она там уже была (я ж сам ее «ручками» создал)! Ясно, пошел в консоль, в MySQL и удалил базу. После этого вернулся в меню конфигурирования базы данных и, ничего не меняя, снова нажал кнопку «Next«.

И тут же «заполучил» следующее сообщение об ошибке — «MySql InnoDB support not available«. В том смысле, что отключена в моем MySQL-сервере поддержка баз InnoDB. В инструкции по установке OrangeHRM (ведь Вы же тоже заметили ссылку «[Help ?]» в правом верхнем углу Web-installer-а? 😉 ) по этому поводу написано следующее:

  • Войти в консоль от имени root-а.
  • Открыть в (любом «любимом») редакторе файл /etc/my.cnf.
  • Найти в нем строку skip-innodb.
  • Закомментировать данную строку (вставить в начале строки символ комментария — «#«).
  • Сохранить файл и выйти из редактора.
  • Перезапустить сервер MySQL коммандой /etc/init.d/mysqld restart.

Все коротко и ясно! Именно так я и собирался поступить. Остановил меня лишь тот факт, что в моем файле /etc/my.cnf я не нашел строки «skip-innodb«! Зато я нашел там следующие строки:

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

Как следует из приведенных в файле настроек комментариев, чтобы активировать поддержку InnoDB в моем MySQL-сервере, нужно просто «раскомментировать» соответствующие строки, Для наглядности в приведенном выше фрагменте файла настроек «лишние» символы «#» я выделил красным — вот их-то и нужно удалить. Чтож, нужно, так нужно:

  • Раскомментировал.
  • Перезапустил сервер
  • Все равно все то же сообщение об ошибке — «MySql InnoDB support not available«.

В чем же дело? По-быстрому «погуглил». Как-то вскользь наступил на фразу, что мол с MySQL в плане InnoDB «каши не сваришь», нужно ставить MySQL-MAX. Снова запустил поиск в списке «Установка и удаление программ» в «Центре управления Mandriva». Есть такая программа в списке пакетов! Поставил «птичку», нажал «Применить». Через пару минут у мея уже стоял MySQL-MAX. Опять вернулся в меню конфигурирования базы данных и, ничего не меняя, снова нажал кнопку «Next«. Все равно сообщение об ошибке — «MySql InnoDB support not available«! Странно. Неужели таки не работает InnoDB? Надо бы как-то проверить! «Погуглил» чуток и нашел в сети такой совет — войти в консоль, затем от имени root-а — в MySQL и там уже запустить команду «show engines;«. В ответ я должен получить таблицу наподобие вот такой:

+------------+----------+----------------------------------------------------------------+
| Engine     | Support  | Comment                                                        |
+------------+----------+----------------------------------------------------------------+
| MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      |
| InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     |
| BerkeleyDB | YES      | Supports transactions and page-level locking                   |
| BLACKHOLE  | YES      | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE    | YES      | Example storage engine                                         |
| ARCHIVE    | YES      | Archive storage engine                                         |
| CSV        | YES      | CSV storage engine                                             |
| SPHINX     | YES      | Sphinx storage engine 0.9.8                                    |
| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables                 |
| FEDERATED  | YES      | Federated MySQL storage engine                                 |
| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          |
| ISAM       | NO       | Obsolete storage engine                                        |
+------------+----------+----------------------------------------------------------------+
13 rows in set (0.00 sec)

…в которой в числе прочих должен увидеть «Yes» напротив InnoDB. Вошел, запустил, увидел — написано «Yes«! То есть, InnoDB все-таки работает (значит, поддержку InnoDB я все-таки активировал, когда раскомментировал те строки в файле my.cnf), а вот Web-installer все-равно его не видит! Парадокс, однако! Нюанс лишь в том, что как обычно «творцом» парадоксов является человек, в данном случае — я сам. В чем немногим позже я и убедился. Но…

«Погуглил» уже чуть больше чем просто «немножко». На форуме OrangeHRM набрел на фразу о том, что Web-installer наличие поддержки InnoDB проверяет попыткой создания таблицы с использованием данного «движка». И одной из причин неудачи (читай — «сообщения об отсутствии поддержки InnoDB») может быть отсутствие необходимых прав у пользователя от имени которого выполняется данная проверка. А именно — у пользователя, вписанного в графе «Priviledged Database Username«. А я ж там вписал того пользователя, которого создал для работы с OrangeHRM. Вот и нашлась причина-то — «избыточно мудрый» администратор попался — сам себе забот наворотил!

Чтож, снова вернулся в меню конфигурирования базы данных (рис. 3) и наконец-то включил мозг. Итог был таков: Web-installer самостоятельно создает базу данных для OrangeHRM. Для этого он использует привелегированную учетную запись, имя и пароль которой мы должны вписать в графы (соответственно) «Priviledged Database Username» и «Priviledged Database User Password«. Эта же самая учетная запись впоследстви используется для проверки наличия поддержки InnoDB. И, кроме того, эта же учетная запись («Priviledged Database Username«) используется при создании пользователя OrangeHRM и назначения ему необходимых прав. Исходя из всего вышесказанного это должна быть учетная запись именно администратора базы данных MySQL (по умолчанию — root)! А вот, чтобы не быть идиотом и не заставлять конкретную программу работать с конкретной базой от имени root-а, птичку в графе «Use the same Database User for OrangeHRM» ни в коем случае ставить нельзя! Для работы с вновь создаваемой базой OrangeHRM, имя которой мы вписываем в графу «Database Name«, Web-installer создаст нового пользователя, имя которого мы указываем в графе «OrangeHRM Database Username» и назначит ему пароль, который мы вписываем в графу «OrangeHRM Database User Password«. Исходя из этого трудночитаемого абзаца, ПРАВИЛЬНО заполняем поля в форме настройки подключения к базе данных (рис. 3) следующим образом:

Database Host Name localhost Если база данных установлена на том же компьютере, что и OrangeHRM, ничего менять не нужно. В противном случае — указываем имя или адрес сервера, на котором установлен сервер баз данных MySQL
Database Host (Port) 3306 Номер порта, на котором сервер баз данных MySQL ожидает подключений. Если Вы ничего не меняли в настройках то и тут ничего менять не нужно.
Database Name hr_mysql Имя создаваемой для OrangeHRM базы данных. При желании можете изменить на любое другое, которое придумаете сами. Единственное — в MySQL не должно быть уже существующей базы данных с таким именем!
Priviledged Database Username root С этим разобрались выше — здесь только root и никакое другое имя.
Priviledged Database User Password *********** Пароль пользователя root в MySQL.Он у сервера MySQL свой собственный и может отличаться от пароля root-а в самой ОС. По умолчанию он в сервере MySQL не установлен (пустой). Если Вы его устанавливали (или меняли) — введите правильное значение.
Use the same Database User for OrangeHRM __ Не ставить «птичку» ни в коем случае!!!
OrangeHRM Database Username orange_user Имя пользователя, которое OrangeHRM будет использовать для связи с базой данных MySQL. Вводите любое имя, которое придумаете сами.
OrangeHRM Database User Password *********** Пароль пользователя, который OrangeHRM будет использовать для связи с базой данных MySQL. Вводите любой пароль, который придумаете сами.

Кстати, еще — перед этим я снова «сходил» в консоль MySQL и теперь уже поудалял все то, что «ручками» насоздавал ранее. Ну вот, форму настройки связи с базой данных мы с горем пополам заполнили. Жмем «Next«. Если поддержка InnoDB в MySQL уже была активирована (как описано выше — изменением файла /etc/my.cnf), то проблем с базой данных при установке быть уже не должно. Была парочка мелких нюансов — пришлось, во-первых, сменить владельца файлов в папке /var/www/orangehrm на пользователя, от имени которого запущен сервер Apache (в моем случае — это «apache«), и во вторых, разрешить этому пользователю запись файлов в папке /var/www/orangehrm/lib/confs. После этого я получил вот такое сообщение о положительных результатах всех проверок:

orangehrm4
Рис. 4 Все проверки успешно завершены!

Чтож, раз все «ОК», идем дальше — жмем кнопку «Next«. Если же на этом этапе Вы получали сообщения об ошибках, то после их устранения достаточно нажать кнопку «Re-check» для повторной проверки.

Следующим пунктом будет ввод имени и пароля администратора программы OrangeHRM:

orangehrm5
Рис. 5 Ввод имени и пароля администратора программы OrangeHRM

По умолчанию предлагается использовать имя «Admin» и ввести (дважды) свой собственный пароль для него. Но это не догма — Вы можете ввести свои собственные не только пароль, но и имя этого пользователя — администратора OrangeHRM. Вводим, не ошибаемся с паролем (в обоих строках он должен быть одинаковым 😉 ), и жмем «Next«. Попадаем в меню подтверждения:

orangehrm6
Рис. 6 Сводка параметров установки

В нем просто перечислены все те параметры (за исключением паролей), что мы навводили ранее. На всякий случай внимательно проверяем, если замечаем ошибки — возвращаемся и исправляем. Если же все правильно, то нажимаем кнопку «Install«. Немножко ждем (установка ведь идет!). После того, как установка завершена, наблюдаем вот такое сообщение:

orangehrm7
Рис. 7 Установка успешно завершена

По сути — установка завершена. С чем я Вас и поздравляю! Следующий после нажатия кнопки «Next» пункт — это предложение зарегистрировать свою установку на сайте разработчика. Я даже скриншот не стал делать. Желаете зарегистрироваться — указываете в ссответствующих полях свои данные — и вперед — кнопка «Register» ждет Вас. Не желаете — просто жмете кнопку «No thanks!» и пристуаете к работе с OrangeHRM.

Успехов!…

Советую также прочесть следующие записи блога: