How to Configure a Web Ad Manager Server

From Dot2DotCommunications
Revision as of 12:02, 10 February 2016 by John.devonshire (Talk | contribs)

Jump to: navigation, search

Web Ad Manager consists of the following parts:

  • the Ad Manager desktop application components: these include the ActiveX components which expose the Ad Manager data and business logic to the web application;
  • the Ad Manager Web Host service: it provides the context in which the web application loads the Ad Manager ActiveX components;
  • the Apache HTTP Server with a PHP preprocessor: it makes the web application accessible on the Internet;
  • the web application files: the HTML, CSS, Javascript, PHP and other files which make up the web application.

Please note that the Web Ad Manager Server components cannot be installed on a machine that has IIS currently installed on it, as this is incompatible with the server components used.

To configure a Web Ad Manager server we need to make sure all of these elements are installed and configured.

Contents

Install Ad Manager

  • Install Ad Manager (including any add-ins) as if you're setting up another client workstation.

Install and configure the Ad Manager Web Host service

The Ad Manager Web Host service provides a process context in which the web application will load Ad Manager's business logic ActiveX components.

Set up a user account for the Web Host service

The Web Host service needs to run as a user who:

  • can run Ad Manager if logged on interactively;
  • belongs to the local machine's Administrators group.

Ideally, you'll designate a user account specifically for the Web Host service. It can be a local machine or a domain account.

Steps

  • Pick or create a user account.
  • Make sure the account belongs to the local Administrators group.
  • Log on as the user, run Ad Manager and import the Ad Manager serial number and license into the user profile.
  • If you're using Windows authentication to access the Ad Manager databases in SQL Server, grant the user account access to all database that will be exposed through the web application.

Install and register the Web Host service

The Web Host is an out-of-process ActiveX server packaged as a Windows service.

Its installer will place the executable on the drive but it will not register it as a service; you'll need to do that manually.

When the service is registered, it will be configured to run as the Local System account; you'll need to change that manually.

There's no need to change the service startup type from Manual to Automatic - the service will be started when needed.

Steps to Install

  • Run the Ad Manager Web Host installer (Amwh.msi).
  • Install the program for Everyone, not Just me.
  • Register the service: select the Register Service shortcut in Start -> All Programs -> Dot2Dot Ad Manager Web Host.
  • Configure the Ad Manager Web Host service to run as the designated user:
    • Open the Services management console;
    • Right-click on the "Dot2Dot Ad Manager Web Host Service" and select Properties;
    • Go to the Log On tab;
    • Select This account in the Log on as options;
    • Enter the account name in the form domain\user if it's a domain account or .\user if it's a local machine account;
    • Enter and confirm the password;
    • Click OK.

Steps to Remove an Older Version

  • Stop the Apache web service.
  • Unregister the Web Host service: select the Unregister Service shortcut in Start -> All Programs -> Dot2Dot Ad Manager Web Host.
  • Uninstall Dot2Dot Ad Manager Web Host from the Programs control panel.

Configure the database connections for the Web Host service

The web application can expose the data in one or more Ad Manager databases. The Web Host service needs to know how to connect to those databases.

Each database connection is identified by a unique name. When sharing Ad Manager items online, the connection name will be part of the generated URL. If there's only one Ad Manager database you can leave the connection name blank.

Steps

  • Run the Ad Manager Web Host configuration utility: select the Configure shortcut in Start -> All Programs -> Dot2Dot Ad Manager Web Host.
  • Go to the Ad Manager Connections tab.
  • Add an entry for each Ad Manager database that will be accessible through the web application:
    • click the New button;
    • enter a unique name for the connection;
    • enter the SQL Server name or IP address;
    • enter the SQL Server database name;
    • enter the SQL Server user id and password; if those are left blank, the Web Host service will use Windows authentication to connect to SQL Server;
    • click Test... to verify the connection;
    • click OK to save the connection.
  • Click Apply to save the changes or OK to save the changes and close the configuration utility.

Set up Web Users

Access to the web application is controlled through the Ad Manager Web Users and Roles. The Web User defines the login credentials. The Web Role specifies the level of access users belonging to that role will have.

Web Roles are application specific. You don't need to set up Web Users and Roles to use the Share Online... features of Ad Manager.

Steps

Follow the instructions to create web roles based on your version of Ad Manager. In each Ad Manager database that will be accessible through the web application:

  • Run Ad Manager and log into that database;
  • Create a Web User for each user that needs access to this database;
  • Add the Web Users to the appropriate Web Role.

Install and configure the Apache HTTP Server and the PHP preprocessor

The web application requires an Apache HTTP Server (2.4.x or later) with a PHP preprocessor (5.4.x or later).

Although it's possible to download and install Apache and PHP individually, we use a distribution called WampServer which bundles Apache and PHP (plus MySQL, which is not required by Ad Manager) along with some convenient configuration and administration tools.

Install WampServer

