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

Настройка IIS

В версии 8.3.0 способ связки с IIS (всех версий старше 5.1) претерпел разительные изменения. Теперь вместо соединения IIS <-> IPI.Manager на основе FastCGI используется наш собственный ISAPI модуль. Это позволило сделать настройку намного проще, саму работу IPI.Manager гибче и стабильнее.

Версии 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:ipimy_profile).

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

<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\IPI.Manager\)

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

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

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

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

В случае, если отдельного пользователя не создавать, это означает что пользователю NETWORK_SERVICE нужно дать права на чтение и в папку C:\Program Files\IPI\IPI.Manager\ и в папку <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 (свойства).

../../../../_images/1_view_service_properties.png

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

../../../../_images/2_edit_service_fail_options.png

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

../../../../_images/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 ещё не установлен, его нужно установить. Для этого достаточно добавить роль веб-сервера с нужными параметрами.

../../../../_images/s1_add_role.png

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

../../../../_images/add_role_iis_isapi.png

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

Важно

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

IIS 6

Примечание

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

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

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

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

../../../../_images/4_create_new_website_in_iis_manager.png

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

../../../../_images/5_create_website__select_proper_homedir.png ../../../../_images/6_create_website__select_proper_options.png

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

../../../../_images/7_create_new_app_pool.png ../../../../_images/8_create_new_app_pool__brief.png

Совет

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

../../../../_images/8a_configured_pool_identity.png

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

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

Важно

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

../../../../_images/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 (Разрешённое).

../../../../_images/10_add_extension.png ../../../../_images/11_add_extension__brief.png

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

../../../../_images/12_start_website.png

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

../../../../_images/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).

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

../../../../_images/iis7_01_create_website_in_iis_manager.png

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

../../../../_images/iis7_02_create_website__select_proper_homedir_and_options.png

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

../../../../_images/iis7_03_open_basic_pool_options.png ../../../../_images/iis7_03_open_basic_pool_options__turn_off_aspnet.png

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

../../../../_images/iis7_04_open_advanced_pool_options.png ../../../../_images/iis7_04_open_advanced_pool_options__enable_32bit_apps.png

Откройте Handler Mappings

../../../../_images/iis7_05_open_handler_mappings.png

Добавьте Wildcard script map

../../../../_images/iis7_05_open_handler_mappings__add_wildcard_script_map.png

Важно

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

../../../../_images/iis7_05_open_handler_mappings__set_proper_options.png

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

../../../../_images/iis7_05_open_handler_mappings__answer_yes_on_adding_isapi_exception.png

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

../../../../_images/iis7_06_open_isapi_exceptions.png

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

../../../../_images/iis7_06_open_isapi_exceptions__change_description.png

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

../../../../_images/iis7_07_start_website.png

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

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