Установка программы

Материал из TourManagerPro Help
Перейти к: навигация, поиск

Введение. Общие понятия

Встройка - это набор скриптов, которые запрашивают либо специальные блоки, либо целые страницы с сайта TourmanagerPro и затем выводят их.


Общая схема работы выглядит так:

1. Создание класса-запросника TmEmbedClient (нужны дополнительные классы и конфигурация)

2. Запрос с сервера tourmanager-а нужных компонентов и/или страницы с помощью TmEmbedClient

3. Вывод соответствующих кусков из ответа сервера в нужные места клиентского сайта

Конфигурация

Для настройки работы встройки необходимо создать файл конфигурации (подключается при создании LSF_Tools_HttpProxy_RequestBuilder - см. ниже)

$httpProxyConfig = new LSF_Tools_HttpProxyConfig();
$httpProxyConfig->serverHost = 'www.tourmanager.local'; // url хоста tourmanager-а
$httpProxyConfig->embedServerConfig = array(
   'charset' => 'windows-1251', // кодировка сайта
   'urlLocalPrefix' => '/cache', // префикс url, по которому будут сохраняться (и где будут искаться) статические ресурсы - картинки, js, css полученные с сервера tourmanager
   'tmHost' => $httpProxyConfig->serverHost, // дублирование хоста tourmanager-а, связано с особенностями обработки конфигурации
   'changeHostPageFor' => array( // конфигурация переходов по страницам клиентского сайта. Настройка довольно сложная, рекомендуется оставить такую, подходит для большинства случаев
       '~^/search.*$~' => false,
       '~.*~' => true
   ),
   'mainTourmanagerUrl' => '/tourmanager.html', // url на клиентском сайте, где будут выводиться страницы tourmanager-а, сюда же будут осуществляться большинство редиректов
   'clientHost' => $_SERVER["SERVER_NAME"] // url клиентского сайта
);
return $httpProxyConfig;

Также нужно указать в .htaccess правило для перенаправления в случае если файлы кеша отсутствую, на специальный скрипт, download-cache.php.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^assets/tourmanager/cache(/.+)$ /assets/tourmanager/tourmanager-client-scripts/download-cache.php [L]

Создание страницы со встройкой

Простейший запрос выглядит так

require_once dirname(__FILE__) . '/../tourmanager-client-scripts/TmEmbedClient.php';
$builder = new LSF_Tools_HttpProxy_RequestBuilder(include dirname(__FILE__) . '/config.php');
$proxy = new LSF_Tools_HttpProxy($builder);
$client = new TmEmbedClient($proxy);
$parts = $client->run(
   array(
       'login' => array('component' => 'LoginLogout', 'params' => array()),
   ),
   array('defaultPage' => '/search/package')
);

здесь первые 4 строки - создание самого класса-клиента TmEmbedClient. Затем идет сам вызов метода run с передачей необходимых параметров. Первый аргумент - это список компонентов с их параметрами, второй - массив с общими параметрами. Общие параметры, как правило, ограничиваются указанием defaultPage, т.е. страницы tourmanager-а, которая будет запрошена по умолчанию, если в GET аргументах нет параметра с именем tm_page. Если defaultPage не задан и tm_page нет, то страница запрошена не будет.

В результате запроса получается массив с запрошенными компонентами. Ключами компонентов будут те, что указаны в запросе, т.е. в данном случае вывести компонент авторизации пользователя можно как

<?php echo $parts[‘login’]; ?>

Также существуют 2 предопределенных ключа - head и body. Первый содержит подключение необходимых скриптов и стилей и должен выводиться в разделе <head> страницы. Второй содержит саму страницу, если были указаны defaultPage или tm_page.

Создание дополнительной страницы со встройкой

Сам запрос для дополнительных страниц будет такой же, как и для основной страницы, пример показан выше.

Но для дополнительных страниц нужно дополнительное конфигурирование в файле config.php. Основная идея здесь такая - есть одна главная страница, на которой отображаются все страницы TourmanagerPro и несколько дополнительных, для каких-то особых разделов. Например, можно указать, что все страницы поиска и бронирования рейсов будет выводиться на одной странице сайта (определяется при запросе параметром defaultPage), но после бронирования, отображение заказа будет происходить уже на другой странице.

Принцип настройки такой - как только url страницы TourmanagerPro, отображаемой в особом разделе начнет (в результате переходов) отличаться от заданного, произойдет переход на главную. Обратный переход настроить нельзя, попасть на особые страницы можно только с помощью навигации сайта, в который происходит встройка.

Например, конфигурация выше:
'changeHostPageFor' => array( 
       '~^/search.*$~' => false,
       '~.*~' => true
   ),

