Installing and Configuring Citrix StoreFront 1.2

installing_and_configuring_citrix_storefront_banner

The Citrix Webinterface server is end of life and will be replaced by the Citrix StoreFront server. Citrix StoreFront is more dynamic then the Citrix Webinterface server. One of the great new features is that administrators and users now control which applications are shown by default and in which order.

This guide describes the step-by-step installation of the Citrix StoreFront server including a multiple server group deployment, the SQL database configuration, IIS settings for HTTP redirection, the step-by-step installation and configuration of the Citrix HTML5 HDX Engine and some Citrix XenApp application publishing features/tips.

Preparations

Citrix StoreFront needs some preparations, first of all it is recommended to disable NetBIOS over TCP/IP. If you have problems joining the second server to the StoreFront server group, NetBIOS over TCP/IP is probably still enabled.

installing_and_configuring_citrix_storefront_prep_01

Prerequisites

Citrix StoreFront has the following prerequisites. You don’t have to install this prerequisites by yourself. If one of the following prerequisites is not already installed on the server, the Citrix StoreFront installer will install it automatically for you.

Windows Server 2008 R2 Features:

–        .NET Framework 3.5.1 Features > .NET Framework 3.5.1
–        Remote Server Administration Tools > Role Administration Tools > Web Server (IIS) Tools

Windows Server 2008 R2 Roles:

–        Web Server (IIS)

  • Common HTTP Features > Static Content
  • Common HTTP Features > Default Document
  • Common HTTP Features > HTTP Errors
  • Common HTTP Features > HTTP Redirection
  • Application Development > ASP.NET
  • Application Development > .NET Extensibility
  • Application Development > ISAPI Extensions
  • Health and Diagnostics > HTTP Logging
  • Security > Windows Authentication
  • Security > Request Filtering
  • Management Tools > IIS 6 Management Compatibility > IIS 6 Metabase Compatibility
  • Management Tools > IIS 6 Management Compatibility > IIS 6 WMI Compatibility
  • Management Tools > IIS 6 Management Compatibility > IIS 6 Scripting Tools

Citrix StoreFront database setup

The database setup for the Citrix StoreFront is not straightforward. You have to create 4 scripts and run these scripts as queries in the SQL Server Management Studio. Also the database server(s) must be a member of the domain and the SQL Server Browser Windows service must be started.

The database setup scripts have the following purposes;

–        Script 1 – Creating the StoreFront database
–        Script 2 – Creating the database tables
–        Script 3 – Creating database login
–        Script 4 – Grant permissions on the database for the group

Before running these scripts you have to create an Active Directory global group and make all the Citrix StoreFront servers member of that group. NOTE: The Citrix eDocs guide tells you to create a Local security group on the SQL server and make all Citrix StoreFront servers member of that group. But this is not going to work if you using SQL Mirroring!

These are the scripts that needs to be run as query in the SQL Server Management Studio. Replace the text in red with the appropriate values for your deployment.

In my case the following values are used:

Database name: Citrix-StoreFront
Domain: Hobo
Global group: RES-CitrixStoreFrontServers

The scripts are available for download here.

Script 1 (Creating the StoreFront database):

USE [master]

CREATE DATABASE [Citrix-StoreFront] ON  PRIMARY
( NAME = N’MyApps’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\Citrix-StoreFront.mdf‘ , SIZE = 10240KB ,
MAXSIZE = UNLIMITED, FILEGROWTH = 10% )
LOG ON
( NAME = N’MyApps_log’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\Citrix-StoreFront.ldf‘ , SIZE = 10240KB ,
MAXSIZE = 2048GB , FILEGROWTH = 10% )
COLLATE latin1_general_CI_AS_KS

IF (1 = FULLTEXTSERVICEPROPERTY(‘IsFullTextInstalled’))
begin
EXEC [Citrix-StoreFront].[dbo].[sp_fulltext_database] @action = ‘enable’
end

