Installing ProteanCMS - Eonic/ProteanCMS GitHub Wiki

Standalone or Machine Level Installation ?

ProteanCMS is pretty unique in that it is designed to be installed at a machine level so multiple websites can run on the same base source-code.

This has many advantages for web developers working on multiple sites.

However if you want to run ProteanCMS as an isolated standalone web application that is also possible. This method is good for evaluating the platform and running in application containers on cloud environments like Microsoft Azure.

Standalone Installation

To Run ProteanCMS locally for development purposes, so you can run the website on your machine to make changes independently of the live hosted website follow these instructions.

From here you will need to install the following...

IIS Recommended Configuration

image.png

URL Rewrite 2.0 https://www.iis.net/downloads/microsoft/url-rewrite

Microsoft SQL Express LocalDB Edition or have an accessible SQL Server 2016 or later on your local network.

Machine Level Installation

Step 1. Install the Pre-requisites

Microsoft provide a very handy tool for installing everything you might need to run and develop web applications locally on your machine it is called Microsoft Web Platform Installer and you can download it here.

Run the downloaded file to set up the Web Platform Installer.

The following packages are a minimum requirement to run ProteanCMS:

  • Products / Server - IIS 8 Recommended Configuration
  • Products / Server - URL Rewrite 2.0
  • Products / Database - SQL Server 2018
  • Our preference is build sites using Visual Studio 2022
  • Products / Database - SQL Server Management Studio Latest

When installation completes you will be ready to begin configuring ProteanCMS.

Step 2. Installing ProteanCMS Core Files

We recommend creating websites in the following directory Structure

driveletter:\HostingSpaces\ClientSites\ClientSiteURL\wwwroot

Clone ProteanCMS from GitHub to....

driveletter:\HostingSpaces\ProteanCMS

Download the ProteanCMS installer from the Git Project and run the installation here.

driveletter:\HostingSpaces\ProteanCMS\GACInstaller\bin\Release

Step 3. Machine Level Web.Config settings

Now if you intend to be developing multiple sites we recommend some config settings being managed at a machine level.

Edit the machine level Web.Config at

For 64 bit machines-

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\CONFIG\web.config

For 32 bit machines-

C:\Windows\Microsoft.NET\Framework\v4.0.30319\CONFIG\web.config

See the following block of code added by the installer.

  <configSections>
    <sectionGroup name="protean">
      <section name="web" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="cart" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="quote" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="mailinglist" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="scheduler" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="subscriptions" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="custom" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="synchronisation" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="alerts" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="versioncontrol" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="theme" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="lms" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="streaming" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="accounting" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" restartOnExternalChanges="false"/>
      <section name="messagingProviders" type="Protean.ProviderSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="paymentProviders" type="Protean.ProviderSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="membershipProviders" type="Protean.ProviderSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="streamingProviders" type="Protean.ProviderSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="languages" type="Protean.XmlSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="payment" type="Protean.XmlSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="PasswordPolicy" type="Protean.XmlSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
      <section name="subscriptionReminders" type="Protean.XmlSectionHandler, ProteanCMS" restartOnExternalChanges="false"/>
    </sectionGroup>
    <sectionGroup name="bundleTransformer">
      <section name="core" type="BundleTransformer.Core.Configuration.CoreSettings, BundleTransformer.Core, Version=1.10.0.0, Culture=neutral, PublicKeyToken=973C344C93AAC60D" restartOnExternalChanges="false"/>
      <section name="less" type="BundleTransformer.Less.Configuration.LessSettings, BundleTransformer.Less, Version=1.10.4.0, Culture=neutral, PublicKeyToken=973C344C93AAC60D" restartOnExternalChanges="false"/>
      <section name="microsoftAjax" type="BundleTransformer.MicrosoftAjax.Configuration.MicrosoftAjaxSettings, BundleTransformer.MicrosoftAjax, Version=1.10.0.0, Culture=neutral, PublicKeyToken=973C344C93AAC60D" restartOnExternalChanges="false"/>
    </sectionGroup>
  </configSections>
