I'm trying to figure out what the ideal set up would for a few servers.
1) Website
1) Mail server
1) Database server
1) file server
In this given scenario, say there is a site that will offer each user 5gb of file storage space along with an e-mail and a dedicated database.
From my somewhat limited understanding of how servers work I concluded that having 1 server per feature would be the best bet so that if one goes off line the other data isn't affected.
What would be a smart and efficient way to handle this?
This is my understanding
1) The website is hosted from 1 main server that will handle user registrations and serve small files. For this I think a simple server set up is more than enough right?
2) For a mail server, to handle the equal amount of registered users., will primarily handle the e-mails and e-mail attachments
3) The database would not be capped in size and only store each clients contacts and profile settings, so every time the user logs in the settings will be pulled from the database. I plan on loading the settings into $_SESSIONs so that the database won't be queried everytime the page reloads etc. But the Contact informations will be queried from the server on every action.
4) the file server will just serve files nothing to cpu or memory intensive
As far as software goes, I was leaning towards CentOs 5.5 and Plesk 10.2 to handle the website server and MySQL 5 for the database servers, maybe Atmail for the mail server. What is recommended on the software side to be loaded on each of those servers?
I have no experience in this field, but i'm gaining some everyday. I need to be intelligently informed so that i atleast know what i'm dealing with in the event that I hire someone to handle the setups for me.
In your experience guys, what would be an ideal set up with both hardware and software configurations?
Also, take in account an example user base of 5,000 clients. So each with 5gb of webspace, email, and own database.
This is a fairly broad design issue, and is pretty complex. Each of these components involves its own significant design considerations. The level you've presented it is at a pretty abstract level, so the best we can provide are pretty abstract answers.
As for your follow-on questions about software and OS selection, this is a drill-down that many of us here on ServerFault have had to do in our careers. However, every one of us who has done it knows very well that a correct answer here requires vastly more data than has been provided. Or even is able to be provided in a form like a ServerFault question because it is fundamentally complex, and there are a lot of variables to consider.
To answer those questions, you'll also need to have data or answers on the following issues and topics:
And a whole bunch of other things. These are the kinds of things that you learn by working closely with the development process and early-adopter tests. It's an iterative process, and not the kind of thing you can just plop a proposal down on a whiteboard and get a well functioning infrastructure out of it.