ALTER DATABASE [Citrix-StoreFront] SET ANSI_NULL_DEFAULT OFF
ALTER DATABASE [Citrix-StoreFront] SET ANSI_NULLS OFF
ALTER DATABASE [Citrix-StoreFront] SET ANSI_PADDING OFF
ALTER DATABASE [Citrix-StoreFront] SET ANSI_WARNINGS OFF
ALTER DATABASE [Citrix-StoreFront] SET ARITHABORT OFF
ALTER DATABASE [Citrix-StoreFront] SET AUTO_CLOSE OFF
ALTER DATABASE [Citrix-StoreFront] SET AUTO_CREATE_STATISTICS ON
ALTER DATABASE [Citrix-StoreFront] SET AUTO_SHRINK OFF
ALTER DATABASE [Citrix-StoreFront] SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE [Citrix-StoreFront] SET CURSOR_CLOSE_ON_COMMIT OFF
ALTER DATABASE [Citrix-StoreFront] SET CURSOR_DEFAULT  GLOBAL
ALTER DATABASE [Citrix-StoreFront] SET CONCAT_NULL_YIELDS_NULL OFF
ALTER DATABASE [Citrix-StoreFront] SET NUMERIC_ROUNDABORT OFF
ALTER DATABASE [Citrix-StoreFront] SET QUOTED_IDENTIFIER OFF
ALTER DATABASE [Citrix-StoreFront] SET RECURSIVE_TRIGGERS OFF
ALTER DATABASE [Citrix-StoreFront] SET DISABLE_BROKER
ALTER DATABASE [Citrix-StoreFront] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
ALTER DATABASE [Citrix-StoreFront] SET DATE_CORRELATION_OPTIMIZATION OFF
ALTER DATABASE [Citrix-StoreFront] SET TRUSTWORTHY OFF
ALTER DATABASE [Citrix-StoreFront] SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE [Citrix-StoreFront] SET PARAMETERIZATION SIMPLE
ALTER DATABASE [Citrix-StoreFront] SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE [Citrix-StoreFront] SET HONOR_BROKER_PRIORITY OFF
ALTER DATABASE [Citrix-StoreFront] SET READ_WRITE
ALTER DATABASE [Citrix-StoreFront] SET RECOVERY FULL
ALTER DATABASE [Citrix-StoreFront] SET MULTI_USER
ALTER DATABASE [Citrix-StoreFront] SET PAGE_VERIFY NONE
ALTER DATABASE [Citrix-StoreFront] SET DB_CHAINING OFF

Script 2 (Creating the database tables):

USE [Citrix-StoreFront]

/****** Object:  Table [dbo].[User]  ******/
SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ONCREATE TABLE [dbo].[User](
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [nvarchar](100) COLLATE latin1_general_CS_AS_KS NOT NULL,
CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF)
ON [PRIMARY]
) ON [PRIMARY]

CREATE UNIQUE NONCLUSTERED INDEX [username_idx] ON [dbo].[User]
(
[username] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF)
ON [PRIMARY]

/****** Object:  Table [dbo].[Subscription]  ******/
SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE TABLE [dbo].[Subscription](
[id] [int] IDENTITY(1,1) NOT NULL,
[subscription_ref] [varchar](32) COLLATE latin1_general_CS_AS_KS NOT NULL,
[resource_id] [nvarchar](400) COLLATE latin1_general_CS_AS_KS NOT NULL,
[user_id] [int] NOT NULL,
[status] [int] NOT NULL,
[metadata] [nvarchar](max) NULL,
[secure_metadata] [nvarchar](max) NULL,
CONSTRAINT [PK_subscriptions] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF)
ON [PRIMARY]
) ON [PRIMARY]

CREATE UNIQUE NONCLUSTERED INDEX [subscription_ref_idx] ON
[dbo].[Subscription]
(
[subscription_ref] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF)
ON [PRIMARY]