<protean>
    <web>
      <add key="AdminAcct" value=""/>
      <add key="AdminDomain" value=""/>
      <add key="AdminPassword" value=""/>
      <add key="AdminGroup" value=""/>
      <add key="MailServer" value=""/>
      <add key="SoapIPs" value=""/>
      <add key="DatabaseType" value="SQL"/>
      <add key="DatabaseServer" value=""/>
      <add key="DatabaseAuth" value="user id=xxxx; password=xxx"/>
      <add key="ServerName" value="localhost"/>
      <add key="CommonDirectoryPath" value="d:\web\ewcommon_v5-1"/>
      <add key="JSEngine" value="MsieJsEngine"/>
    </web>
    <scheduler>
      <add key="DatabaseServer" value=""/>
      <add key="DatabaseName" value=""/>
      <add key="DatabaseAuth" value="user id=xxx; password=xxx"/>
      <add key="SchedulerMonitorXsl" value="/ewcommon/xsl/Tools/schedulermonitor.xsl"/>
      <add key="SchedulerMonitorEmail" value=""/>
    </scheduler>
    <PasswordPolicy>
      <Password>
        <retrys>0</retrys>
        <minLength>6</minLength>
        <maxLength>25</maxLength>
        <numsLength>1</numsLength>
        <upperLength>1</upperLength>
        <specialLength>0</specialLength>
        <barWidth>200</barWidth>
        <barColor>Green</barColor>
        <specialChars>!@#\\$%*()_+^&amp;}{:;?.</specialChars>
        <!-- 1=Yes, 0=No-->
        <useMultipleColors>1</useMultipleColors>
        <blockHistoricPassword>0</blockHistoricPassword>
      </Password>
    </PasswordPolicy>
    <messagingProviders>
      <providers>
        <add name="CampaignMonitor" type="Protean.Providers.Messaging.CampaignMonitor, Version=6.0.49.0, Culture=neutral, PublicKeyToken=0e5e11efc3341916"/>
      </providers>
    </messagingProviders>
  </protean>

Change the following keys to the correct values for your system: AdminAcct, AdminDomain, AdminPassword, AdminGroup, MailServer, DatabaseServer (HOSTNAME\SQLEXPRESS), DatabaseAuth (user id=user; password=password). The admin account specified must have administrative priveleges on the SQL server or database creation will fail.

Step 4. Allow double escaping in IIS 8 Go to windows/System32/inetsrv/config/applicationhost.config

You might need to open it using Notepad "Run as Administrator"

And change

<requestFiltering>

To

<requestFiltering allowDoubleEscaping="True">

Step 6. SQL Server Configuration for Backup

In order for the built in Database backup functionality to work the following is required.

On the master database run the following scripts

EXEC sp_configure 'show advanced options', 1
GO

EXEC sp_configure 'xp_cmdshell', 1
GO

RECONFIGURE
GO

Also you must enable Filestream options using the SQL Server Configuration Manager

Step 7 - Additional DLLs

Install Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package from here.

https://www.microsoft.com/en-gb/download/details.aspx?id=26999

You then need to manually copy some dlls

from ProteanCMS\Assemblies\Copy To System32

into C:\Windows\System32.

and from ProteanCMS\Assemblies\Copy To Clearscript in GAC

into C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Clearscript.V8\v4.xxxxetc\

To enable .Less

Add the following handler mapping for *.less

BundleTransformer.Less.HttpHandlers.LessAssetHandler, BundleTransformer.Less, Version=1.9.215.0, Culture=neutral, PublicKeyToken=973c344c93aac60d

and the same for sass Add the following handler mapping for *.scss and *.sass

BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss, Version=1.12.36.0, Culture=neutral, PublicKeyToken=973C344C93AAC60D

lessetup.png

mklink /d D:\HostingSpaces\ewcommon_v5-1 D:\HostingSpaces\ProteanCMS\wwwroot\ewcommon

mklink /d C:\HostingSpaces\ewcommon_v5-1 C:\HostingSpaces\ProteanCMS\wwwroot\ewcommon

mklink /d D:\ewcommon_v5-1 D:\HostingSpaces\ProteanCMS\wwwroot\ewcommon

mklink /d C:\HostingSpaces\EonicClients\ewcommon_v5-1 C:\HostingSpaces\DevOpsGit\wwwroot\ewcommon

mklink /d C:\HostingSpaces\DevOpsGit C:\HostingSpaces\ProteanCMS

mklink /d F:\HostingSpaces\ptn F:\HostingSpaces_ProteanCMS\V6_wwwroot\ptn

mklink /d D:\HostingSpaces\ptn D:\HostingSpaces\ProteanCMS\V6_wwwroot\ptn

mklink /d C:\HostingSpaces\ptn C:\HostingSpaces\ProteanCMS\V6_wwwroot\ptn



⚠️ **GitHub.com Fallback** ⚠️