означает, что что пока url TourmanagerPro совпадает с регулярным выражением '~^/search.*$~' переключение на основной адрес происходить не будет. Допустим, что на странице ‘/flight_search’ мы поместили запрос страницы 'defaultPage' => '/search/flight'. Пока пользователь будет искать и бронировать рейсы, url встраиваемой страницs будет либо '/search/flight', либо '/search/flight/book'. Все это время работа будет происходить в пределах url ‘/flight_search’. Но после бронирования url встраиваемой страницы изменится на ‘/order/work?id=...’ - в этот момент будет осуществлен переход на страницу, указанную в конфигурации как 'mainTourmanagerUrl'

Примечания для ModX

Если ваш сайт работает на modx, то для корректной работы AngularJS необходимо пропатчить файл manager/includes/document.parser.class.inc.php. А именно в конце метода outputContent заменить вывод

echo outputContent;

на

   $replaceFrom = array('{-angular-{', '}-angular-}');
   $replaceTo = array('Шаблон:', '');
   echo str_replace($replaceFrom, $replaceTo, $this->documentOutput);

Установка необходимых компонентов и библиотек

Для работы TourmanagerPro необходимы следующие компонетнты php >= 5.3.10, postgresql >= 9.0, apache httpd >= 2.2, tomcat >= 7.0 На примере ubuntu эти программные компоненты устанавливаются при помощи следующих команд

$ sudo apt-get install php5 php5-cli php5-common php5-curl php5-json php5-pgsql
$ sudo apt-get install apache2 libapache2-mod-php5
$ sudo apt-get install postgresql postgresql-plpython
$ sudo apt-get install tomcat7 tomcat7-admin

Кроме этого, необходимо скачать и установить ioncube loader со страницы http://www.ioncube.com/loaders.php. Устанавливать нужно версию соответствующую операционной системе и версии php. Например, для Ubuntu Server amd64 и php 5.4 необходимо скачать архив загрузчиков “Linux (64 bits)” и дописать в php.ini сточку zend_extension=/usr/lib/php5/20090626/ioncube_loader_lin_5.4.so.

Обратите внимание, её необходимо дописать как в файл конфигурации php.ini который предназначен для использования при обработке веб запросов, так и для использования в консоли. Как правило это файлы /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini соответственно.

Также обязательно нужно проверить что права на файл ioncube_loader_*.so и всех каталогов в пути достаточны для чтения пользователем, с правами которого запускается apache.

Далее в файле конфигурации postgresql необходимо разрешить подключения по tcp/ip. Это нужно сделать путем редактирования параметра #listen_addresses = 'localhost' в файле /etc/postgresql/9.x/main/postgresql.conf. Его необходимо раскомментировать и зменить localhost на ‘*’.

Установка TourmanagerPro

1. Скопировать файлы update.sh и dump.backup в каталог, в который будет происходить установка.

2. Отредактировать update.sh - указать группу владельца всех каталогов, а также каталоги, в которые будет произведена установка библиотек (переменные в начале файла). Сам TourmanagerPro будет установлен в каталог, в котором находится update.sh.

3. Владелец должен иметь право на запись в текущий каталог и в будущем должен иметь право на удаление/запись файлов TourmanagerPro. Это не обязательно тот же пользователь, из-под которого запускается Apache.

4. Создать в этом же каталоге файлы .rsync.password и .rsync-lib.password с одной строчкой - rsync паролем к обновлениям.

5. В каталоге, внешнем по отношению к каталогу TourmanagerPro создать еще один каталог с таким же именем, но расширением .custom (tourmanager.ru - tourmanager.ru.custom) и расположенном в том же каталоге, что и основной. Этот каталог будет копироваться в основной после каждого обновления системы. В него можно добавить (с учетом структуры подкаталогов TourmanagerPro) различные шаблоны для подстройки внешнего вида, дополнительные картинки и т.п.

6. Назначить права на выполнение и запустить update.sh. При этом будет выполнена установка TourmanagerPro.

7. Прописать в настройках apache алиас Alias /js/a [lib-js], где libjs - путь к Js библиотекам, который был указан в update.sh и куда они были установлены.

8. В настройках Apache прописать DOCUMENT_ROOT для хоста TourmanagerPro на подкаталог www каталога установки.

9. Создать файл install_config.php на основе примера install_config.php.sample и прописать туда необходимые параметры (значение понятно из названий и комментариев)

10. Запустить php ./install.php - при этом создадутся рабочие каталоги и будут выставлены права на них. При этом будут созданы все рабочие каталоги, конфиги и настроена база данных.

11. На текущий момент у вас должен быть рабочий сайт TourmanagerPro. Войдите под пользователем admin и паролем 123123. Руками введите url [ваш_домен]/dev/updates - это интерфейс обновления. Загрузите последнюю версию установщика программы TourmanagerPro. Он загрузится в каталог www/updates.

12. Установите программу. При установке необходимо ввести реквезиты доступа к базе данных

13. Для авторизации в программе использовать те же логин/пароль что и на сайте - admin/123123

