Система управления задачами IPI.MANAGER™ PRO
Служба поддержки Вопрос-ответ Документация О разработчиках

Данное руководство применимо для IPI.Manager 8.3.0 и выше. Для более ранних версий используйте:

Если Вы обновляетесь со старой версии - IPI.Manager 8.3.0 будет продолжать работать со старым способом (через модуль FastCGI у IIS, однако в версии 8.4.0 перестанет. Поэтому рекомендуем переехать на новую связку с IIS. Подробнее читайте в Переход на новую схему работы с IIS в версии 8.3.0

Настройка IPI.Manager для работы в паре с внешним веб-сервером IIS (Internet Information Services)

Версии IIS выходили вместе с разными версиями Windows по следующей схеме:

Версия IIS

Версии Windows

Поддержка IPI.Manager

IIS 5.1

Windows XP 32bit

не поддерживается

IIS 6.0

Windows XP 64bit
Windows Server 2003 (32/64bit)

поддерживается

IIS 7.0

Windows Vista 32/64bit
Windows Server 2008 (32/64bit)

поддерживается

IIS 7.5

Windows 7 32/64bit
Windows Server 2008 R2 (32/64bit)

поддерживается

Таким образом IPI.Manager может работать в паре с IIS всех версий, начиная с IIS 6.0.

Для работы IPI.Manager под Windows XP 32bit можно использовать либо встроенный веб-сервер, либо Apache 2.

Описание

Здесь и дальше употребляются следующие псевдо-термины:

  • <PROFILE_DIR>: папка с профилем, который Вы должны были создать ранее (например, C:\ipi\my_profile). Подробнее о профилях

  • <SERVICE_ACCOUNT>: аккаунт, под которым будет запускаться IPI.Manager Service

  • <ISAPI_ACCOUNT>: аккаунт, под которым будет запускаться пул приложения IPI.Manager в IIS

Принцип связи с IIS следующий: с одной стороны запускается сервис с IPI.Manager, который слушает соединения на каком-либо порту (на любом =)). Информация о созданном сервисе (включая порт) сохраняется в <PROFILE_DIR>/share/settings.yaml и используется как для запуска сервиса, так и для соединения к нему модуля ISAPI. Затем с другой стороны в IIS вставляется модуль ipimanager_isapi.dll и docroot сайта ставится в <PROFILE_DIR>/share/htdocs. Наш ISAPI модуль смотрит на docroot и ищет <PROFILE_DIR>/share/settings.yaml. Когда находит - видит, что сервис IPI.Manager запущен на порту NNNN и пытается соединится с ним.

Таким образом, краткий порядок действий для настройки таков (ниже эти шаги будут расписаны более подробно):

  1. Настроить права доступа к файлам
  2. Настроить и запустить сервис IPI.Manager
  3. (опционально) Создать новый сайт в IIS
  4. Установить docroot сайта в IIS на <PROFILE_DIR>/share/htdocs

  5. Добавить в IIS модуль ipimanager_isapi.dll

Настройка прав доступа к файлам

В дальнейшем у вас будет запускаться два процесса - один будет сервисом Windows, другой будет запускать IIS при создании пула приложения IPI.Manager. По умолчанию IIS запускает приложения от имени NETWORK_SERVICE, а сервис Windows запускает от имени System Logon Account. Если вы не особо заботитесь о безопасности - Вас это волновать не должно, но лучше создать отдельного пользователя, скажем, IPI.Manager User и прописать его в обоих местах.

В любом случае права на доступ к файлам должны быть следующими:

  • Пользователь, под которым запускается сервис:
    • чтение и запись в папку профиля (<PROFILE_DIR>, см. врезку выше)

    • только чтение в папку с системными файлами IPI.Manager (C:\Program Files\IPI...)

  • Пользователь, под которым IIS создаёт пул приложений

    • только чтение в папку профиля (<PROFILE_DIR>, см. врезку выше)

    • только чтение в папку с системными файлами IPI.Manager (C:\Program Files\IPI...)

Если же у вас всё запускаться планируется под 1 пользователем - значит он должен иметь права на чтение и запись в папку профиля и только чтение в папку C:\Program Files\IPI\...

В случае, если отдельного пользователя не создавать, это означает что пользователю NETWORK_SERVICE нужно дать права на чтение и в папку C:\Program Files\IPI и в папку <PROFILE_DIR>.

