fuel9 / DisplayMonkey

Display Monkey digital signage solution
Other
128 stars 51 forks source link

Installation guide #104

Open Monkey777 opened 5 years ago

Monkey777 commented 5 years ago

Hi,

Anyone have a complete installation guide including the asp/sql part? I'm trying to install display monkey, but are a noob, so I get errors everytime I tries..

I have installed a Server 2012 R2 and SQL 2014 standard..

Kentonadmin commented 5 years ago

I'm in need of the exact same thing. I know the very basics of SQL, ASP.NET and IIS but I am really struggling to get my first Display Monkey database to run in a browser. A full installation guide would be really helpful. The installation guide on the Display Monkey website makes a lot of assumptions about the user/reader but doesn't list any prerequisite requirements, like: A working knowledge of SQL databases A working knowledge of the webserver IIS A working knowledge of Microsoft SQL Server Management Studio The knowledge to install and setup all of the above

You don't even realise you need any of the above until you get to each next step and then realise you have to go back a step and learn/familiarise your self with all of the above, one by one.

If anyone out there has, or would be willing to collate a full installation guide, I would be very grateful. I would be willing to help in any way I can, even if it's just collating someone else's knowledge into a manageable document/walk through. Monkey777, perhaps we could put our heads together and help solve eachother's problems? I would be happy to setup a screen sharing session with you if you think it will help?

michaelmalmgren commented 5 years ago

I can try to elaborate on the instruction found on displaymonkdy.org but it would be helpful to understand what step or steps you are struggling with.

Monkey777 commented 5 years ago

Hi Michael... That sounds great, i’m struggling with the asp/IIS and sql part...

Kentonadmin that sounds great, I deleted the server again, but would try to install a new one next week...

rhummel commented 5 years ago

As with the others, I'm new to IIS and setting up MS SQL. I can follow instructions. I am primarily interested in getting DM up for a demo. After that, I'll have time to dig into the details. Places where more detail in the setup guide would be helpful to someone new to this (like me) are:

  1. Guide calls for ASP.NET 4.5. Is this the same as .NET 4.5 or a different product? If different, it's not clear where to get it.
  2. Installing .NET 4.5 shows up as 4.7 during the install (as of today) but shows as 4.0 when creating a new application pool. I believe that 4.x installs over 4.0, but some clarification would be helpful.
  3. In step 1 "set appropriate folder permissions as needed" - what would those be? If installing a demo setup on a single host under an admin account, what permissions are required?
  4. In step 2, "NT AUTHORITY\Network Service" appears just as "Network Server." Should we assume that this is the same?
  5. In step 3, a note that SQL Management Studio is a separate download and install would have prevented a search for it. A note about opening the file and then "executing" it (SQL studio-speak) rather than running it to point us in the right direction.
  6. In step 4, the install guide says to create a db named "DisplayMonkey." But in the DisplayMonkey\web.config file, the connection string specifies "DisplayMonkeyDB." Should the data source be the server name, FQDN, or something like \server? The reference to the initial catalog looks like this on the site "DisplayMonkey" but looks like this in my config file Initial "Catalog="DisplayMonkey&quot" Why the difference and does it make a difference? When creating the SQL user, option settings? Uncheck enforce policies, user must change pw, etc?

What is the URL for the app? http:\localhost gives the II7 page. http:\localhost\displaymonkey gives "Object reference not set to an instance of an object."

[NullReferenceException: Object reference not set to an instance of an object.] DisplayMonkey.DataAccess.get_ConnectionString() +59 DisplayMonkey.DataAccess.ConnectionWrap(SqlCommand cmd, Action action) +53 DisplayMonkey.Display.get_AutoLoadMode() +253 DisplayMonkey._Default.Page_Load(Object sender, EventArgs e) +167 System.Web.UI.Control.LoadRecursive() +70 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3177

I'm more than willing to develop a guide for the initial install if I can get some help getting through it.

michaelmalmgren commented 5 years ago

Hi Rhummel,

1-2, ASP.NET and .NET are the same things. Display Monkey relies upon features introduced in version 4.5 but any subsequent version will work as well.

  1. Since Display Monkey Management application requires windows authentication to be enabled you may have to add read access to the users that are going to need access to DMM. For example, if your marketing department is going to manage content presented by DM you would have to add the group MYDOMAIN\Marketing_Department to folder C:\inetpub\wwwroot\DisplayMonkey_Managment