14. При первом запуске программа запустится в ограниченном режиме. Необходимо указать нужные значения в Настройки - Глобальные настройки вкладки Конфигурация и Обновления. ulr для обновления - это url к каталогу www/updates. Т.е. что-то вроде http://[домен]/updates. Остальные значения понятны из названий.

15. В дальнейшем обновление выполнять через интерфейс по url /dev/updates, а применение миграций БД, которые были получены вместе с обновлением - по url dev/migration

Установка Tomcat7

1. Скачать дополнительные библиотеки http://updates.tourmanager.ru/public/tomcat-lib.tgz и распаковать их в каталог lib tomcat-а. Обычно это каталог /usr/share/tomcat7/lib/.

2. Надо убедиться, что для tomcat будет достаточно памяти - задаётся, как правило, в apache-tomcat-7.0/bin/setenv.sh через настройку

CATALINA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=256m'

3. В conf/context.xml добавить (директория зависит от системы):

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" >
      <Store className="org.apache.catalina.session.FileStore" directory="/tmp"/>
</Manager>

4. В conf/server.xml надо после <Resource name="UserDatabase" ../> добавить

<Resource name="jdbc/tourmanagerprods" url="jdbc:postgresql://127.0.0.1:5432/tour_trunk" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" username="tour" password="soft" maxActive="20" maxIdle="10"       maxWait="-1"/> (доступы к базе, конечно, свои)

5. В conf/tomcat-users.xml надо добавить

<user username="tomcat" password="***" roles="manager-gui"/>
<user username="deploy" password="***" roles="manager-script"/>

6. Открыть в браузере страничку TourmanagerPro /dev/updates и в разделе “Обновление Java” нажать “Обновить”

Восстановление работы TourmanagerPro

Для восстановления работы после сбоя сервера необходимо предварительно иметь бекап базы данных, каталога TourmanagerPro и файла из каталога tomcat7 webapps/tourmanagerpro.war.


Порядок восстановления:

1. Установить необходимые компоненты (как в разделе “установка”)

2. Создать пользователя и базу данных

$ psql -c “create user tour with password ‘<ваш_пароль>’”
$ psql -c “create database tour with owner = tour”
$ pslq -d tour -c “create language plpythonu”

3. Восстановить бекап БД c помощью команды pg_restore

4. Вернуть файл tourmanagerpro.war в каталог webapps

5. Настроить веб часть при помощи задания DOCUMENT_ROOT в apache2 и скопировать туда бекап TourmanagerPro. Если менялись доступы к БД - их нужно руками прописать в misc/lsf_config_local.php

6. Удалить или куда-нибудь перенести файл install_config.php (если он есть) и запустить команду php/install.php - это установить необходимые доступы на рабочие каталоги TourmanagerPro, если они сбились.

7. Настроить cron-ы. Шаблон находится в файле cronfile. В нем необходимо заменить #PATH# на текущее (или желаемое) значение переменной path, а #PROJECT_PATH# - на полный путь к каталогу TourmanagerPro. После чего выполнить команду crontab ./cronfile с правами того пользователя, который будет выполнять фоновые задачи.

Технические требования

Требования к аппаратному обеспечению зависят от размера базы. При старте и небольшом количестве предложений (до 5 миллионов цен) может использоваться минимальное обеспечение.

Минимальные системные требования

Операционная система FreeBSD 8+/Linux/Windows

CPU: Core i3 3 ГГц

8 Гб оперативной памяти

Диск: 200 Гб, SATA

СУБД: PostgreSQL 9.1

Сервер: apache2, php 5.3

Возможность установки дополнительного ПО/модулей. Наличие SSH-доступа с правами root

Возможность отправлять письма через SMTP. Наличие легального SMTP-сервера с прописанными обратными зонами (dns)

В случае средней и большой нагрузки следует обратить внимание на увеличение мощности до рекомендуемой. В первую очередь это сказывается на скорости публикации предложений и поиска.

Рекомендуемые системные требования

CPU: Core i7 3.5 ГГц и лучше/серверные варианты

16 Гб оперативной памяти

Диск: 256 Gb, SSD или SAS/SATA RAID (SSD предпочтительнее)

Минимальные требования к клиентской части

x86-совместимый компьютер 2 ГГц, 1 Гб оперативной памяти, диск 100 Мб

Операционная система: Windows XP/Vista/Win7

Размещение на нашем сервере

Компания предоставляет возможность разместить серверную часть программного обеспечения на нашем сервере. В этом случае вы получаете возможность использовать хорошую комплектацию аппаратной части при минимальных начальных вложениях.

На предложение действуют ограничения:

  • Объём сгенерированной БД предложений: менее 30 миллионов записей
  • Объём предложений, генерируемых за неделю: менее 15 миллионов записей
  • Количество просмотренных страниц с сервера: менее 50 тысяч в день

При превышении ограничений со следующего месяца может быть кратно увеличена оплата услуги.