CREATE NONCLUSTERED INDEX [user_resource_idx] ON [dbo].[Subscription]
(
[user_id] ASC,
[resource_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF)
ON [PRIMARY]

/****** Object:  Default [DF_subscriptions_status] ******/
ALTER TABLE [dbo].[Subscription]
ADD  CONSTRAINT [DF_subscriptions_status]
DEFAULT ((0)) FOR [status]

/****** Object:  ForeignKey [FK_subscriptions_user_id] ******/
ALTER TABLE [dbo].[Subscription]
WITH CHECK ADD  CONSTRAINT [FK_subscriptions_user_id]
FOREIGN KEY([user_id])
REFERENCES [dbo].[User] ([id])

ALTER TABLE [dbo].[Subscription]
CHECK CONSTRAINT [FK_subscriptions_user_id]

CREATE TABLE [dbo].[SchemaDetails](
[major_version] [int] NOT NULL,
[minor_version] [int] NOT NULL,
[details] [nvarchar](max) NULL
) ON [PRIMARY]

INSERT INTO [dbo].[SchemaDetails] ([major_version], [minor_version])
VALUES (1, 0)

Script 3 (Creating database login):

USE [master]
CREATE LOGIN [hobo\RES-CitrixStoreFrontServers] FROM WINDOWS;
ALTER LOGIN [hobo\RES-CitrixStoreFrontServers]
WITH DEFAULT_DATABASE = [Citrix-StoreFront];

Script 4 ( Grant permissions on the database for the group):

USE [Citrix-StoreFront]
CREATE USER [CitrixSubscriptionDBUsers] FOR LOGIN [hobo\RES-CitrixStoreFrontServers];EXEC sp_addrolemember N’db_datawriter’, N’CitrixSubscriptionDBUsers';
EXEC sp_addrolemember N’db_datareader’, N’CitrixSubscriptionDBUsers';

Step-by-step installation and configuring Citrix StoreFront 1.2

After creating and configuring the SQL database you can install the Citrix StoreFront server. Start the StoreFront installer.

installing_and_configuring_citrix_storefront_001

Click on Next

installing_and_configuring_citrix_storefront_002

Click on Next

installing_and_configuring_citrix_storefront_003

Click on Install

installing_and_configuring_citrix_storefront_004

Click on Finish

installing_and_configuring_citrix_storefront_005

Click on Deploy a multiple server group

installing_and_configuring_citrix_storefront_006

Fill in the requested information;
Hostname: “alias name of the StoreFront Load Balancer adres”
Database server: “alias name of the SQL cluster, otherwise name your SQL server”
Database name: “the StoreFront database name”

Click on Test Connection

installing_and_configuring_citrix_storefront_007

Click on OK

installing_and_configuring_citrix_storefront_006

Click on Create

 installing_and_configuring_citrix_storefront_008

Fill in the requested information, click on Next

installing_and_configuring_citrix_storefront_009

Click on Add

installing_and_configuring_citrix_storefront_010

Here can you add your XenApp Datacollectors and/or XenDesktop controllers, fill in the requested information and click OK

installing_and_configuring_citrix_storefront_011

Click on Next

installing_and_configuring_citrix_storefront_012

Here you have the option the configure the Remote Access, fill in the requested information and click on Create

installing_and_configuring_citrix_storefront_013

Click on Finish

Installing and Configuring Citrix HTML5 HDX Engine

installing_HTML5_HDX_Engine_001

Start the installer and click Install

installing_HTML5_HDX_Engine_002

Click Finish

installing_HTML5_HDX_Engine_003

Open the Citrix HTML5 HDX Engine Configuration and click Add

installing_HTML5_HDX_Engine_004

Enter the Receiver for Web Site URL and click OK

installing_HTML5_HDX_Engine_005

Close this window

Joining second server

In the following steps I will add server “SRV007” to the Citrix StoreFront server group.

joining_server_citrix_storefront_001

On server “SRV007” after the Citrix StoreFront installation click on Join existing server group

joining_server_citrix_storefront_002

At the same time on the first server (SRV003) go to Server Group and click on Add Server

joining_server_citrix_storefront_003

Fill in the information from “SRV003” to the dialog on “SRV007” and click Join

joining_server_citrix_storefront_004

Click OK on both servers

joining_server_citrix_storefront_005

The second server is now added to the StoreFront Server Group. As shown in the Server Details this server is not up-to-date. Every time a server is added to the Server Group, the Server Group settings needs to be push to the new server. To do this, go to the Server Group tab on the first server and click Propagate Changes

joining_server_citrix_storefront_006

Click OK

joining_server_citrix_storefront_007

Click OK

joining_server_citrix_storefront_008

Now all the servers in the StoreFront Server Group are up-to-date with the same settings.

Configure Legacy Support (PNAgent Services Site)

Citrix_StoreFront_Enable_Legacy_Support_001

To enable the Citrix Receiver to connect to a PNAgent site you have to enable Legacy Support. To do so, go to the Stores tab and click on Configure Legacy Support

Citrix_StoreFront_Enable_Legacy_Support_002

Select Enable legacy support and click OK (configure the Citrix Receivers with the Server URL as shown in the dialog)

IIS HTTP Redirection

In the Citrix StoreFront there is no option to set the Receiver URL to the server default website. The best way to configure this is via the Internet Information Services (IIS) Manager.

installing_and_configuring_citrix_storefront_Webforward-001

In my test environment the current Receiver URL is http://srv003/Citrix/HoboWeb. At this point I must enter the entire URL in a browser to access the StoreFront website. To configure the HTTP Redirection so that entering the URL http://srv003 will open the StoreFront website, go through the following steps;

installing_and_configuring_citrix_storefront_Webforward-002

Open the Internet Information Services (IIS) Manager and on the left side browse to Default Web Site. On the right site open HTTP Redirect

installing_and_configuring_citrix_storefront_Webforward-003

Select Redirect requests to this destination and add your StoreFront Receiver for Web Site URL. Select Redirect all request to exact destination and Only redirect requests to content in this directory. Click Apply on the button in the top right corner.

Citrix XenApp Publishing Applications Features/Tips

With Citrix StoreFront the Citrix XenApp administrators can control which published applications are shown by default. To do so add to following string to the description of the published application; KEYWORDS:Auto

To add a published application to the Featured list in the Citrix Receiver, add to following string to the description of the published application; KEYWORDS:Featured

To display a Citrix XenApp published Desktop in the application view instead of the desktop view, add to following string to the description of the published desktop; KEYWORDS:TreatAsApp

If you want to apply multiple keywords, separate them with spaces.

Robin Hobo works as a Technical Consultant with main focus on Mobility and Application & Desktop delivery. He is specializes in Citrix, Microsoft and AppSense products.