Расширение встроенного конвейера IIS
ASP.NET — Веб-сайты ASP.NET — Расширение встроенного конвейера IIS
В IIS 8 реализованы два режима обработки запросов. Первый, называемый классическим ( >IHttpHandler. Встроенный режим конвейера должен применяться по умолчанию. В этой статье будет показано, как встроенный конвейер HTTP можно расширить с помощью того же самого обработчика, который был создан в статье «Расширение конвейера HTTP».
Создание обработчика
Для простоты мы создали проект Visual Studio, который содержит только класс SimpleHandler, построенный ранее. Чтобы создать обработчик с нуля, последовательно выберите пункты New (Создать), а затем Project (Проект) из меню File (Файл) в Visual Studio. Затем укажите вариант Class Library (Библиотека класса). Назначьте проекту имя SimpleHandler. Переименуйте файл кода C# на SimplerHandler.cs и вставьте в него код, приведенный ниже. Функционирование этого кода подробно объяснялось в статье, ссылка на которую дана выше:
В меню Build (Сборка) выберите пункт Build Solution (Построить решение), чтобы скомпилировать код и создать файл DLL.
Развертывание обработчика
Найдите файл DLL, созданный Visual Studio. Он будет помещен в каталог bin\Debug или bin\Release проекта и будет называться SimpleHandler.dll. Скопируйте этот файл на сервер, поместив его в каталог bin в корневом каталоге приложения. Если каталог bin не существует, создайте его. Например, если обработчик должен применяться к приложению FileCopy, которое было ранее развернуто, файл DLL необходимо поместить в каталог C:\inetpub\wwwroot\WebsiteDeployment\FileCopy\bin.
Конфигурирование обработчика
Используя IIS Manager, выберите приложение, которое требуется изменить. В моем случае им будет ранее развернутое приложение TestAspNet расположенное в виртуальном каталоге с псевдонимом virtual. Дважды щелкните на значке Handler Mappings (Сопоставления обработчика), чтобы открыть итоговый экран Handler Mappings (Сопоставления обработчиков), показанный на рисунке ниже:
Щелкните на действии Add Managed Handler (Добавить управляемый обработчик) в правой части окна, чтобы открыть диалоговое окно Add Managed Handler (Добавление управляемого обработчика), показанное на рисунке ниже. В поле Request Path (Путь запроса) укажите запросы, которые будет обслуживать обработчик. В примере требуется, чтобы наш простой обработчик использовался только для запросов, которые заканчиваются расширением .htest. В поле Type (Тип) введите имя класса обработчика. Если для данного класса используется пространство имен, его также нужно включить в это поле:
В поле Name (Имя) введите имя, которое можно будет распознать на странице сведений обработчика. В примере обработчик получил имя SimpleHandler. Щелкнув на кнопке Request Restrictions (Ограничение запроса), можно сконфигурировать дополнительные параметры, но для данного простого обработчика они не требуются. Щелкните на кнопке OK чтобы создать сопоставление обработчика.
Тестирование обработчика
Чтобы протестировать обработчик, запросите URL-адрес, который заканчивается строкой .htest и обслуживается вашим приложением. Я использовал следующий адрес:
При открытии этого URL-адреса в браузере отобразятся показанные на рисунке ниже результаты, подтверждая, что обработчик встроенного конвейера корректно установлен и работает:
Как настроить сопоставление обработчика в каталог в IIS 6.0?
У меня IIS 7.0 на моей машине разработки и IIS 6.0 на моем сервере. На моей машине разработки я смог установить карту обработчика в каталоге на моем сайте под названием /ViewHtml/, и я сопоставил его с asp.net. В моем global.asax я проверяю запрос, отправленный в asp.net для /ViewHtml/, и я обслуживаю соответствующий html файл (html-версию файла Doc, Power Point или Excel), расположенного вне этого виртуального каталога приложений. Я делаю это так, потому что все файлы защищены защитой, мы не хотим помещать эти файлы в базу данных из-за масштабируемости, и мне нужно скрыть путь к этому файлу на сервере. Это все работает в IIS 7.0 именно так, как мне хотелось бы. Хотя я не смог настроить сервер IIS 6.0 для сопоставления всех запросов в этот каталог на asp.net.
Любые идеи? Спасибо, ребята?
Я создал веб-приложение, используя ту же конфигурацию, которую вы используете, и я также получаю 404. Я не знаю, почему она работает в IIS 7, но вот что мне нужно было сделать, чтобы исправить ее.
Создайте класс, который реализует класс System.Web.IHttpHandler. переместите код из Application_BeginRequest в вашу реализацию IHttpHandler.ProcessRequest.
Теперь вам просто нужно зарегистрировать свой обработчик HTTP с помощью ASP.NET. Для этого добавьте запись в свой Web.config в /configuration/system.web/httphandlers.
Эта запись сообщает ASP.NET обрабатывать HTTP-запросы с любым расширением и любым HTTP-методом, запустив код в вашем HTTP-hander. Обратите внимание, что я также очищаю все ранее обработанные обработчики (определенные в машине web.config).
Обратите внимание, что вам все равно потребуется сопоставление приложений, настроенное в IIS.
как добавить новое сопоставление приложений в iis
Как добавить новое сопоставление приложений в IIS с помощью vbscript?
2 ответа
Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.
В основном вы могли бы использовать adsutil.vbs манипулировать ScriptMaps в MetaBase.
К несчастью, adsutil.vbs не может установить отдельные элементы в свойствах LIST, таких как ScriptMaps. Вы можете только установить или удалить список в целом. Любая дополнительная обработка потребует вашего собственного кодирования.
Человек по имени Дэвид Ванг создал сценарий VB, который имеет эту возможность. Он объяснил более подробно в его запись в блоге по теме. Сценарий, который он сделал, можно скопировать оттуда. Вы также можете изменить другие свойства LIST.
Обеспечить WEB-доступ к данной странице средствами IIS по протоколу HTTP.
Установка и настройка WEB-сервера средствами IIS (информационные службы Интернет) на базе операционных систем Windows XP/2000.
Разместить на WEB-сервере HTML-код следующей страницы [Default.html] :
Hello! My name is Ivanoff Ivan Ivanovich! This is my first web server
Обеспечить WEB-доступ к данной странице средствами IIS по протоколу HTTP.
1. Установка IIS |
Службы Internet Information Services устанавливаются в системе Windows 2000 Server по умолчанию. Для Windows NT, Windows 2000 Professional и Windows XP установку нужно проводить вручную. В этом случае, удалить IIS или выбрать дополнительные компоненты можно с помощью приложения «Установка и удаление программ» панели управления. |
Чтобы установить IIS, добавить компоненты или удалить компоненты |
1. Нажмите кнопку Пуск, выберите команды Настройка и Панель управления, и запустите приложение Установка и удаление программ. |
2. Откройте вкладку Добавление и удаление компонентов Windows, нажмите кнопку Компоненты и следуйте появляющимся на экране инструкциям для установки, удаления или добавления компонентов IIS. |
Примечание. При обновлении до Windows 2000 IIS 5.0 будет установлен по умолчанию только в том случае, если в предыдущей версии Windows был установлен IIS. |
Для установки IIS на любом компьютере необходим Microsoft Internet Explorer 4.01 или старше в качестве Web-обозревателя. Кроме того, сначала обязательно установите сервисный пакет 3 для Microsoft Windows NT 4.0. |
Для полнофункциональной реализации IIS требуется установить поддержку протокола TCP/IP и файловой системы NTFS. Присвоение постоянного IP-адреса серверу дляустановки IIS не обязательно. |
Протокол TCP/IP обеспечивает взаимодействие с Интернетом, необходимое для загрузки информации из Интернета и размещения узла. |
NTFS позволяет ограничить доступ к файлам и папкам на сервере Windows NT. Этот ключевой фактор защиты Интернет-сервера и обязательный компонент службы SMTP. |
2. Приложения IIS |
Приложением IIS называют любой файл, который выполняется внутри определенного набора каталогов веб-узла. Когда создается приложение, оснастка Internet Information Services используется для указания исходного каталога приложения (называемого также корневым каталогом приложения) на веб-узле. Все файлы и каталоги, содержащиеся на веб-узле в каталоге, отмеченном как исходный каталог приложения, вплоть до исходного каталога другого приложения, рассматриваются как часть приложения. Таким образом, каталоги являются границами области приложения. |
2.1. Точка запуска приложения |
В оснастке Internet Information Services исходный каталог приложения обозначается значком упаковки. На следующем рисунке показано приложение с исходным каталогом /SiteAdmin: |
Файлы в каталогах \Login, \Order и \SetupDB рассматриваются как часть приложения /SiteAdmin. |
На каждом веб-узле имеется возможность определить несколько приложений. Веб-узел, который по умолчанию создается при установке Internet Information Services, является исходным каталогом приложения. |
Internet Information Services поддерживает приложения ASP, ISAPI, CGI, IDC и SSI. Информация в приложении может совместно использоваться файлами приложения; например, в приложениях ASP информация о контексте, состоянии сеанса и значениях переменных совместно используется страницами приложения. |
2.2. Защита |
IIS 5.0 предлагает три уровня защиты приложения. Защита приложения ссылается на процесс, в котором приложение выполняется. В IIS 4.0 приложения могли быть запущены или в том же процессе, что и веб-службы (Inetinfo.exe) или в процессе, отдельном от веб-служб (DLLHost.exe). В IIS 5.0 имеется и третий вариант: приложение может быть запущено в групповом процессе (другой экземпляр DLLHost.exe). |
Эти различные возможности обеспечивают изменяемые уровни защиты от ситуаций, в которых процесс с неправильно работающим приложением перестанет отвечать на запросы. По умолчанию веб-службы (Inetinfo.exe) будут выполняться в собственном процессе, а другие приложения будут выполняться в одном групповом процессе (DLLHost.exe). Приложения с высоким приоритетом могут быть запущены в виде изолированного процесса (другой экземпляр DLLHost.exe). Из соображений быстродействия не рекомендуется запускать больше 10 изолированных приложений. |
На следующем рисунке изображена вкладка свойств, на которой задаются свойства для защиты приложений. |
Защиту приложения можно устанавливать только в его исходном каталоге. |
2.3. Быстродействие приложения |
Существует компромисс между производительностью и уровнем защиты приложения. Приложения, запущенные в процессе веб-служб (inetinfo.exe), дают более высокое быстродействие, но при этом повышается и риск того, что неправильно работающее приложение сделает веб-службы недоступными. Рекомендуется следующая конфигурация: inetinfo.exe выполняется в своем процессе, критически важные приложения выполняются в своих процессах, а оставшиеся приложения — в общем, групповом процессе. Дополнительные сведения см. в разделе Задание границ приложения. |
3. Создание приложений |
Для создания приложения необходимо назначить каталог исходным (корневым) каталогом приложения. После этого следует задать свойства приложения. Каждому приложению можно присвоить понятное для пользователей имя. Это имя отображается в оснастке Internet Information Services и позволяет отличать одно приложение от другого. В других местах имя приложения не используется. |
Имеется возможность удалить каталог из границ приложения. После этого запросы на файлы в этом каталоге и его подкаталогах не будут приводить к запуску приложения. Удаление каталога из границ приложения не приводит к удалению этого каталога из веб-узла и с жесткого диска компьютера. |
3.1. Чтобы создать приложение |
ü В оснастке Internet Information Services выберите каталог, являющийся исходным каталогом приложения. Допускается назначение домашнего каталога веб-узла исходным каталогом приложения. |
ü Откройте окно свойств каталога и выберите вкладку Домашний каталог, Виртуальный каталог или Каталог. |
ü Нажмите кнопку Создать. |
ü В поле Приложение введите имя приложения. |
Примечание. Если появляется кнопка Удалить вместо кнопки Создать, приложение уже было создано. |
3.2. Чтобы удалить каталог из приложения |
ü В оснастке Internet Information Services выберите каталог, который требуется удалить. |
ü Откройте окно свойств каталога и выберите вкладку Домашний каталог, Виртуальный каталог или Каталог. |
ü Нажмите кнопку Удалить. |
Советы |
· Чтобы остановить выполнение приложения и выгрузить его из памяти, нажмите кнопку Выгрузить. Если кнопка Выгрузить недоступна, выбранный каталог не является исходным каталогом приложения. |
· Чтобы прекратить связывание домашнего каталога с приложением, нажмите кнопку Удалить. |
· Установите флажок Запуск в отдельной области памяти (изолированный процесс) для выполнения приложения в процессе, отделенном от процесса веб-сервера. Выполнение изолированного приложения защищает другие приложения, включая собственно веб-сервер, от возможных сбоев при сбое или зависании данного приложения. |
3.3. Чтобы задать разрешения для приложения |
· Задайте для разрешений значение Отсутствуют, чтобы запретить выполнение любых программ или сценариев. —Или— |
· Значение Только сценарии разрешает выполнение в этом каталоге приложений, сопоставленных с обработчиком сценариев, без заданного разрешения Выполнение. Разрешение Сценарии следует задавать для каталогов, содержащих сценарии ASP, IDC (Internet Database Connector) или другие сценарии. Разрешение Сценарии является более безопасным, чем разрешение Выполнение, так как позволяет ограничить круг приложений, которые могут выполняться из этого каталога. Дополнительную информацию о том, как сделать приложение обработчиком сценариев, можно найти на вкладке Сопоставление приложений. —Или— |
· Значение Сценарии и исполняемые файлы позволяет выполнять любые приложения из этого каталога, в том числе приложения, сопоставленные с обработчиками сценариев и файлы Windows в двоичном формате (.dll и .exe). |
a) Произвести установку Microsoft Internet Information Server версии 4.0 если в качестве операционной системы используется Windows NT Server 4.0 или 5.0, если Windows 2000 Pro/Server или Windows XP.
b) Скопировать файл default.html в директорию на жесткий диск (к примеру: C:\Ivanoff)
c) Настроить IIS, выполнив следующие действия:
· Открыть «Диспетчер Служб Интернета», находящийся во вкладке «Администрирование» «Панели Управления»:
· Выбрать пункт «Веб-узел по умолчанию» и в свойствах указать каталог с дистрибутивом программы (к примеру C:\ Ivanoff). Другие параметры следует установить, как показано на следующем рисунке:
· По усмотрению администратора WEB-сервера доступ к программе может быть ограничен NT аутентификацией.
Для этого необходимого проделать следующие действия:
§ Открыть «Диспетчер Служб Интернета», находящийся во вкладке «Администрирование» «Панели Управления».
§ Выбрать свойства виртуального каталога куда была установлена программа.
§ открыть вкладку «Безопасность каталога» и выбрать пункт «Изменить», выставить галочки, как показано на рисунке:
При правильной установке безопасность программы будет обеспечена встроенной защитой Windows NT служб.
Как добавить новое сопоставление приложений в iis
Как добавить новое сопоставление приложений в IIS с помощью vbscript?
По сути, вы можете использовать adsutil.vbs для манипулирования ScriptMaps в MetaBase.
К сожалению, adsutil.vbs не может установить отдельные элементы в свойствах LIST, таких как ScriptMaps. Вы можете только установить или удалить список в целом. Любая дополнительная обработка потребует вашего собственного кодирования.
Человек по имени Дэвид Ванг создал сценарий VB, который имеет эту возможность. Он объяснил более подробно в своей записи в блоге на эту тему . Сценарий, который он сделал, можно скопировать оттуда. Вы также можете изменить другие свойства LIST.
Iis вкладка <сопоставление приложений>
В нашем примере будет использоваться 1C с локальной файловой базой
Установка IIS на Windows 7
Пуск — Панель управления — Программы и компоненты — Включение или отключение компонентов Windows
Выбираем необходимые компоненты: Службы IIS, ASP.NET, Консоль управления IIS и нажимаем ОК
Установка IIS на Windows Server
Установка IIS на Windows Server происходит аналогично через Добавление Ролей и компонентов
Настройка IIS под 1С
Добавление пользователя IUSR в группу IIS_IUSRS
Для настройки прав доступа необходимо добавить пользователя IUSR в группу IIS_IUSRS, иначе при попытке публикации 1С на сервер Вы будете получать ошибку
Запускаем оснастку управление компьютером Win+R -> compmgmt.msc или через меню пуск:
В оснастке выбираем: Локальные пользователи и групп -> Группы -> IIS_IUSRS открываем свойства группы двойным щелчком ЛКМ
В эту группу нам необходимо добавить пользователя IUSR, для того чтобы предоставить необходимые права доступа, для этого жмем кнопку Добавить
Набираем имя пользователя IUSR и нажимаем кнопку Проверить имена, если пользователь будет найден, то он станет подчеркнутым, нажимаем ОК. Если пользователь не находится нажмите кнопку Размещение… и смените место поиска.
Проверяем, что наш пользователь появился и жмем ОК
Настройка сайта и приложения в IIS
Запускаем Диспетчер служб IIS удобным для Вас способом, например: Win+R -> InetMgr
В левой части экрана раскрываем ветку с сайтами. Останавливаем сайт по умолчанию Default Web Site или модифицируем его, я предпочитаю делать отдельный.
Жмем ПКМ на сайты и выбираем пункт Добавить веб-сайт
Заполняем параметры сайта
Имя сайта: Любое
Физический путь: Создаем каталог где будет храниться наш сайт (файлы сайта)
Тип: Выбираем протокол HTTP или HTTPS
Порт: Задаем порт, порт может быть любой свободный. Стандартный порт для HTTP — 80, для HTTPS 443
Сертификаты SSL: Сертификаты нужны если Вы используете защищенный протокол HTTPS. Если у Вас нет сертификата для Вашего узла, можно использовать серверный самоподписанный IIS Express Development Certificate.
Проверяем, что наш сайт появился и запустился
Вместе с сайтом так же должен был создаться пул приложений с таким же названием.
Переходим выше по ветке в раздел Пулы и приложений и находим наше приложение, в данном случае 1с
Выбираем наш пул приложений 1с и нажимаем в правой части Дополнительные параметры…
В Дополнительных параметрах находим строки:
Версия среды .NET Framework — выбираем версию v.4.0+
Разрешены 32-разрядные приложения и выбираем значение True
Внимание! Если Вы будете публиковать x64 битную платформу 1С данное значение оставляем False,иначе будете получать ошибку 0x800700c1
(Эта проблема возникает из-за неверного сопоставление сценариев. Убедитесь в том, что сопоставление сценария указывает на ISAPI DLL-файл, который может обработать запрос. Чтобы сделать это, выполните следующие действия.)
Режим управляемого конвейера — выбираем значение Classic
Настройка доступа для группы IIS_IUSRS
Настройка необходимого доступа для группы IIS_IUSRS, для корректной работы нашего сайта (1с) и корректной публикации.
Для начала необходимо дать права группе IIS_IUSRS к каталогу в котором находятся (будут находиться) файлы нашего сайта. В нашем примере файлы сайта находятся в C:\inetpub\www\1c.
Переходим в каталог C:\inetpub\www\ -> нажимаем ПКМ на каталоге 1с -> в меню выбираем пункт Свойства -> переходим на вкладку Безопасность -> жмем кнопку Изменить… -> кнопку Добавить… -> в поле вписываем название группы IIS_IUSRS (при необходимости меняем место Размещения) -> нажимаем кнопку Проверить имена.
Если группа найдена она станет подчеркнутой, жмем ОК.
Далее проставляем галочки необходимых прав:
— Чтение и выполнение
— Список содержимого папки
— Чтение
Тоже самое с правами, мы делаем для каталога куда установлена 1с и каталога куда развернута наша файловая база. Если Вы используете базу SQL, то Вам НЕ нужно задавать права на каталог с базой.
Обращаем внимание, что для каталога с базой так же нужны права на запись!
Расположение файловой базы Вы можете посмотреть запустив 1С Предприятие
Публикация 1с
Запускаем 1с Предприятие -> Конфигуратор -> Администрирование -> Публикация на веб-сервере…
Выбираем каталог где будут файлы сайта и жмем Опубликовать
Проблемы при настройке веб-приложения «Форсайт. Аналитическая платформа» на ASP.NET
При возникновении проблем в работе веб-приложения «Форсайт. Аналитическая платформа» в первую очередь проверьте следующие настройки:
Откройте «Диспетчер служб IIS» и выберите корневой элемент дерева «Подключения», дважды кликните «Ограничения ISAPI и CGI»:
Для строк «ASP.NET v4.0.30319» и «Axis2 v9.2 x64» в столбце «Ограничение» должно отображаться «Разрешено»:
Если это не так, то для каждой строки откройте диалог редактирования и установите флажок «Разрешить выполнение пути расширения».
Если отсутствуют строки «ASP.NET v4.0.30319», то выполните настройку Microsoft .NET Framework 4.5.2.
Если нет строки «Axis2 v9.2 x64», значит не зарегистрировалась библиотека продукта «Форсайт. Аналитическая платформа», добавьте ее вручную:
Откройте «Диспетчер служб IIS» и для виртуального каталога BI-сервера дважды кликните «Сопоставления обработчиков»:
В открывшемся списке должна быть строка:
Если ее нет, то создайте ее вручную, как показано ниже:
Проверьте, установлен ли флажок « Для всех пользователей на компьютере » в настройках подключения к серверному репозиторию в настольном приложении «Форсайт. Аналитическая платформа».
Возможные проблемы и решения при настройке приложений под IIS
Установите поддержку статического содержания в IIS.
Для этого откройте «Диспетчер сервера», перейдите в раздел «Роли — Веб-сервер (IIS)» и нажмите на ссылку «Добавить службы роли». В открывшемся окне установите флажок «Статическое содержимое»:
Нажмите кнопку «Установить».
Установите дополнительные опции в IIS.
Для этого откройте «Диспетчер сервера», перейдите в раздел «Веб-сервер (IIS)» и нажмите на ссылку «Добавить роли и компоненты». На странице «Роли сервера» установите флажки на компонентах как указано на скриншоте:
После отметки необходимых компонентов в конце мастера установки нажмите кнопку «Установить» и дождитесь окончания установки компонентов.
При открытии веб-приложения ответ содержит «Значение не может быть пустым» при условии, что BI-сервер работает корректно.
в настройках подключения к серверному репозиторию установите переключатель « Для всех пользователей на компьютере »:
IIS подтягивает информацию о существующих репозиториях только при старте процесса. Если параметры подключения были прописаны позже, то перезапустите процесс IIS;
если первые два варианта не помогают, то проверьте, прописаны ли настройки в ветке реестра: [HKEY_LOCAL_MACHINE\SOFTWARE\Foresight\Foresight Analytics Platform\9.0 \Metabases] .
В процессе авторизации в веб-приложении возникает ошибка: HTTP 500.21 — Internal Server Error IIS 7 и WCF. Обработчик «ppService» содержит поврежденный модуль «ManagedPipelineHandler» в списке модулей.
Если работа с веб-приложением ведется на удаленном от BI-сервера компьютере, то вместо текста ошибки BI-сервера в веб-приложении может отображаться ошибка «The page cannot be displayed because an internal server error has occurred». Чтобы вместо этого текста отображался текст ошибки BI-сервера, выполните следующие настройки IIS:
Запустите диспетчер служб IIS и перейдите в раздел «Страницы ошибок».
Для строки с кодом ошибки 500 выполните команду контекстного меню «Изменить параметры».
В открывшемся окне установите переключатель «Подробные сообщения об ошибках».
В процессе авторизации в веб-приложении возвращается сообщение об ошибке « Доступ запрещен », при этом авторизация в настольном приложении проходит без ошибок.
Решение: при использовании парольной авторизации необходимо в конфигурационном файле SQLNET.ORA, расположенном по пути S\oracle\ora92\network\admin\, где S — путь до места установки Oracle, заменить SQLNET.AUTHENTICATION_SERVICES = (NTS) на SQLNET.AUTHENTICATION_SERVICES = (NONE).
Если BI-сервер и серверная часть конструктора бизнес-приложений расположены в одном домене, а обращение к серверной части осуществляется из другого домена, то может возникнуть ошибка: « Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. »
Для исправления ошибки на веб-сервере IIS выполните следующие действия:
Откройте «Диспетчер служб IIS» и в дереве подключений выберите приложение, соответствующее BI-серверу — fp BI_App_v9.2×64.
Среди доступных функций выберите «Заголовки ответов HTTP».
Добавьте следующие заголовки:
« Access-Control-Allow-Headers » со значением « content-type, accept-language, get-ppbi-time, cache-control, soapaction »;
« Access-Control-Allow-Origin » со значением « * ». Для предоставления доступа только из определённых доменов вместо «*» можно указать наименования необходимых доменов: «http://www.a.com http://www.b.com».
Перезагрузите веб-сервер IIS.
Возможные проблемы и решения при настройке приложений под Apache
Если BI-сервер и серверная часть конструктора бизнес-приложений расположены в одном домене, а обращение к серверной части осуществляется из другого домена, то может возникнуть ошибка: « Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. »
Для исправления ошибки на веб-сервере Apache выполните следующие действия:
Откройте на редактирование файл httpd.conf.
Раскомментируйте следующие строки:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
В блоке . для директивы AllowOverride задайте значение All , а также внутри блока добавьте следующие строки:
Header always set Access-Control-Allow-Headers «content-type, accept-language, get-ppbi-time, cache-control, soapaction»
Header always set Access-Control-Allow-Origin «*»
Использование FastCGI для хостинга PHP приложений на IIS 7.0
Использование FastCGI для хостинга PHP приложений на IIS 7.0
Автор: Руслан Якушев
Данная статья описывает конфигурацию модулей FastCGI и PHP для хостинга PHP приложений на IIS 7.0
Важно: Данная статья содержит инструкции по установке компонента FastCGI в операционных системах Windows Server 2008 и Windows Vista SP1. Обратите внимание: на Windows Vista должен быть установлен SP1.
Содержание
- Краткий Обзор
- Включение поддержкиFastCGIвIIS7.0
- Windows Server 2008
- Windows Vista SP1
- Обновление модуляFastCGI
- Administration Pack для IIS 7.0
- Установка и настройка PHP
- НастройкаIIS7.0 для обработкиPHPзапросов
- Используя консоль управления IIS
- Используя командную строку
- Рекомендуемые руководства по конфигурированиюFastCGIиPHP
- Безопасная изоляция для PHP Web сайтов
- Режим рециркуляцииPHPпроцессов
- Версионность PHP
- Рекомендации по безопасностиPHP
- Конфигурирование PHP на уровне сайтов
- МодульURLrewritingдляPHPприложений
- Полезные ресурсы
Благодаря модулю FastCGI в IIS поддерживается большинство популярных приложений коллективной работы, которые используют протокол FastCGI для хостинга на Web сервере IIS высокопроизводительных и надёжных средств. FastCGI предоставляет высокопроизводительную альтернативу CGI (Common Gateway Interface), стандартного средства, являющегося интерфейсом между внешними приложениями и Web серверами, которые поддерживаются как часть возможностей IIS начиная с первых версий сервера.
Программы CGI выполняются на сервере при каждом запросе, это позволяет обработать запросы, динамически сгенерировать ответы и возвратить их обратно клиентам. Из-за того, что многие приложения коллективной работы не поддерживают исполнения сразу нескольких потоков, CGI позволяет надежно исполненять нескольких процессов под управлением IIS, обрабатывая по одному запросу на процесс. К сожалению это приводит к снижению производительности из-за высоких накладных расходов связанных с необходимостью запуска и остановки процессов при обработке каждого запроса.
FastCGI является более производительным по сравнению с CGI, механизм его работы выглядит так – один и тот же процесс используется для обработки множество поступивших запросов. FastCGI так же поддерживает работу с библиотеками не умеющими безопасно работать в многопоточной среде. При работе с набором повторно используемых процессов мы можем быть уверены в том, что каждый процесс будет обрабатывать не более одного запроса в каждый момент времени.
Добавьте роль CGI сервиса через меню Server Manager -> Roles -> Add Role Services. Этим мы включим поддержку двух сервисов CGI и FastCGI:
Windows Vista SP1
Добавьте расширение CGI, используя Control Panel -> Programs and Features -> Turn Windows features on or off. Этим мы включим поддержку двух сервисов CGI и FastCGI:
Важно: Установка обновлений для модуля FastCGI
Установка пакета администрирования для IIS 7.0
Примечание: Данный шаг не обязателен (опционален).
Из большого числа полезных функций административного пакета IIS 7.0 можно выделить интерфейс конфигурирования модуля FastCGI. Административный пакет может быть установлен из следующих источников:
- Административный пакет для IIS 7.0 CTP2 — x86
- Административный пакет для IIS 7.0 CTP2 — x64
Установка и настройка PHP
Рекомендуется использовать сборку non-thread safe PHP с модулем FastCGI сервера IIS 7.0. Эта сборка PHP дает значительный прирост производительности в отличие от стандартной сборки, т.к не производит проверок thread-safety, которые не требуются, так как сам FastCGI гарантирует однопоточное исполнение процессов, в окружении сервера.
- Загрузите последнюю версию non-thread safe пакета, включая бинарные файлы, по следующей ссылке http://www.php.net/downloads.php.
- Распакуйте файлы в директорию (например C:\PHP). Переименуйте файл php.ini-recommended в php.ini.
- Откройте переименованный файл php.ini, уберите комментарии с нижеперечисленных строк и измените значения в соответствии с предложенными:
- Установите fastcgi.impersonate= 1. Модуль FastCGI для IIS может исполнять роль выдачи ключей безопасности для вызовов клиента. Это позволяет IIS определять контекст безопасности для выполняемых запросов.
- Значение cgi.fix_pathinfo=1. cgi.fix_pathinfo обеспечивает поддержку *реальных путей* PATH_INFO/PATH_TRANSLATED для CGI. В предыдущих версиях PHP значение PATH_TRANSLATED указывало на SCRIPT_FILENAME, и не затрагивало директивы PATH_INFO. Дополнительную информацию о PATH_INFO смотрите в документации cgi. Установка данного значения в 1 решает проблему задаваемых путей PHP CGI изменяя пути так чтобы они соотвествовали спецификации.
- Установите cgi.force_redirect = 0.
- Установите для директивы open_basedir путь к папке или сетевому ресурсу на котором расположены Web сайт(ты).
- Директива extension_dir определяет расположение расширений для PHP. Обычно, для PHP версий 5.2.X значение для данной директивы устанавливается в extension_dir= «./ext«
- Для включения необходимых расширений PHP уберите комментарии в файле php.ini с соответствующих строчек, к примеру:
extension=php_mssql.dll
extension=php_mysql.dll
- Для проверки удачной установки PHP выполните следующую команду:
Если PHP вместе со всеми компонентами от которых он зависит был установлен корректно, то данная команда выдаст информацию о текущей конфигурации PHP.
Настройка IIS 7.0 для обработки PHP запросов
Для того чтобы приложения PHP корректно работали на IIS 7.0 необходимо настраивать привязку к запрашиваемым файлам, посредством которых IIS будет пропускать специфические PHP запросы к PHP приложениям, используя протокол FastCGI.
Прим.переводчика: при запросе клиентом файла с расширением *.php с Web сайта/сервера, расположенного на IIS 7.0, сервер будет «отдавать» обработку php файлов приложению, отвечающему за обработку php файлов.
Используя консоль управления IIS
Откройте IIS Manager и выберете “Handler Mappings” на уровне управления сервером:
Запустите “Add Module Mapping” для конфигурации, представленной на рисунке ниже:
Нажмите OK. На запрос о создании приложения FastCGI нажмите Yes.
Протестируйте корректную привязку заголовков, созданием файла phpinfo.php в папке C:\inetpub\wwwroot, используя следующий код:
Откройте браузер и перейдите по ссылке http://localhost/phpinfo.php. Если установка прошла корректно, то вы увидите стандартную страницу конфигурации PHP:
Примечание: Если Вы не видите в списке модулей «FastCgiModule», то это означает, что модуль не зарегистрирован, либо не включен. Для того, чтобы проверить, зарегистрирован ли модуль FastCGI откройте конфигурационный файл IIS по следующему адресу: %WINDIR%\windows\system32\config\applicationHost.config и проверьте присутствие значения в следующей секции:
Также, в этом же файле, убедитесь в том, что модуль FastCGI добавлен в секцию :
Используя командную строку
Альтернативой предыдущим шагам может служить использование команды appcmd.
Для создания пула приложений FastCGI выполните следующую команду:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\
После этого создайте привязку заголовков:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name=’PHP_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\
Примечание: Если вы используете PHP версий 4.X,то вместо php-cgi.exe необходимо использовать php.exe.
Рекомендуемые руководства по конфигурированию FastCGI и PHP
Данная ссылка содержит zip архив с файлом презентаций руководств, по разворачиванию хостинга PHP приложений в среде общего хостинга .
Безопасная изоляция для PHP Web сайтов
Рекомендации по изоляции PHP Web сайтов в среде общего хостинга согласуются с общей безопасностью изоляции, рекомендованной для IIS 7.0. В особенности следует обратить внимание на следующее:
- Используйте один пул приложений на один Web сайт
- Используйте выделенный аккаунт пользователя для пула приложений
- Используйте анонимного пользователя для идентификации пула приложений
- Убедитесь в том, что реализация FastCGI включена в файле php.ini (fastcgi.impersonate=1)
Более подробно о безопасной изоляции в окружении общего хостинга написано в документации «Изолирование сайтов с пулами приложений»
Режим рециркуляции PHP процессов
Убедитесь в том, что FastCGI всегда рециркулирует (перезагружает — прим.перевод) процессы php-cgi.exe, прежде чем завершается работа основного PHP процесса. Режим рециркуляции процессов FastCGI контролируется параметром конфигурации, который называется instanceMaxRequests (максимальное кол-во запросов на экземпляр приложения — прим.перевод). Данное значение определяет, какое кол-во запросов выполнит FastCGI, прежде чем произойдёт рециркуляция. В PHP так же существует функция рециркуляции, которая контролируется параметром PHP_FCGI_MAX_REQUESTS. Установка наименьшего значения для instanceMaxRequests или подобного параметра PHP_FCGI_MAX_REQUESTS, гарантирует, что основной PHP процесс не будет закончен преждевременно.
Свойства для FastCGI могут быть изменены при помощи IIS Manager или командной строки, используя приложение appcmd.
Для настройки процесса рециркуляции FastCGI, используя IIS Manager, вам необходимо установить Административный пакет для IIS 7.0 и выбрать на уровне севера меню FastCGI settings (параметры FastCGI):
Далее необходимо выбрать приложение FastCGI, которое вы хотите настроить и нажать «Edit. » в панели Actions:
В окне «Edit FastCGI application» установите для параметра instanceMaxRequest значение 10000 нажмав кнопку обзора в меню EnvironmentVariables:
Добавьте переменную PHP_FCGI_MAX_REQUESTS,установив для неё значение в 10000:
Примечение: Если вы не установите данные значения, то по умолчанию они будут следующими: instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 (для большинства сборок PHP).
Использование командной строки:
Для конфигурирования процессов рециркуляции FastCGI и PHP посредством appcmd, используйте следующие команды:
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath=’c:\
C:\>%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+»[fullPath=’C:\
Большинство PHP приложений могут зависеть от функций или расширений доступных только в определённой версии PHP. Если такие приложения должны быть размещены на одном сервере хостинга, то необходимо чтобы на данном сервере одновременно поддерживались и работали разные версии PHP. Обработчик FastCGI в IIS 7.0 полноценно поддерживает одновременную работу различных версий PHP на одном сервере.
К примеру, допустим что на своём Web сервере вы планируете поддерживать следующие сборки: PHP 4.4.8, PHP 5.2.1 и PHP 5.2.5 non-thread safe. Для включения данной возможности вы должны положить соответствующие исполняемые файлы PHP в различные папки на файловой системе (к примеру C:\php448\, C:\php521\ и C:\php525nts) и создать соответствующие пулы приложений для каждой версии:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php448\php.exe’]
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php521\php-cgi.exe’]
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php525nts\php-cgi.exe’]
Так, если у вас есть 3 Web сайта (site1, site2, site3), каждый из которых должен использовать различные версии PHP, вы можете задать соответствие заголовков для каждого из сайтов, создав соответствующий пул приложений FastCGI.
Примечание: Каждый пул приложений процессов FastCGI будет идентифицируется уникально — комбинацией полного пути и свойствами аргументов.
C:\>%windir%\system32\inetsrv\appcmd set config site1 –section:system.webServer/handlers /+”..[name=’PHP448_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php448\php.exe’,resourceType=’Either’]
C:\>%windir%\system32\inetsrv\appcmd set config site2 –section:system.webServer/handlers /+”..[name=’PHP521_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php521\php-cgi.exe’,resourceType=’Either’]
C:\>%windir%\system32\inetsrv\appcmd set config site3 –section:system.webServer/handlers /+”..[name=’PHP525nts_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php525nts\php-cgi.exe’,resourceType=’Either’]
Рекомендации по безопасности PHP
Следующие настройки могут быть использованы для улучшения безопасности установленного PHP. Следуя рекомендациям найдите и измените в файле php.ini следующие значения:
Ссылки Назад «> Вверх Вперед Настройка веб-сервиса «1С:Предприятие» > Настройка веб-сервиса для IIS»> Задать вопрос |
1. Установка IIS выполняется стандартными средствами. Необходимо установить следующие компоненты:
Web Management Tools:
• IIS 6 Scripting Tools
• IIS 6 WMI Compatibility
• IIS Metabase and IIS configuration compatibility
• IIS Management Console
• IIS Management Scripts and Tools
World Wide Web Services:
• Static Content Compression
Набор достаточных компонент приведен на скриншоте ниже.
Набор достаточных компонент IIS.
2. Если при установке платформы «1С:Предприятие» не были установлены компоненты работы с веб-сервером, их надо установить (через установку платформы):
Элементы платформы «1С:Предприятие», которые должны быть установлены.
Далее от имени администратора зайдите в «Конфигуратор» — «Администрирование» — «Публикация на веб-сервере. «. Укажите имя базы в поле «Имя». (используйте только буквы латинсого алфавита). Выберите пустой каталог (путь к нему также не должен содержать кириллических символов, см. пример ниже). Включите флажок «Публиковать Web-сервисы», в списке веб-сервисов включите флажок у сервиса » rg1CTCService «. Нажмите Опубликовать .
Публикация веб-сервиса «Первой Формы».
В диалоге о перезапуске веб-сервера нажмите Да . Для корректной установки у пользователя должны быть права администратора на компьютере, с которого производится установка.
3. Укажите права для обработчика веб-сервисов «1С:Предприятие» . Права на запуск (Execute) модулей добавляются для группы IIS_IUSRS на папку . 1cv81\BIN\
Права на выполнение для обработчика веб-сервисов «1С:Предприятие».
4. Если база «1С:Предприятие» файловая, добавьте права на изменение (Modify) на папку и подпапки базы для той же группы.
Права на изменение для обработчика веб-сервисов «1С:Предприятие».
5. В консоли IIS щелкните правой кнопкой мыши на строку с созданной папкой. Преобразуйте её в приложение.
Преобразование сервиса в приложение.
6. Добавьте MIME типы для приложения «1С:Предприятие» . Сделать это можно для сервера, для сайта или для папки (наследование присутствует).
Добавление типов MIME.
7. Добавьте настройки для обработки файлов «1С:Предприятие». На вкладке Handler Mappings добавьте скрипты (не скрипты со звездочкой) для каждого расширения -«*.1cws» и «*.1crs». Для этого последовательно выберите каждую строку, в которой указано одно из нужных расширений, затем справа в разделе «Actions» нажмите «Add Script Map…».
В открывшемся окне нажмите кнопку Request Restrictions . Во втором открывшемся окне
• перейдите на вкладку «Access» и выберите тип доступа «Execute». Имя правила можно задать любое.
Настройка типа доступа Executive.
• там же перейдите на вкладку «Mapping» и отключите флажок «Invoke handler only if request is mapped to»
Настройка вызова обработчика .
Альтернативой является добавление обработчика из командной строки:
C:\>cscript C:\inetpub\AdminScripts\adsutil.vbs SET /W3SVC/1/ROOT/MyApp/ScriptMaps «.1cws,с:\Program Files\1cv81\Bin\wsisapi.dll,5» «.1crs,
На экране отобразится текст:
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
ScriptMaps: (LIST) «.1cws,с:\Program Files\1cv81\Bin\wsisapi.dll,5» «.1crs,с:\Program Files\1cv81\Bin\wsisapi.dll,5»
Важно указать правильный путь: /W3SVC/1/ROOT/MyApp/ScriptMaps
8 . Для обработчиков укажите дополнительные параметры: выберите действие «Edit Feature Permissions» и в открывшемся окне установите флажки запуска скриптов и приложений, как на скриншоте ниже:
Настройка запуска скриптов и приложений.
9. Проверьте наличие обработчика веб-сервисов «1С:Предприятие» на вкладке ISAPI and CGI Restrictions для сервера.
Проверка наличия обработчика web-сервисов «1С:Предприятие».
Если установка идет в 64-разрядном окружении, то для обработчика включите режим Alpplication Pool -> DefaultAppPool -> Enable 32-bit Application -> True .
Настройки для 64-разрядного окружения.
10. Перейдите по ссылке:
Например, для примера на скриншоте выше адрес будет выглядеть следующим образом: http://ip/BP/ws/1CTCService.1cws?wsdl
11. Анонимная аутентификация на IIS и доступ к базе
В случае неудачной настройки доступа нужно создать пользователя вручную:
• Создать пользователя на компьютере (сервере) с IIS и указать ему пароль. Ни в какие группы не добавлять.
• В консоли IIS. Имя_сервера -> Autentification -> AnonymousAutentification -> Edit -> Set -> User name -> Password -> Confirm password.
Если используется аутентификация «1С:Предприятие» : создайте пользователя с именем, которое создано на компьютере и введено в IIS. Задайте пароль и поставьте флаг «Аутентификация 1С:Предприятия».
Если используется Windows аутентификация : создайте пользователя с неким именем (лучше не использовать имя, которое создано на компьютере и введено в IIS). Установите флаг «Аутентификация Windows».
Выберите или введите пользователя в формате \\имя_компьютера\имя_пользователя . Флаг «Аутентификация 1С:Предприятия» в этом случае лучше снять.