Партнерки вебмастерам

Баннер

Кто онлайн

Сейчас 65 гостей онлайн

Статистика

Архив содержит 29 файлов в 11 категориях. На данный момент файлы скачаны 102256 раз.
PHP + Windows Azure PDF Печать E-mail

Windows Azure — платформа для создания распределенных («облачных») веб-приложений. Платформа основана на Windows Server 2008 x64 и поддерживает все возможности IIS.

Давайте рассмотрим процесс разработки и установки PHP приложения на Windows Azure.

Описание платформы на русском можно найти в книге «Windows Azure. Облачная платформа Microsoft». Электронная версия книги доступна для скачивания здесь.

PHP поддерживается в Windows Azure через FastCGI.

Установка поддержки FastCGI для IIS

Если установка происходит на Windows Server 2008 или 2008 R2, выбираем CGI сервис из окна Server Manager |Roles | Web Server | Add Role Services.

Windows Server 2008 R2

 

Если же вы используете Windows Vista SP1 или Windows 7, выбираем опцию CGI из Панели управления | Программы | Программы и компоненты | Включение и отключение компонентов Windows (Control Panel | Programs| Programs and Features | Turn Windows features on or off).

Windiws 7

Или же выполнив команду:

Start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-CGI

Скачиваем “non-thread safe” архив бинарных файлов PHP http://www.php.net/downloads.php

Распаковываем бинарники в папку C:PHP и переименовываем файл php.ini-recommended в php.ini.

Открываем php.ini и правим параметры:
fastcgi.impersonate = 1

cgi.fix_pathinfo=1

cgi.force_redirect = 0

extension_dir = "./ext"

Проверяем установку PHP, выполнив в командной строке:

C:PHP>phpinfo

Если все установлено верно, то команда выведет параметры текущей конфигурации

Настройка IIS

Создаем папку проекта С:WindowsAzurePHPmyPHPapp и файл index.php, содержащий:

php phpinfo(); ?>

Запускаем командную строку от имена Администратора и переходим в папку проекта

cd C:AzureServicesKitLabsWindowsAzurePHP

Создаем виртуальную директорию для нашего PHP приложения

"%windir%system32inetsrvappcmd.exe" add app /site.name:"Default Web Site" /path:"/myPHPapp" /physicalPath:" C: WindowsAzurePHPmyPHPapp"

Сбрасываем настройки FastCGI в настройки по умолчанию:

"%windir%system32inetsrvappcmd.exe" clear config -section:fastCGI

Обновляем файл applicationHost.config рекомендуемыми настройками FastCGI:

"%windir%system32inetsrvappcmd.exe" set config -section:fastCgi /+"[fullPath='C:PHPphp-cgi.exe', arguments='',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='10000', protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost

Добавляем переменную PHP_FCGI_MAX_REQUESTS 10000:

"%windir%system32inetsrvappcmd.exe" set config -section:fastCgi /+[fullPath='C:PHPphp-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']

Проверяем настройки FastCGI:

"%windir%system32inetsrvappcmd.exe" list config /section:fastCGI

FastCGI

Настраиваем PHP обработчик для нашего PHP приложения

"%windir%system32inetsrvappcmd.exe" set config "Default Web Site/myphpapp" -section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:PHPphp-cgi.exe',resourceType='Unspecified']

Устанавливаем index.php страницей по умолчанию:

"%windir%system32inetsrvappcmd.exe" set config "Default Web Site/myphpapp" -section:defaultDocument /enabled:true /+files.[@start,value='index.php']

Проверяем начальную страницу:

"%windir%system32inetsrvappcmd.exe" list config "Default Web Site/myphpapp" /section:defaultDocument

Page

Проверяем установку настроек в файле C:WindowsAzurePHPmyphpappweb.config. Он должен содержать следующее:

xml version="1.0" encoding="UTF-8"?>

<configuration>

<defaultDocument enabled="true">

<files>

<add value="index.php" />

files>

<system.webServer>

<handlers>

<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule"scriptProcessor="C:PHPphp-cgi.exe" resourceType="Unspecified" />

handlers>

system.webServer>

configuration>

xml version="1.0" encoding="utf-8"?>

Проверяем нашу страницу: http://localhost/myphpapp

test


Запуск PHP приложения на Windows Azure

Теперь запустим наше приложение на локальной копии Windows Azure.

Скачиваем и устанавливаем Windows Azure SDK и Windows Azure SDK for PHP (ссылка).