4 Yes

  1. This may vary depending on the version of SQL but from my experience, SQL Mgmt Studio is part of the installation of SQL server

  2. The name of database and database users can be whatever but the import thing is obviously to add the chosen database name when adjusting the web.config file.

if you used the default folder for IIS i.e. C:\inetpub\wwwroot\ the address from the local computer should be http:\localhost\displaymonkey and http://localhost/displaymonkey_managment. If accessing from any other computer on your network it would be http://myserverwhereDMisinstalled/displaymonkey

The error indicates that the connection string inside web.config isn't correct. Your Initial Catalog (i.e. DM database name) should look something like this: initial catalog=DisplayMonkey; so get rid of the leading and the two closing quotes (&quot" )

rhummel commented 5 years ago

Thank you for the reply, Michael. I'm going to add my notes here as I go to possibly help anyone else reading this. 1&2 - Downloading .NET 4.5 today gives you 4.7 but it still shows up as 4.0.x. Here's what I did to verify that a correct version is installed. cd \Windows\Microsoft.NET\Framework Look for a version 4.0.x. On my system it was 4.0.30319. cd 4.0.30319 .\msbuild.exe -version The current "real" version will display along with the "alias" version that will eventually show in IIS.

rhummel commented 5 years ago

5 - SQL Express is packaged in several versions. I needed to grab the version that had the tools (management studio) included as part of the original install. It can be added later, but this is smoother.

SQLEXPR_x64_ENU.exe - Only the SQL Express program SQLEXPRWT_x64_ENU.exe - SQL Express with tools (WT) (includes Mgmt Studio) SQLEXPRADV_x64_ENU.exe - SQL Express advanced, includes Mgmt Studio and advanced tools

rhummel commented 5 years ago

When installing IIS, what features should be enabled over and above the default? Here are the options I've chosen. Did I omit anything that's required? IIS options

michaelmalmgren commented 5 years ago

I believe that ASP.NET and Windows Authentications are the only ones needed to run DM. IIS Management Console is also needed in order to follow the installation instruction on creating applications in IIS.

rhummel commented 5 years ago

Thank you, Michael.

In the screen shot in the install procedure, the converted applications are shown in a directory structure that is not produced (automatically) by the copying in step 1. Is it necessary to duplicate this structure by creating "apps" and putting the apps under there? 001

michaelmalmgren commented 5 years ago

No, it does not matter, in the screenshot, the URL will be http://localhost/apps/displaymonkey_managment if app is created directly C:\inetpub\wwwroot\ it will be http://localhost/displaymonkey_managment

rhummel commented 5 years ago

I got pulled away for a few days, but am back on this now. I completed the IIS and SQL install and am at the point where I'm converting the folders to applications. My "Add Application" dialog looks like this. image Note: The Windows Authentication option is not in this dialog; it's in the IIS section's Authentication icon. Select the application in the Connection pane and then set the authorization.

After this step (but before creating the database), I get the following message when I try to access either page. This may be normal, but the line at the bottom "ASP.NET is not installed..." concerned me.

image

rhummel commented 5 years ago