Настройка и запуск сервиса IPI.Manager

Нужно перейти в папку профиля в консоли (cmd.exe) и выполнить:

cd <PROFILE_DIR>
ipi-admin runfcgi --port=51000 --service-install
ipi-admin runfcgi --service-run

Порт можно выбрать любой. Но как правило, это порты выше 10000-го и те, которые не заняты ничем другим. Консоль после этого можно закрыть - сервис будет работать самостоятельно.

Сервис будет создан со следующими параметрами:

  • пользователь: локальный системный аккаунт

  • запуск: автоматический (при старте Windows)

  • действия при исключениях: ничего не делать

С умолчательными параметрами всё будет работать тоже, но для тонкой и правильной настройки любой уважающий себя администратор захочет ещё кое-что изменить. Это все изменяемо стандартными средствами Windows. Для изменения нужно открыть свойства сервиса (My computer (Мой компьютер)-> Правый клик -> Manage (Управление) -> Services and Applications -> Services). Там в списке сервисов найти IPI.Manager Command runfcgi -> правый клик -> Properties (свойства).

1_view_service_properties.png

Во-первых целесообразно изменить действия операционной системе при сбое сервиса. Во всех случаях - перезапуск:

2_edit_service_fail_options.png

Во-вторых хорошо бы запускать сервис не от имени системного пользователя, а от имени какого-либо другого. Мы советуем создать специального пользователя.

3_edit_service_logon.png

После любых изменений сервис нужно перезапускать. Это можно делать как средствами Windows (либо в диалоговом окне свойств, либо через sc.exe), либо средствами комманды ipi-admin:

# Способ через ipi-admin:
C:\Documents and Settings\Administrator>cd C:\ipimanager_profile

C:\ipimanager_profile>ipi-admin runfcgi --service-stop
Service "IPI.Manager Command -- runfcgi (C|ipimanager_profile)" stopped successfully

C:\ipimanager_profile>ipi-admin runfcgi --service-run
Service "IPI.Manager Command -- runfcgi (C|ipimanager_profile)" started successfully

# Способ через sc.exe:
C:\ipimanager_profile>sc stop "IPI.Manager Command -- runfcgi (C|ipimanager_profile)"

SERVICE_NAME: IPI.Manager Command -- runfcgi (C|ipimanager_profile)
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x1
        WAIT_HINT          : 0x1388

C:\ipimanager_profile>sc start "IPI.Manager Command -- runfcgi (C|ipimanager_profile)"

SERVICE_NAME: IPI.Manager Command -- runfcgi (C|ipimanager_profile)
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 3556
        FLAGS              :

Установка IIS7

Если IIS ещё не установлен, его нужно установить. Для этого достаточно добавить роль веб-сервера с нужными параметрами.

s1_add_role.png

Далее обязательно нужно выбрать сервис ISAPI Extensions:

add_role_iis_isapi.png

Добавление модуля ipimanager_isapi.dll

У вас уже должен быть установлен пакет IIS для Windows!

IIS 6

Применимо для:

  • Windows XP 64bit
  • Windows Server 2003 32/64bit

Откройте менеджер настроек IIS (Пуск -> Выполнить -> inetmgr).

Создайте новый веб-сайт:

4_create_new_website_in_iis_manager.png

Описание - любое (лучше всего использовать имя будущего домена, например ipimanager.mycompany.ru). Домашнюю папку укажите как <PROFILE_DIR>\share\htdocs. Если установить неправильно - впоследствии вам будет об этом сообщено. Естественно, в виде ошибки =).

5_create_website__select_proper_homedir.png6_create_website__select_proper_options.png

Затем создайте новый пул приложений. Назовите его IPI.Manager App Pool.

7_create_new_app_pool.png8_create_new_app_pool__brief.png

Вы можете так же изменить учётную запись пула (по-умолчанию это будет NETWORK_SERVICE, то есть процесс IPI.Manager ISAPI будет запускаться от имени этого пользователя). При этом нужно обязательно добавить эту учётную запись в группу IIS_WPG, иначе ничего работать не будет. Если всё сделаете правильно, и процесс ipimanager_service.exe и w3wp.exe (это процесс IIS) будут запущены от имени одного пользователя:

