Web Farm Framework 2.0 overview

IIS team has recently released a Web Farm Framework 2.0 beta. The goal of the Web Farm Framework is to enable easy provisioning, deployment and managing of web farms. This blog post provides an example of what Web Farm Framework can do and how it can simplify the Web Farm management tasks.

To demonstrate the capabilities of the tool, we will create a simple web farm that looks as on the following diagram:

  • The load balancer will be using the Application Request Routing for IIS 7 and will also act as a Web Farm Controller. Web Farm Controller manages all the machines within the web farm and it has the Web Farm Framework 2.0 installed.
  • The Primary Server, in addition to serving the web requests, also acts as an example server for all the other servers in the farm. Web Farm Framework will ensure that every new secondary server added to the web farm has exact same components installed and is configured exactly as the primary server.
  • The Secondary Server(s) will serve web requests. It’s configuration and content matches the primary server. Continue Reading »

No Comments »

ruslany on July 30th 2010 in Other

29 views

PoorFairAverageGoodExcellent (No Ratings Yet)

Install PHP applications with WebMatrix

Microsoft has recently launched a beta release of a new project called WebMatrix. This is a complete web development stack that can be used to start developing and deploying web sites. One thing that may be not so obvious from all the existing announcements is the fact that WebMatrix has full support for installing, running and publishing PHP applications.

Here are the examples of how WebMatrix can be used to create and publish a PHP web site (using WordPress as a showcase). Continue Reading »

10 Comments »

ruslany on July 9th 2010 in PHP, WordPress

2,248 views

PoorFairAverageGoodExcellent (1 votes, average: 5.00 out of 5)

WinCache Extension 1.1 for PHP – Release to Web

Today IIS team has published the final release of WinCache Extension 1.1 for PHP. This is the latest stable and production ready version of the extension. The v1.1 has all the features available in version 1.0 plus the following features.

  • User Cache API’s can be used by PHP scripts to store PHP objects and variables in shared memory. This way PHP scripts may improve the execution speed by storing processed data in the cache and then using it in subsequent requests instead of re-creating the data on every request.
  • WinCache Session Handler can be used to configure PHP to store the session data in shared memory cache. Using shared memory instead of the default file session storage helps improve performance of PHP applications that store large amount of data in session objects. The content of the WinCache session cache is persisted on disk so that it is not lost during IIS worker process recycling.
  • File Change Notifications – the entries in the opcode and file caches are now updated as soon as the corresponding PHP files are modified on a file system. This is very useful for PHP applications that store its configuration in PHP files – for example Joomla!. Now the configuration changes for those applications take effect right away instead of a 30 seconds delay (default cache refresh interval).
  • Lock/Unlock API’s – these API’s can be used to obtain/release an exclusive lock on a key in the cache.

Install the Windows Cache Extension 1.1 for PHP – RTW

To install the WinCache Extension 1.1 for PHP 5.2 and PHP 5.3, use the download links at the extension’s home page at http://www.iis.net/expand/WinCacheForPhp. Continue Reading »

No Comments »

ruslany on June 30th 2010 in PHP, WinCache

1,664 views

PoorFairAverageGoodExcellent (3 votes, average: 4.67 out of 5)

Storing URL rewrite mappings in a separate file

When using rewrite maps in IIS URL Rewrite it is very common to have a very large number of entries in a rewrite map. In order to avoid cluttering the configuration file - web.config - with this configuration data the rewrite maps can be defined in a separate configuration file. That file can then be referenced from the web.config file. This post provides an example of how this can be done.

Create a file called rewritemaps.config in the same directory where web.config file is. Open that file in notepad and add the following:

<rewriteMaps>
  <rewriteMap name="Redirects">
    <add key="/oldurl" value="/newurl" />
    <add key="/otheroldurl" value="/othernewurl" />
  </rewriteMap>
</rewriteMaps>

Save this file and then open web.config file in notepad. In the web.config file add the following inside of the <rewrite> section:

<rewriteMaps configSource="rewritemaps.config" />

The configSource attribute tells IIS configuration that the <rewriteMaps> section is defined in a separate file rewritemaps.config. This referenced section can be now uses as if it was defined in the same web.config file. Also, the IIS Manager UI will work well with this referenced file: when you modify or add entries to the rewrite map they will be stored in the rewritemaps.config file.

Here is a complete example web.config file that uses the rewrite map from referenced configuration file:

<configuration>
<system.webServer>
  <rewrite>
    <rewriteMaps configSource="rewritemaps.config"><rewriteMaps>
    <rules>
      <rule name="Redirect rule1 for Redirects">
        <match url=".*" />
        <conditions>
          <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
        </conditions>
        <action type="Redirect" url="{C:1}" appendQueryString="false" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
</configuration>

The same approach can be used for storing rewrite rules in a separate configuration file, e.g.:

<rules configSource="rewriteRules.config" />

6 Comments »

ruslany on May 19th 2010 in URLRewrite

1,322 views

PoorFairAverageGoodExcellent (2 votes, average: 5.00 out of 5)

WinCache Extension 1.1 for PHP – Beta 2

Today IIS team has published a second beta of WinCache 1.1, which has the following new features and improvements :

  • File Change Notifications – the entries in the opcode and file caches are now updated as soon as the corresponding PHP files are modified on a file system. This is very useful for PHP applications that store its configuration in PHP files – for example Joomla!. Now the configuration changes for those applications take effect right away instead of a 30 seconds delay (default cache refresh interval);
  • Persistent Session Handler – the content of the WinCache session cache is persisted on disk so that it is not lost during IIS worker process recycling.
  • Lock/Unlock API’s – these API’s can be used to obtain/release an exclusive lock on a key in the cache.

