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
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>!@#\\$%*()_+^&}{:;?.</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\
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
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