Difference between web server, application server and database server - apache

I read somewhere that a web application consists of a web server, application server and a database server. What is the difference between these three ?
I asked this question because I remember when I hosted a website, all I had was a https login to the control panel of the website, in which I put all my files in htdocs folder. There were no three separate things like the web server, application server and the database server.

This often gets confusing.
Firstly - "Server" can refer to a physical thing (a computer), or a logical thing (a piece of software).
Web, application and database server software can all run on the same physical server machine, or be distributed across multiple physical machines. Most large websites have multiple machines; most "consumer" hosting packages run on a single box.
The logical separation is as follows.
The Web server deals with HTTP(S) requests, and passes these requests on to "handlers". They have built-in handlers for file requests - HTML pages, images, CSS, JavaScript etc. You can add additional handlers for requests that they cannot manage - e.g. dynamic pages delivered by the application server. Web servers implement the HTTP specification, and know how to manage request and response headers.
The application server handles requests which create dynamic pages. So instead of serving an HTML page that is stored on the hard drive, they dynamically generate the HTML sent to the end user. Common languages/frameworks for this are Java/JSP, .Net (aspx), PHP, Ruby (on Rails or not), Python etc. Most of the time, this application server software is running on the same physical server machine as the web server.
The database server software is where the application stores its structured information. Typically, this means custom software which allows the application server to ask questions like "how many items does user x have in their basket?", using a programming language. Examples are MySQL, SQL Server, Oracle (all "relational databases"), and MongoDB, Redis and CouchDB ("NoSQL" solutions).
The database software can run on the same physical machine as the web server, but it's usually the first thing that gets hosted on separate physical hardware when the site needs to scale.

Web Server -
Server on which your website is hosted. This server will have installed web servers such as IIS, apache, etc.
Application Server -
Server on which your created applications which are utilizing your database, web service, etc.
This application server will host business layer (wrapped with web services), scheduled jobs, windows services, etc.
Database Server -
Database server will have your one or more database hosted such as Oracle, Sql Server, MySql, etc.
If you are referring to htdocs then it is a Web Server. The database you are using is must be installed on different server which is your Database server. Application server can also be installed on the same web server machine.
Reference - Deployment Patterns

Web Server: The server on which all your HTTP requests are handled is known as a web server
where as
Application Server: Including the services of web server i.e responding to the HTTP requests it also responds to the business logic thus not just limited to the HTTP protocol
Eg. gaming servers, chat rooms etc.

Related

Blocking Database access from test server to production database and vice versa

We have setup two sites and two databases on Azure. A test site and a production site.
We had an issue recently where a developer made a mistake and deployed code to our production website with a connections string pointed to our test SQL server.
I am wondering if it is possible to limit access to the production SQL Server so that it only accepts connections from the production web site. And limit the test SQL Server so that it only accepts connections from the test web site.
I would ultimately like to configure it so that if this happens again, the site just wouldn't work because it would not authenticate correctly.
I am in the process of creating an additional set of configuration files so that we have a set that points to test related settings, and one for production, but how do you prevent somebody from screwing up and deploying the wrong connection string to the wrong environment? All database activity on the site is going through a WEB API.

Could not access the SSO database During biztalk runtime Configuration