In the step, "Create a new SQL user named DisplayMonkey and set the Membership to db_owner," what type of user is this? SQL user with login or SQL user without login? (Non-SQL users, like me, are not familiar with the distinction.

Reading later in the instructions, it mentions a login. But if I try to create the user "DisplayMonkey", I get an error. Should I be using the dbo user to associate with the new login? Is "dbo" created by the script? image

michaelmalmgren commented 5 years ago

I got pulled away for a few days, but am back on this now. I completed the IIS and SQL install and am at the point where I'm converting the folders to applications. My "Add Application" dialog looks like this. image Note: The Windows Authentication option is not in this dialog; it's in the IIS section's Authentication icon. Select the application in the Connection pane and then set the authorization.

After this step (but before creating the database), I get the following message when I try to access either page. This may be normal, but the line at the bottom "ASP.NET is not installed..." concerned me.

image

Setting up windows authentication is done by selecting the icon "Authentication" in the IIS management console available once you converted the folder to an application. From there disable Anonymous and enable Windows Authentication.

michaelmalmgren commented 5 years ago

In the step, "Create a new SQL user named DisplayMonkey and set the Membership to db_owner," what type of user is this? SQL user with login or SQL user without login? (Non-SQL users, like me, are not familiar with the distinction.

There are two types of authentication within SQL, Windows (Active Directory) and SQL. When creating a new account under the Security - Logins node in SQL management studio you will see these two options. Select the "SQL Server Authentication", enter a password, disable password expiration and policy. Under "User Mapping" select the DM database and select "db_owner" under "Database Role Membership..."

rhummel commented 5 years ago

Finally got it running. I want to emphasize that there is nothing wrong with the application. It was a unfamiliarity with IIS and SQL. Here's the guide.

Summary of environment: 0.1. Windows Server 2012 R2 in a Hyper-V VM. 0.2. Microsoft SQL Server 2014 Express. 64-bit version. 0.3. Installed .NET 4.7 0.4. Machine name is KE71DM. Logged in as a local administrator account that is to be associated with the DisplayMonkey instance.

Step 1: Copy Applications 1.1. Unzipped the DM_1.6.1.189-1.zip file to the desktop. 1.2. Copy the folders DisplayMonkey and DisplayMonkey_Management to C:\inetpub\wwwroot. 1.3. Set folder permissions on the copied folders to Everyone = full access. (For testing purposes.)

Step 2: Create Applications 2.1 Launch Internet Information Services (IIS) Manager. 2.2 Under “Connections,” expand KE71DM. Right-click “Application Pools.” Select “Add Application Pool.” Set name = “DisplayMonkey” Set .NET Framework version = v4.0.30319 Set Managed Pipeline mode = Integrated Check “Start application pool immediately” 2.3 In “Application Pools,” right-click the DisplayMonkey pool and select Advanced Settings. Under “Process Model,” select “Identity.” Select the browse button to open the Application Pool Identity dialog. Under “Built-in account,” select “NetworkService.” Click OK. Click OK. 2.4 In the Connections pane of IIS Manager, expand Sites | Default Web Site. Right-click the DisplayMonkey folder and select “Convert to Application.” Under “Application Pool,” select the pool created in Step 2.3. Click OK. Right-click the DisplayMonkey_Management folder and select “Convert to Application.” Under “Application Pool,” select the pool created in Step 2.3. Click OK. 2.5 In the Connections pane of IIS Manager, select the DisplayMonkey_Management application created in step 2.4 In the /DisplayMonkey_Management Home pane, in the IIS section, open the Authentication feature. Set “Anonymous Authentication” to disabled. Set “Windows Authentication” to enabled. Leave “ASP.NET Impersonation” and “Forms Authentication as disabled. The default settings for /DisplayMonkey authentication should be enabled for Anonymous and Forms, and disabled for ASP.NET and Windows.

Step 3: Create Database 3.1 Launch “SQL Server 2014 Management Studio.” (SSMS) 3.2 Log in to SSMS using Windows Authentication. Click Connect. 3.3 In the Object Explorer panel, under the default \SQLEXPRESS instance logged in as the Windows user, right-click “Databases” and select “New Database.” 3.4 Enter “DisplayMonkey” for Database name. Use all other default settings. Click OK. 3.5 Create a new login (not a new “user”). In the Object Explorer panel, under Security| Logins (do NOT select Databases| DisplayMonkey| Security| Users), right-click Logins and select New Login. 3.6 Enter DisplayMonkey for login name. Select SQL Server authentication. Enter a password. Disable the options for Enforce password expiration, Enforce password policy, and User must change password at next login. Set default database to DisplayMonkey (created in step 3.4). 3.7 Select the “User Mapping” page. In the “Users mapped to this login” pane, select the DisplayMonkey account created in step 3.6. In the “Database role membership for DisplayMonkey” pane, check “db_owner.” The “public” option will remain on. Click OK. 3.8 In the unzipped installation folder (step 1.1), locate the SQL folder. In the is a install.sql script. Note: The script is hard-coded to expect the database name to be “DisplayMonkey.” If you have used a different name, change the “use” statement in the first script line to reflect your database name. 3.9 From the SMMS main menu, select File|Open. Navigate to the location of the install.sql file and select it. In SMMS, with the file selected, click “Execute!” 3.10 To install the demo data, use the same process to run the demo_data.sql script.

Step 4: Configure Database Access 4.1 In Windows Explorer, navigate to the root folder of the Display Monkey application directory you created in step 1.2. This would be C:\inetpub\wwwroot\DisplayMonkey if you have used the defaults in this guide. 4.2 Using a text editor, open the file web.config in that folder. 4.3 Change the entry “Data Source=(local)” to the SQL server name and instance where you created the Display Monkey database in step 3.3. The string should be formatted as SERVER\INSTANCE. If you’re using the default instance of SQLEXPRESS on a host named KE71DM, the Data Source string will look like “KE71DM\SQLEXPRESS” without the quotes. Do not lead the server name with \. If the database is on the same machine, use localhost\SQL 4.4 In the same entry, change the entries for User ID and Password to reflect the values you set in step 3.6. 4.5 In the same entry, change the value for “Initial Catalog” to be the name of the database created in step 3.4.

This should allow the application to run. If it doesn’t and the web page displays the error: Handler “PageHandlerFactory-Integrated” has a bad module “ManagedPipelineHandler” in its module list, do the following: It turns out that this is because ASP.Net was not completely installed with IIS. Execute the following command at the command prompt: %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i If I had been on a 32 bit system, it would have looked like the following: %windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe –i

psined1 commented 5 years ago

Dear @rhummel ! Thanks for taking time and effort to document the steps. This will definitely help other people trying to spin up DM, especially those with limited technical expertise. Appreciate this contribution very much. Perhaps Fuel9 team should incorporate this in to the installation procedure.

rhummel commented 5 years ago

After working with DisplayMonkey for a day, I couldn't be more impressed. The fit and finish of this program is outstanding. Many places where I thought, "It would be great if I could just..." and the option was right there. The performance is great, as well.

Thanks so much for making this available.

Mentor1337 commented 5 years ago

@rhummel I could kiss you. I have been working on a very long and labor intensive project. I have very basic IIS and SQL knowledge and initially felt setting up DM would be a breeze. HAH, not so much. I originally didn't realize the SQL was required for setup, since the main SQL I want to display I wanted to link DM to my Azure which I have a very extensive Power BI that I would like to display. So I had thought the local SQL didn't apply to me. Thank you so much for these instructions it was a lifesaver and timesaver. I have set up multiple Grafana, Plot.ly, Docker and MANY more servers only to find out they can not handle or visualize the amount on queries I want. With DM it does EXACTLY what I need. I am so close I can taste it, I am just having an issue getting the DisplayMonkey login using local SQL auth. I am getting System.Data.SqlClient.SqlException: Login Failed for user 'DisplayMonkey'

The SQL (for DM) is local, and I have gotten the same issue declaring it as localhost\instance and server\instance. I have a feeling it has something to do with the connection string within wwwroot\DM we.config <add name="DisplayMonkeyDB" connectionString="Data Source=LDF-SQL-TEST\DMSQL;Initial Catalog=DisplayMonkey;Persist Security Info=True;User ID=DisplayMonkey;Password=Cheese232" providerName="System.Data.SqlClient" />

SQL Login DisplayMonkey set to SQL Server Auth, Default DB=DisplayMonkey and nothing else on General page. User Mapping is set Map to DB-DisplayMonkey USER-DisplayMonkey SCHEMA-dbo with db_owner and public Connection- Server: LDF-SQL-TEST\DMSQL Connection: LDF-SQL-TEST\Administrator

Any help would be awesome!

Mentor1337 commented 5 years ago

I figured it out...... Without this tutorial, I would probably be bald from hair-pulling frustration. Not at all due to Display Monkey, just the fact this is around the 8th complete server I have had to start trying to accomplish the same thing. I am now completely away from my comfort zone of Linux with graphical tools such as R. It has been a frustrating road and I am forever grateful of this list

michaelmalmgren commented 5 years ago

@Mentor1337 , would you please share what the problem was, in case someone else ends up in the same predicament?

Mentor1337 commented 5 years ago

Update - Ok! I have DisplayMonkey working with the demo data and premade canvases, etc. For whatever reason, I am having an issue with DisplayMonkey_management. I am getting a Runtime error when attempting to open the webpage. Web.config reflects the correct/working SQL connection string from DM. Is there more within the config file that I have missed to correctly use DM_M?

Mentor1337 commented 5 years ago

Absolutely! After following the tutorial I believe it was my error regarding the connection string that messed it up. The original/default connection string is formated as such,

<add name="DisplayMonkeyDB" connectionString="Data Source=(local);Initial Catalog=&quot;DisplayMonkey&quot;;Persist Security Info=True;User ID=DS;Password=ds.1234" providerName="System.Data.SqlClient" />

With double colons, some confusing quotes, etc. I have run into issues where opening with a certain text editor can mess up the formatting. I had modified the connection string to (what I thought) was correct, this is what my incorrect connection string looked like.

<add name="DisplayMonkeyDB" connectionString="Data Source=LDF-SQL-TEST\DMSQL;Initial Catalog=DisplayMonkey;Persist Security Info=True;User ID=DisplayMonkey;Password=Cheese232" providerName="System.Data.SqlClient" />

When in reality, it shoudld've looked like this

<add name="DisplayMonkeyDB" connectionString="Data Source=LDF-SQL-TEST\DMSQL;Initial Catalog=&quot;DisplayMonkey&quot;;Persist Security Info=True;User ID=DisplayMonkey;Password=Cheese232" providerName="System.Data.SqlClient" />

The text editor didn't incorrectly format the string, I did :P

Mentor1337 commented 5 years ago

In regards to my recent question about DM_M, I turned off Custom Errors on DM_M IIS so that I could see what is going on. It had originally not liked that I used the same connection string as in DM web.config. Go figure, connection string issue. I replaced DM_M web.config with default web.config. Does DM_M require it's own SQL DB to function just as DM? I had thought DM_M used the same DB but was using an account with elevated functions. Current DisplayMonkey_Management Connection String

<add name="DisplayMonkeyEntities" connectionString="metadata=res://*/Models.DMModel.csdl|res://*/Models.DMModel.ssdl|res://*/Models.DMModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=DisplayMonkey;persist security info=True;user id=ds;password=ds.1234;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

When I try changing the data source to LDF-SQL-TEST\DMSQL and username/password to reflect DM web.config file I receive this... DM_M-Error

Mentor1337 commented 5 years ago

Looks as though I should talk to myself more often when I have issues. This was resolved as well! Same problem (apparently) the connection string. Inside DM_M web.config I had entered the server, user and password exactly as DM and was having this issue. I checked in IIS under DM_M > ASP.NET > Connection Strings and for DisplayMonkeyEntities I noticed it was showing defaults 'data source=(local)' etc, etc. I corrected them now DM_M is working! Guess I'm not so crazy for talking to myself after all......

psined1 commented 5 years ago

Just a friendly reminder to everyone to exercise extreme caution while referring sensitive information, such as passwords, computer names and connection strings. Remember, everything posted on Github is public domain and thus may automatically become available to malevolent parties. Use masking, wildcarding, commentary, or other form of connotation to indicate the intended purpose. Have a great day and enjoy DisplayMonkey!

Mentor1337 commented 5 years ago

Well I, of course, modify all possibly volatile information before posting. It is just when it comes to certain lines like the connection string where I had a good feeling formatting was the issue and didn't want to throw anyone off by using "password" instead of just password. But thank you for the reminder, I know it is very easy to share something you may see as harmless when in reality it isn't.

psined1 commented 5 years ago

The premise is that it can damage no one but the poster him or her self. So, be sure to protect your own self! ;-)

bomsko commented 4 years ago

@rhummel I know this is an old thread, but thanks for posting the detailed instructions. I had a similar experience and it was nice to see I am not alone.

Unfortunately, even after creating the users and logins as you described, I still receive a "Login failed for user 'DisplayMonkey' error on DM_M. I am fairly confident that I have made the correct changes but I cannot seem to straighten this out. Any suggestions?

I am using SQL 2014 on a Windows 10.1903 VM with IIS and ASP.NET 4.8 installed

Login error

rhummel commented 4 years ago

bomsko, It's been a long time since I had hands-on with this. I do know that a tech at another facility followed the directions and had it running in an hour. Are you saying that you can get to the DM_M web login page, but the creds you're entering don't work? I'd double-check the creds. There is a default and it's not the same as the SQL creds.

bomsko commented 4 years ago

@rhummel thanks for replying.

I did check the account names/PWs both for the database and the server. It turned out that in my case, enabling Windows and SQL Authentication within the SQL Manager rather than just Windows by itself was all it took. (It is always the last thing you try.) I agree the install was pretty seamless once you got up to speed on the particulars. I set up two more VMS as demos in the time it took me to set up the first one.

Thanks again for the feedback.

worky2014 commented 4 years ago

Is there a way to hide / encrypt the username and password in Step 4?

mjkadel commented 3 years ago

One thing that stumped me for a while: When installing IIS make sure to include

This fixed issues where the /DisplayMonkey side of the webpage had no CSS and attached displays had blank pages. On the /DisplayMonkey_Management side PNG images wouldn't load and the save buttons on forms were invisible.