8a_configured_pool_identity.png

Затем откройте свойства сайта. На вкладке Home Directory сначала удалите приложение, а затем создайте заново (кликнуть на Remove, затем на Create). В качестве пула приложений для только чт созданного приложения выберите созданный вами ранее пул IPI.Manager App Pool. Название приложения укажите как IPI.Manager ISAPI Handler. Нажмите Применить и потом зайдите в настройки приложения (кнопка Configuration там же, рядом).

В блоке Wildcard application maps нажмите Insert. В появившемся диалоговом окне выберите файл C:\Program Files\IPI\IPI.Manager\ipimanager_isapi.dll. Уберите галочку Verify that file exists и попрбуйте сохранить. Если диалоговое окно недовольно скажет, что имена файлов с пробелами нужно обрамлять кавычками - сделайте это (т.е. получится что-то вроде "C:\Program Files\IPI\IPI.Manager\ipimanager_isapi.dll"). Сохраните всё.

В старых версиях IPI.Manager использовался хендлер fcgiext.dll. Если он есть в списке Wildcard application maps, нужно его оттуда удалить.

9_setup_isapi_app.png

Затем в диалоговом окне управления IIS (Пуск -> Выполнить -> inetmgr) кликните правой кнопкой по Web Service Extensions и выберите Add new Web service extension.... В появившемся окне задайте любое имя расширению (например, IPI.Manager ISAPI Handler), в качестве требуемых файлов добавьте C:\Program Files\IPI\IPI.Manager\ipimanager_isapi.dll и статус расширения выберите как Allowed (Разрешённое).

10_add_extension.png11_add_extension__brief.png

Теперь не забудьте запустить сам веб-сайт

12_start_website.png

После этого можете попробовать открыть сайт в браузере (для начала, http://localhost). По идее всё будет работать сразу же.

13_login.png

Возможные ошибки будут такими же как и для IIS7 / IIS7.5, о них смотрите в разделе ниже.

IIS7 / IIS7.5

Применимо для:

  • Windows Vista 32/64bit
  • Windows Server 2008 32/64bit
  • Windows 7 32/64bit
  • Windows Server 2008 R2 32/64bit

Откройте менеджер настроек IIS (Пуск -> Выполнить -> inetmgr).

Создайте новый веб-сайт:

iis7_01_create_website_in_iis_manager.png

Название сайта - любое. Удобнее всего использовать название будущего домена (например, manager.mycompany.ru). Домашнюю папку укажите как <PROFILE_DIR>\share\htdocs. Если установить неправильно - впоследствии вам будет об этом сообщено. Естественно, в виде ошибки =). Выключите галочку Start web site immidiately.

iis7_02_create_website__select_proper_homedir_and_options.png

Зайдите в список пулов приложений, там будет только что созданный пул специально для нового сайта. Откройте его базовые опции и выключите ASP.NET

iis7_03_open_basic_pool_options.pngiis7_03_open_basic_pool_options__turn_off_aspnet.png

Откройте расширенные опции и разрешите запуск 32-битных приложений

iis7_04_open_advanced_pool_options.pngiis7_04_open_advanced_pool_options__enable_32bit_apps.png

Откройте Handler Mappings

iis7_05_open_handler_mappings.png

Добавьте Wildcard script map

iis7_05_open_handler_mappings__add_wildcard_script_map.png

В старых версиях IPI.Manager использовался хендлер fcgiext.dll. Если он есть в списке Handler Mappings, нужно его оттуда удалить.

iis7_05_open_handler_mappings__set_proper_options.png

На вопрос - создавать ли исключение для ISAPI/CGI, ответье Yes (Да):

iis7_05_open_handler_mappings__answer_yes_on_adding_isapi_exception.png

Теперь откройте ISAPI/CGI Restrictions

iis7_06_open_isapi_exceptions.png

И измените описание созданного правила:

iis7_06_open_isapi_exceptions__change_description.png

Теперь не забудьте запустить сам веб-сайт

iis7_07_start_website.png

После этого можете попробовать открыть сайт в браузере (для начала, http://localhost). По идее всё будет работать сразу же.

13_login.png

Конфиденциальность Правовые ограничения Лицензия Контактная информация © 1998-2012 Компания IPI    Компания IPI_Tech