I'm trying to test a migration of moving a BizTalk SQL Server from one server to another. Here are the details.
Currently it was all on a single server in a dev environment, BizTalk SQL, SSO and BizTalk runtime all on one server. It is a Windows 2008 R2 server with SQL Server 2008 R2.
What I want to do is split out the SSO Master secret server and BizTalk databases to a Windows Server 2012/SQL Server 2012 setup. So far I got SSO all setup on the new SQL server. I configured just the SSO portion on that server and all went well.
I then unconfigured the existing BizTalk Runtime and then went to configure again, using the new Windows/SQL Server/SSO in the configuration process.
All goes well up to the point where it tries to configure the BizTalk runtime. That being said all the database are created, SSODB, BizTalkMessageBoxDb, all of them. But when it goes to configure BizTalk Runtime, it hangs for a while and several of the following errors show up in both of the Server's logs:
Could not access the SSO database. If this condition persists, the SSO service will go offline.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding..
SQL Error code: 0xFFFFFFFE
It shows up in the SQL/SSO servers logs first, then the Runtime server a few seconds later. Eventually the configuration times out and fails. I believe it's permissions related, but I can't seem to figure out what it would be.
Questions:
what permissions do I need to review?
would the fact that the new server is Windows 2012/SQL 2012 while the runtime server is Windows 2008 be an issue?
is there any way I can get more details on this error?
Edit to add both DTCPing and DTCTester pass with flying colours and I can connect to SQL via SSMS from the server. Firewall has been completely disabled for now in order to eliminate that as well.
How were your service accounts configured in the first environment? Typically a single DEV environment with everything on one box can be done by using a local account on that server. If you now split out your SSO onto another server (it doesn't matter if it's W2K12 instead of W2K8), you are going to have to switch your service account(s) and groups for BizTalk to Domain accounts.
In a multicomputer environment, BizTalk Server supports only domain groups and domain service accounts. Domain groups include Domain Local groups (not recommended), Global groups, and Universal groups. Built-in accounts such as NT AUTHORITY\LOCAL SERVICE, NT AUTHORITY\NETWORK SERVICE, NT AUTHORITY\SERVICE, NT AUTHORITY\SYSTEM, and Everyone are not supported if you want to configure BTS in a multicomputer environment.
Make sure your SSO is running as a domain account, and a member of an SSO Administrators domain group - and ensure this domain account/group combo is configured for the SSO system on the SQL server (instead of local accounts):
After that the SSO system you join from the BizTalk Server before configuring the runtime on BizTalk Server usually needs to be configured with the same domain service account for SSO:

Sync Framework: SQL Server to SQL Server To SQL Express

I'm very new to Sync Framework, Still exploring different possibilities. Here is my Scenario.
We need to have an application (SQL Server and ASP.Net) which is hosted on our web server. Users can register and interact with it online. Another Copy of the application will be installed on our Client's Intranet server. Users can be registered over LAN on this server.
A third copy of the Application (SQL Express) will be installed on various laptops and windows 7 tablets. Users will use the application remotely without connectivity to LAN or internet. Once the device is back in network, it will sync data with the LAN server and LAN Server will sync to the Internet server.
I intend to do this using WCF services and Sync Framework for the sake of security, however I'm open for suggestions. Can someone please suggest me the correct way of doing this and point me to some tutorials samples to do this. I've been struggling with samples available online (mainly this one http://code.msdn.microsoft.com/Database-SyncSQL-Server-e97d1208) for a while and still have no success ..
Feel free to shoot any questions and I will answer them as best as I can.
have a look at this link and ignore/substitute the Azure specific stuff with SQL Server...it has a good discussion on the WCF specific components... Walkthrough of Windows Azure Sync Service Sample

Alternate Access Mapping not working in SharePoint 2010 Workgroup

I have tried to configure alternate access mappings in my SharePoint 2010 which is installed in WorkGroup Windows Server 2008 R2 server but could not make it work.
Here are my steps.
Go to Central Administration-> Manage Web Application.
Select a web application and extend it.
Provide the my12server.com in the host header and leave other default values as it is. I changed the zone to Extranet.
Click Ok.
After sometime, it creates Web Application in SharePoint and Web Site in IIS.
I have changed my hosts file by adding entry
192.168.1.11 my12server.com
Browse the new extended. It asks for credential. Supplied the correct credential but nothing got display. Just a blank page.
Note: I have however successfully extended web application when the SharePoint 2010 is in domain machine.
Please advice me.
Thanks
Prakash
SharePoint is designed to work in domain environments only. In other words, you cannot expect to run it on an underlying Windows Server which joined into a workgroup and expect full functionality. Although there are blog posts around describing installation in a workgroup environment (or, better to say, using local accounts), I wouldn't recommend wasting time with such a mode of operation.
Furthermore, it doesn't make sense to extend a web application just for the sake of providing another hostname. Extending web applications multiple times is mostly useful when you need different authentication providers for each of them. In your simple case you can just configure multiple Alternate Access Mapping records for a single web application.

Web services dilemma

Hey all I have created a web service that starts on my local intranet and sends out data to an outside server. This works awesome and all using classic asp on the server side and vb.net program sending the info from the intranet pc.
But now I need to do the opposite. I need to have the web service be called from the server web page to the intranet pc. Problem being is that we do not have access to any ports or any means of getting data from the server because of the firewall.
How can this be possible to do with my current scenario above?