Steps

  • Locate the following download: WAMPSERVER (32 BITS & PHP 5.4) 2.4. Note: the 64-bit version doesn't seem to include the COM/.NET extension for PHP.
  • Click the download button; you'll get a message which contains the following:
    • a link to the WampServer download;
    • a warning that WampServer requires the Microsoft Visual C++ 2010 SP1 Redistributable Package;
    • links to the 32-bit and the 64-bit installers of that package.
  • Open the WampServer download link in a new tab and let the browser download the WampServer installer. (Warning: it's a SourceForge download - tread carefully).
  • Run the Microsoft Visual C++ 2010 SP1 Redistributable Package installer.
  • Run the WampServer installer. The default installation folder is C:\wamp; you can change that, but don't bury it too deep so the web application file paths don't get too long.
  • Run WampServer. A green W icon should appear in the taskbar notification area ("tray").

Configure Apache

Steps

  • Verify that port 80 is not used by another service:
  • Click the WampServer tray icon and select Apache -> Service -> Test Port 80;
  • You should see the following message (in a command prompt window):
Your port 80 is actually used by :
Server: Apache/2.4.4 (Win32) PHP/5.4.16
Press Enter to exit...
  • If port 80 is used by another service you'll have to resolve the conflict.
  • Edit the Apache configuration file (httpd.conf)
  • Open the file: click the WampServer tray icon and select Apache -> httpd.conf;
  • Enable the Apache "rewrite" module:
  • Locate and uncomment (remove the # symbol in front of it) the following line:
LoadModule rewrite_module modules/mod_rewrite.so
  • Prevent the access to the server's file system:
  • Locate the <Directory /> block.
  • Edit it so that it contains the following directives:
<Directory />
    AllowOverride None
    Require all denied
</Directory>
  • Limit the access to the Apache document root directory:
  • Locate the <Directory> block for the document root directory (e.g. <Directory "C:/wamp/www">).
  • Edit it so that it contains the following directives:
<Directory "C:/wamp/www">
    Options FollowSymLinks
    AllowOverride None
    Require all denied
    Require ip 127.0.0.1

#    onlineoffline tag - don't remove
</Directory>
  • Allow access to the Ad Manager web application directory:
  • Decide on the name of the directory; it will be a sub-directory of the Apache document root directory (www); its name becomes part of the URL of the web application; for instance, if you name it ad-manager, then the application URL will be http://host/ad-manager/ (where host is the web server's DNS name or IP address).
  • Add the following <Directory> block (where C:/wamp/www/ad-manager is the absolute path to the Ad Manager web application directory):
<Directory "C:/wamp/www/ad-manager">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
  • Configure the access log format to include the time it took to process a request.
  • Find each line that looks like this:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
  • Append the %T format directive to it:
LogFormat "%h %l %u %t \"%r\" %>s %b %T" common
  • Save the file
  • Restart the Apache service: click the WampServer tray icon and select Apache -> Service -> Restart Service;
  • Configure the Apache service to start automatically:
  • Open the Services management console;
  • Right-click on the "wampapache" service and select Properties;
  • In the General tab set the Startup type to Automatic;
  • Click OK.

Configure PHP

Steps

  • Open the php.ini file: click the WampServer tray icon and select PHP -> php.ini
  • Enable the COM/.NET extension
  • Search the file for the following section and if you don't find it, add it to the bottom of the file:
[COM_DOT_NET] 
extension=php_com_dotnet.dll 
  • Disable the PHP script execution timeout
  • Search the file for the following section:
max_execution_time =
  • change it to:
max_execution_time = 0
  • Increase the amount of memory a script may consume
  • search the file for the following section:
memory_limit =
  • increase the limit:
memory_limit = 256M
  • If you made changes, save them and restart the Apache service.

Configure Windows Firewall

Enable inbound connections to TCP port 80.

Configure HTTPS

To prevent eavesdropping attacks, we recommend that you configure the Apache web server for HTTPS. See How to Configure Apache for HTTPS.

Install and configure the Ad Manager web application

Copy the web application into the Apache root directory

The Ad Manager web application consists of a set of HTML, PHP, Javascript and other files. Deploying it is as simple as placing those files in a sub-directory of the Apache root directory ("www"). The name of that directory becomes part of the URL of the web application. For instance, if you name the directory ad-manager, then the application URL will be http://host/ad-manager/ (where host is the web server's DNS name or IP address).

Steps

  • Open the Apache document root directory: click the WampServer tray icon and select www directory.
  • Create a sub-directory of the Apache document root directory with the name you selected earlier.
  • Extract the contents of the ad-manager.zip file into the newly created directory. Your directory structure should look like this:
- www
  - ad-manager
    + api
    + fonts
    + img
    + js
      ...
      index.html

Troubleshooting

Apache "Asynchronous AcceptEx failed" error

Symptoms

The Apache error log file contains large numbers of error messages like this one:

[Thu Jan 28 10:06:35.918123 2016] [mpm_winnt:warn] [pid 3808:tid 2060] (OS 64)The specified network name is no longer available.  : AH00341: winnt_accept: Asynchronous AcceptEx failed.

Cause

Certain OS specific optimizations for a listening socket by protocol type are enabled by default in the Windows build of Apache. Those optimizations are controlled by the AcceptFilter directive. In certain server configurations (network driver versions, virtual networking, antivirus software) those optimizations need to be disabled.

Solution

Edit the Apache configuration file (httpd.conf) and make sure that it contains, somewhere above the # Supplemental configuration line, the following directive:

AcceptFilter http none