This page explains how to configure the Microsoft IIS 7.5 Web Server for Appian.
See also: System Requirements
DefinitionsCopy link to clipboard
<APPIAN_HOME>
refers to the Appian installation directory.<IIS_DOCUMENT_ROOT>
refers to the document root directory for the IIS server (usuallyc:\inetpub\wwwroot
).<ISAPI_HOME>
refers to the Jakarta ISAPI Redirector installation directory.- The default
<ISAPI_HOME>
location isC:\Redirector
.
- The default
<SERVER_NAME>
refers to the host name of the machine where IIS is installed.<WEB_SERVER_STATIC_HOST>
refers to the name of the secondary host on which IIS is installed that will serve Appian static content, such as Documents.<WEB_SERVER_DYNAMIC_HOST>
refers to the name of the secondary host on which IIS is installed that will serve Appian dynamic content, such as Component Plug-ins.
Set up ISAPI filterCopy link to clipboard
- Download the 32-bit ISAPI Redirector DLL (
isapi_redirector.dll
), version 1.2.37 from Jakarta's Windows Connector downloads page.- The 32-bit ISAPI Redirector DLL is supported on 64-bit Windows using WoW64 mode.
- At the time of writing these instructions, the most recent version is 1.2.37.
- Rename
isapi_redirect-1.2.37.dll
toisapi_redirect.dll
. - Create the
<ISAPI_HOME>
folder (ie.C:\Redirector
). - Create the following subfolders under
<ISAPI_HOME>
:\ISAPI
\conf
\log
- Save the
isapi_redirect.dll
file in<ISAPI_HOME>\ISAPI
. - Create a text file with the name
isapi_redirect.properties
under the<ISAPI_HOME>\ISAPI
folder using the following example settings:1 2 3 4 5
extension_uri=/Redirector/isapi_redirect.dll log_file=<ISAPI_HOME>\Redirector\log\isapi_redirect.log log_level=info worker_file= <ISAPI_HOME>\Redirector\conf\workers.properties worker_mount_file= <ISAPI_HOME>\Redirector\conf\uriworkermap.properties
Copy - Verify that there are no extra spaces after each line.
- Create a text file named
uriworkermap.properties
. - Save this file in the
<ISAPI_HOME>\conf
folder. - Add the following settings to the
uriworkermap.properties
file:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# The default load balancer, default_lb, allows static content like images and JavaScript to be served directly from the IIS web server rather than the application server. /suite|/*=default_lb !/suite/*.jpg=default_lb !/suite/*.gif=default_lb !/suite/*.png=default_lb !/suite/*.js=default_lb !/suite/*.html=default_lb !/suite/*.xml=default_lb !/suite/*.css=default_lb !/suite/*.xsl=default_lb !/suite/*.ico=default_lb !/suite/*.svg=default_lb !/suite/*.gwt.rpc=default_lb !/suite/*.htc=default_lb # The dynamic content load balancer, dynamic_content_lb, handles dynamic content that must be served by the application server regardless of the file extension. /suite/s/*=dynamic_content_lb /suite/plugins/servlet/*=dynamic_content_lb /suite/rest/a/content/latest/webcontent/*=dynamic_content_lb
Copy - Create a text file named
workers.properties
. - Save it in the
<ISAPI_HOME>\conf
folder. - Use the following example settings:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
worker.list=default_lb,dynamic_content_lb,jkstatus worker.node1.type=ajp13 worker.node1.host=<APPLICATION SERVER 1 IP ADDRESS> worker.node1.port=8009 worker.node2.type=ajp13 worker.node2.host=<APPLICATION SERVER 2 IP ADDRESS> worker.node2.port=8009 worker.default_lb.type=lb worker.default_lb.balance_workers=node1,node2 worker.dynamic_content_lb.type=lb worker.dynamic_content_lb.balance_workers=node1,node2 worker.jkstatus.type=status worker.default_lb.sticky_session=1 worker.dynamic_content_lb.sticky_session=1
Copy- Remove or add additional worker nodes as needed.
- The
balance_workers
property now listsnode1
andnode2
. When deploying Appian via the configure script, ensure that the names you use in theConfigure Tomcat clustering by specifying a node name
step match the node names specified here. - Verify that your properties files use a
.properties
file extension, rather than.txt
. - Give the user (or system) account that is running IIS full control over the
<ISAPI_HOME>
folder.
Copy static resources to the web serverCopy link to clipboard
Since the Web server will be handling requests for static resources and forwarding all other requests to the application server, you need to copy over the static files that ship with Appian.
- Copy all of the files that match the static file extensions listed in the
uriworkermap.properties
example above from the<APPIAN_HOME>/deployment/web.war
directory to a new directory namedsuite
in a location that will be read by the Web server.- For example
<IIS_DOCUMENT_ROOT>
may be used, so the files would be copied to<IIS_DOCUMENT_ROOT>/suite
, preserving the same directory structure as is present inside<APPIAN_HOME>/deployment/web.war
. - If another directory is chosen, then a virtual directory mapping will need to be created (step 11 of the IIS Setup section that follows).
- For example
- If the web server is on a separate machine than the application server, a common configuration, these files will need to be copied to that location on the other machine.
Configure URL properties in AppianCopy link to clipboard
Once IIS has been enabled, all requests are sent directly to the web server. The SERVER_AND_PORT
, STATIC_SERVER_AND_PORT
, and DYNAMIC_SERVER_AND_PORT
properties must be configured to point to the web server.
- Open the
custom.properties
configuration file in the following location:<APPIAN_HOME>/conf/
. - Ensure the
SCHEME
property is set to the following:conf.suite.SCHEME=https
. - Ensure the
SERVER_AND_PORT
property is set to the following:conf.suite.SERVER_AND_PORT=<WEB_SERVER_HOST>
. - Ensure the
STATIC_SERVER_AND_PORT
property is set to the following:conf.suite.STATIC_SERVER_AND_PORT=<WEB_SERVER_STATIC_HOST>
. - Ensure the
DYNAMIC_SERVER_AND_PORT
property is set to the following:conf.suite.DYNAMIC_SERVER_AND_PORT=<WEB_SERVER_DYNAMIC_HOST>
.
See Post-Install Configurations for more details on configuring these properties.
Set up IIS server and primary siteCopy link to clipboard
- Ensure no other web server is listening on port 80 on your machine, such as an Apache server, either by turning them off via the Service menu or by changing the binding.
- Ensure IIS and other important features are turned on by completing the following:
- Open the Control Panel and select Programs > Programs and Features.
- Click Turn Windows Features on or off.
- Expand Internet Information Services >Web Management Tools.
- Ensure checkboxes for IIS Management Console, IIS Management Scripts and Tools, and IIS Management Service are checked.
- Expand World Wide Web Services > Common HTTP Features.
- Ensure Default Document, HTTP Redirection, and Static Content are checked.
- Within the same World Wide Web Services folder, ensure the Health and Diagnostic Folder is checked.
- Expand the Performance Features folder and ensure Static Content Compression is checked.
- Expand the Security folder and ensure Request Filtering is checked.
- Verify that the ISAPI Filter, CGI Features, and Request Filtering are installed by completing the following:
- Click Start > Control Panel.
- Type Turn Windows features on or off in the search field.
- Select the Turn Windows features on or off option in the control panel.
- Expand Internet Information Services > World Wide Web Services > Application Development Features.
- Make sure that the CGI checkbox, the ISAPI Extensions checkbox, and the ISAPI Filters checkbox are selected.
- Expand Internet Information Services > World Wide Web Services > Security.
- Make sure that the Request Filtering checkbox is selected.
- Click Administrative Tools from the Windows Control Panel.
- Select Internet Information Services (IIS) Manager.
- In the Features view, select the ISAPI and CGI Restrictions feature.
- Click Add to create a new ISAPI allowance.
- In the Executable field, type
<ISAPI_HOME>\ISAPI\isapi_redirect.dll
. - Type Redirector in the Description field.
- Select the Allow extension path to execute checkbox.
- Click OK.
- In the Features view, select the Handler Mappings feature.
- On the Actions list, click Edit Feature Permissions.
- Select the Read, Script, and Execute checkboxes.
- The
ISAPI-dll
andCGI-exe
resources are listed as enabled.
- The
- Back in the Handler Mappings feature, double-click
ExtensionlessUrlHandler-Integrated-4.0
. - Click Request Restrictions.
- On the Verbs tab, enter GET, POST, PUT, DELETE, HEAD, OPTIONS, and CONNECT.
- Click OK.
- In the Features view, select ISAPI Filters.
- Click Add to create a new ISAPI filter.
- Set the filter name to
Redirector
. - Set the Executable to
<ISAPI_HOME>\ISAPI\isapi_redirect.dll
. - Click OK.
- In the left navigation, select Application Pools to display the available application pools.
- Select DefaultAppPool.
- In the Actions list, under Edit Application Pool, select Advanced Settings.
- The Advanced Settings dialog is displayed.
- In the General group, select Enable 32-Bit Applications.
- Select TRUE, then OK.
- In the left navigation, expand Sites and select Default Web Site.
- If you've already created an application for use with Appian, select that website.
- With the Default Web Site selected, open the ISAPI Filters feature.
- Verify that the Redirector filter appears. If not, add it to the web site by completing the following:
- Click Add to create a new ISAPI filter.
- Set the filter name to
Redirector
. - Set Executable to
<ISAPI_HOME>\ISAPI\isapi_redirect.dll
and click OK.
- Create a virtual directory for the redirector.
- Select the Default Web Site node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
Redirector
for the Alias. - Type
<ISAPI_HOME>\ISAPI
for the Physical Path. - Click Test Settings to verify that the necessary permissions are in place for the
Redirector
folder.
- Create a virtual directory for static content if not located in
<IIS_DOCUMENT_ROOT>
(omit these steps if appian static content is located in<IIS_DOCUMENT_ROOT>
).- Select the Default Web Site node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
suite
in the Alias field. - Type the directory where the static content is located (up to and including 'suite') for the Physical Path.
- Click OK.
- Turn off access to the Appian WEB-INF directory from the web server.
- In the Features view, select the Request Filtering feature.
- Under the URL tab, select Deny Sequence….
- Enter
WEB-INF
in the Deny Sequence textbox. - Click OK.
- Restart IIS by running the command prompt as an Administrator and entering
iisreset
. - Test the filtering by attempting to navigate a browser to:
http://<SERVER_NAME>/suite/WEB-INF/web.xml
. Access should be denied.
- Ensure that static content compression is turned on to improve performance.
- In the Features view, select the Compression feature.
- Make sure the Enable static content compression checkbox is checked.
- Hit "Apply" under the Actions if the checkbox had to be selected.
- (Optional) Redirect
http://<SERVER_NAME>
to the Appian login page by completing the following:- Create a text file named
index.htm
in the<IIS_DOCUMENT_ROOT>
directory. -
Paste the following HTML into your
index.htm
file.1 2 3 4 5 6
<html> <head> <title>Appian</title> <META HTTP-EQUIV="Refresh" CONTENT="0; URL=/suite"> </head> </html>
Copy - When the redirect is in place, requests sent to
http://<SERVER_NAME>
are redirected to the Appian start page.
- Create a text file named
Set up static content siteCopy link to clipboard
This site is used to serve the static content domain. The Host name in the bindings must be <WEB_SERVER_STATIC_HOST>
. This name should agree with the Host name part of the value you configure for conf.suite.STATIC_SERVER_AND_PORT in custom.properties.
- In the left navigation, right-click on Sites and select "Add Web Site…".
- Set the Site name to
AppianStatic
. - Set the Application pool to
DefaultAppPool
. - Set Physical path to
<IIS_DOCUMENT_ROOT>
.- If another directory is chosen, then a virtual directory mapping will need to be created in step 5.
- In the Binding section, set the Host name field to
<WEB_SERVER_STATIC_HOST>
. Also select an SSL certificate that matches<WEB_SERVER_STATIC_HOST>
. - Click OK.
- Set the Site name to
- With the AppianStatic Site selected, open the ISAPI Filters feature.
- Verify that the Redirector filter appears. If not, add it to the web site by completing the following:
- Click Add to create a new ISAPI filter.
- Set the filter name to
Redirector
. - Set Executable to
<ISAPI_HOME>\ISAPI\isapi_redirect.dll
and click OK.
- Create a virtual directory for the redirector.
- Select the AppianStatic node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
Redirector
for the Alias. - Type
<ISAPI_HOME>\ISAPI
for the Physical Path. - Click Test Settings to verify that the necessary permissions are in place for the
Redirector
folder.
- Create a virtual directory for the
suite
path if the AppianStatic Site's physical path is different than<IIS_DOCUMENT_ROOT>
(omit these steps if the site's physical path is<IIS_DOCUMENT_ROOT>
).- Select the AppianStatic node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
suite
in the Alias field. - Type the directory where the static content is located (up to and including 'suite') for the Physical Path.
- Click OK.
Set up dynamic content siteCopy link to clipboard
This site is used to serve the dynamic content domain. The Host name in the bindings must be <WEB_SERVER_DYNAMIC_HOST>
. This name should agree with the Host name part of the value you configure for conf.suite.DYNAMIC_SERVER_AND_PORT in custom.properties.
- In the left navigation, right-click on Sites and select "Add Web Site…"
- Set the Site name to
AppianDynamic
. - Set the Application pool to
DefaultAppPool
. - Set Physical path to
<IIS_DOCUMENT_ROOT>
.- If another directory is chosen, then a virtual directory mapping will need to be created in step 5.
- In the Binding section, set the Host name field to
<WEB_SERVER_DYNAMIC_HOST>
. Also select an SSL certificate that matches<WEB_SERVER_DYNAMIC_HOST>
. - Click OK.
- Set the Site name to
- With the AppianDynamic Site selected, open the ISAPI Filters feature.
- Verify that the Redirector filter appears. If not, add it to the web site by completing the following:
- Click Add to create a new ISAPI filter.
- Set the filter name to
Redirector
. - Set Executable to
<ISAPI_HOME>\ISAPI\isapi_redirect.dll
and click OK.
- Create a virtual directory for the redirector.
- Select the AppianDynamic node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
Redirector
for the Alias. - Type
<ISAPI_HOME>\ISAPI
for the Physical Path. - Click Test Settings to verify that the necessary permissions are in place for the
Redirector
folder.
- Create a virtual directory for the
suite
path if the AppianDynamic Site's physical path is different than<IIS_DOCUMENT_ROOT>
(omit these steps if the site's physical path is<IIS_DOCUMENT_ROOT>
).- Select the AppianDynamic node in the left navigation.
- On the Actions list, select View Virtual Directories.
- On the Actions list, click Add Virtual Directory.
- Type
suite
in the Alias field. - Type the directory where the static content is located (up to and including 'suite') for the Physical Path.
- Click OK.