The beta builds of the extension can be downloaded and installed from the extension home page at: http://www.iis.net/expand/wincacheforphp (look for the “WinCache 1.1 – Beta 2” section there). The source code can be obtained from http://pecl.php.net/package/WinCache/1.1.0beta2. The documentation for the extension can be found on PHP.NET WinCache documentation.

To learn how to change popular PHP applications to use WinCache 1.1 features refer to the following:

This is the beta release and the WinCache team is looking for your feedback on new features and functionality. Use the WinCache Community Forum to ask questions about the extension, report bugs and problems and to suggest features and improvements.

No Comments »

ruslany on April 29th 2010 in PHP, WinCache

2,432 views

PoorFairAverageGoodExcellent (4 votes, average: 4.75 out of 5)

Visual Studio XML IntelliSense for URL Rewrite 2.0

Last year I published an XML schema for URL Rewrite 1.1 that could be used to enable IntelliSense support when editing rewrite rules in Visual Studio XML editor. Now that the URL Rewrite 2.0 has been released, the old schema will not work for the the new configuration elements introduced in the v2.0. Use the link below to download the schema for URL Rewrite 2.0:

VS IntelliSense for URL Rewrite 2.0

Disclaimer: The schema file and the helper script file contained in this package are provided by me and not by Microsoft. The are not officially supported by Microsoft. Use them at your own risk.

Follow the same instructions as in Visual Studio XML IntelliSense for URL Rewrite 1.1 to add the schema to the Visual Studio schema cache. If after following the instructions the IntelliSense does not work then follow the instructions at Not getting IntelliSense in your web.config for system.webServer sections in Visual Studio 2008?.

4 Comments »

ruslany on April 23rd 2010 in URLRewrite

3,150 views

PoorFairAverageGoodExcellent (4 votes, average: 5.00 out of 5)

Slides and Questions from PHP on Windows Webcast

On April 9, Mark Brown and I did a PHP|Architect webcast “PHP Performance On Windows”. The slides from the presentation have been published at the following link:

PHP Performance on Windows – slides

There were a number of question at the end of the webcast that we did not get to answer due to lack of time. This blog post provides answers to those questions. Continue Reading »

2 Comments »

ruslany on April 13th 2010 in FastCGI, PHP, WinCache

2,004 views

PoorFairAverageGoodExcellent (4 votes, average: 5.00 out of 5)

Time-dependent URL rewriting

This post explains how to configure time-dependent URL rewriting rules by using IIS URL Rewrite 2.0. Time-dependent URL rewriting may be useful when you want to rewrite or redirect HTTP requests based on the time of day or when you need to take the entire site or some parts of the site offline for a scheduled period of time.

The rewrite rules are not time-aware, but it is relatively easy to add the time-dependent functionality by using URL Rewrite 2.0 extensibility. Follow the steps below to add a scheduler rewrite provider for URL Rewrite module. Continue Reading »

No Comments »

ruslany on April 4th 2010 in URLRewrite

1,412 views

PoorFairAverageGoodExcellent (3 votes, average: 3.67 out of 5)

PHP on IIS: MonitorChangesTo setting in FastCGI

PHP on Windows loads its configuration file php.ini during the startup of the process php-cgi.exe. When PHP is run on IIS via FastCGI the php-cgi.exe processes are re-used to handle many requests. If configuration settings in php.ini file get updated, those changes will not be picked up by php-cgi.exe processes until the processes are recycled or restarted by IIS FastCGI module. This means that any time you change the PHP configuration you have to manually recycle IIS Application Pools that use PHP. This post explains how to configure FastCGI in IIS so that PHP configuration changes take effect right away without the need to manually recycle or restart the IIS Application Pools. Continue Reading »

No Comments »

ruslany on March 30th 2010 in FastCGI, PHP

2,196 views

PoorFairAverageGoodExcellent (2 votes, average: 3.00 out of 5)

IIS URL Rewrite 2.0 – Release to Web

The IIS URL Rewrite Module 2.0 – RTW is available for download. IIS URL Rewrite v2.0 is an incremental release that includes all the features from version 1.1, and adds extensibility support and outbound response rewriting. More specifically, v2.0 can be used to:

  • Express complex URL rewriting logic by using custom rewrite providers written in .NET.
  • Replace the URLs generated by a web application in the response HTML with a more user friendly and search engine friendly equivalent
  • Fix up the content of any HTTP response by using regular expression pattern matching.
  • Modify HTTP request and response headers and IIS server variables.

For the complete list of features available in this version, refer to Using URL Rewrite Module 2.0.

Install the URL Rewrite 2.0 – RTW

To install the URL Rewrite 2.0, use the download links at the module’s home page at http://www.iis.net/expand/urlrewrite. Note that this is a final, production ready release that is officially supported by Microsoft.

Upgrade notes:

  • If a previous version of URL Rewrite Module, such as v1.0 and v1.1, is already installed then it will be upgraded to the v2.0;
  • If an RC version of the URL Rewrite Module 2.0 is already installed, then it will be upgraded to RTW version. Continue Reading »

13 Comments »

ruslany on March 11th 2010 in URLRewrite

2,415 views

PoorFairAverageGoodExcellent (5 votes, average: 4.20 out of 5)

Recently Published Articles