Правим файл
web.roleConfig в папке приложения C:WindowsAzurePHPmyphpapp.

Он будет содержать настройки FastCGI для Windows Azure

Вставляем в файл следующее:

xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.webServer>

<fastCgi>

<application fullPath="%RoleRoot%phpphp-cgi.exe" />

fastCgi>

system.webServer>

configuration>

Устанавливаем PHP обработчик для хостинга в облаке

"%windir%system32inetsrvappcmd.exe" set config "Default Web Site/myphpapp" -section:system.webServer/handlers /[name='PHP_via_FastCGI'].scriptProcessor:%%RoleRoot%%phpphp-cgi.exe

Проверяем файл C:WindowsAzurePHPmyphpappweb.config.

xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<defaultDocument enabled="true">

<files>

<add value="index.php" />

files>

defaultDocument>

<handlers>

<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule"scriptProcessor="%RoleRoot%phpphp-cgi.exe" resourceType="Unspecified" />

handlers>

system.webServer>

configuration>

Правим конфигурационный файл C:WindowsAzurePHPServiceDefinition.csdef, описывающий нашу web-роль:

xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="myphpapp"xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WebRole name="WebRole" enableNativeCodeExecution="true">

<InputEndpoints>

<InputEndpoint name="HttpIn" protocol="http" port="80" />

InputEndpoints>

WebRole>

ServiceDefinition>

В папке проекта C:WindowsAzurePHP создаем папки myphpapp_webrole и myphpapp_webrolein

Копируем бинарные файлы PHP в папку web-роли, они будут автоматически развернуты в облаке:

robocopy C:PHP myphpapp_webrolein /E

robocopy C:PHP myphpapp_webroleinphp /E

Переходим в папку проекта:

cd C:AzureServicesKitLabsWindowsAzurePHP

и подготавливаем сервис к развертыванию с помощью утилиты cspack.exe из состава Windows Azure SDK:

"%programfiles%windows azure sdkv1.3incspack.exe" "ServiceDefinition.csdef" /role:WebRole;"myphpapp_WebRolein" /copyOnly /generateConfigurationFile:"ServiceDefinition.csxServiceConfig.cscfg"

Используйте опцию /copyOnly для локального облака.

Проверяем, что проект содержит необходимое:

folders

Автоматически созданный файл C:WindowsAzurePHP ServiceDefinition.csx ServiceConfig.cscfg должен содержатьследующее:

xml version="1.0"?>

<ServiceConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema" serviceName="PHPStarter"xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">

<Role name="WebRole">

<ConfigurationSettings />

<Instances count="1" />

Role>

ServiceConfiguration>

Мы используем 1 рабочий инстанс.

Используя утилиту csrun.exe разворачиваем сервис на локальной development fabric, указывая

расположение ServiceDefinition.csx и ServiceConfig.csfg.

"%programfiles%windows azure sdkv1.3incsrun.exe" "ServiceDefinition.csx" "ServiceDefinition.csxServiceConfig.cscfg" /launchBrowser

Наше приложение будет доступно по локальному адресу http://127.0.0.1:81

Test Azure

Проверяем статус нашей web-роли

UI

Web Role status



Разработки PHP приложения для Windows Azure в Eclipse.

Eclipse for PHP также позволяет разрабатывать приложения для Windows Azure.


Устанавливаем
Azure плагины для Eclipse (мню Help | Install New Software …):

New software

Выбираем доступные:

Available tools

Устанавливаем Windows Azure перспективу:

PDT

После этого появится новый пункт меню:

New menu

Создаем новый проект:

New Project

Пишем имя проекта

Project name

И имя Web-роли:

Web role name

Мастер позволяет настроить приложение на использование дополнительных возможностей:
Storage, SQL Azure,MySQL.

Мы будем использовать ту же начальную страницу PHP.

Запускаем наше PHP приложение на локальной Development Fabric.

Dev App

Результатом будет та же страница, которую мы создали вручную:

Preview

 

 

Загрузка PHP приложения в Windows Azure

Если у вас есть Windows Azure акаунт, вы можете загрузить свое приложение в облако.

Авторизуемся на
Azure портале и выбираем New service | Hosted service.

 

Выбираем имя приложения и проверяем его доступность:

ew service

Выбираем Deploy:

 

Deploy

Выбираем конфигурационные файлы для загрузки

Conf files


И ждем, когда наше приложение проинициализируется.

 

Finish


После этого приложение будет доступно по выбранному адресу.