Migrated from ServerFault:
I have been toying with the idea of trying out a VPS for hosting SVN repositories and Wordpress blogs for my fiancée and I. Additionally it would be nice to be able to set up the VPS as a mail server for our domains. I already know what I need in terms of bandwidth and disk space (not much). What kind of hardware requirements am I looking for? What kind of price range should I expect?
What kind of additional resources would I need if I wanted to install Tomcat or something similar for development experiments.
Also, which linux os to look for: CentOS? Ubuntu?
For Wordpress 3.x you will want 256Mb RAM as an absolute minimum for reasonable performance, more if you use any heavy plugins (some say more is required for decent performance anyway). Obviously you should add more to deal with the other services you plan to run on the same machine. You might get more into less by using nginx/lighttp/cheroke instead of Apache and tweaking mySQL to the Nth degree, but I'd still say 512Mb is a sensible minimum for what you describe.
A simple mail server (assuming you just mean a basic SMTP server to receive mail and a POP3 service to connect to to draw it down to your local machines) for a couple of people would not take much resource at all and SVN repositories are also quite light on the RAM requirement.
In terms of disk space, that is a "how long is a piece of string" question. A basic Linux server install with Apache, mysql, PHP, wordpress and so on should only take a few Gb. Add a bit temporary storage, half a Gb or more to account for log growth over time, then add what you expect to need to store in Wordpress and those source control repositories (and in the mail archives if you are planning to leave the mail on the server).
I'm not sure what you'd need to add for TomCat development setup, but I would recommend you consider a separate server for that - keeping your development and production stuff on distinct (virtual) machines.
As for the choice of Ubuntu/CentOS/other: go with what you know is usually the best general purpose advice here, though make sure you pick a distro and version that will be getting security updates for some time to come (such as a recent Ubuntu LTS release rather than the latest-and-greatest build which might not be supported for as long - on a public facing server stable packages with long security support is often more useful to you than having more up-to-date (feature-wise) versions of everything).
A very good way to get a real gauge of how much of everything you need is to try it locally first: install a virtualisation solution like VirtualBox or VMWare on one of your local machine and setup a small VM to see how far you can stretch it. Remember though that I/O contention will be higher in a real hosted VM environment (the host will hopefully have a fancy array of fast drives, which is probably much nicer than your deskop's I/O subsystem, but there will be a number of VMs sharing that array) - so if your local tests show that the arrangement "runs fine but uses swap a bit" or "runs fine but most of the RAM is used rather than allocated to cache/buffers/free" then you will probably want more RAM to allow for more caching and so reduce any performance hit caused by that increased I/O contention.
For price range I suggest checking hosting specific forums like WHT as such subjective and temporally varying discussion is probably off-topic for SuperUser. Remember to make sure you keep good backups of the content on a remote server (even if the host promises to keep regular backups of the VMs) so if something drastic happens (like the host vanishing off the face of the Earth) you don't lose everything and can get back up and running easily.
I agree with the post above. My recommended approach would be to start out with a 256 MB VPS since you have the ability to upgrade if needed. Start out with Wordpress and SVN to determine the amount of resources you have left. Then you can determine how much to upgrade to for tomcat. If you are going to be doing 'experimenting' with tomcat, I too would recommend a separate VPS, better to dork your own VPS than your fiancées. On the Tomcat, I would say at least 256 MB, as java can really chew up memory.
We really like the Ubuntu LTS editions, 10.04 has done very well for us. After everything is up and running, read up on iptables, mod_security, and apparmor to secure your sites.
SVN stands for Apache Subversion, a software version and revision control system that is distributed under free software under the Apache License. Many developers use Subversion to maintain the current version and history of files such as source code, web pages, and documents. Virtual server (VPS) is a server-based form of virtualization that separates from a single server into multiple virtual servers. Virtual servers have the same features as a dedicated server, but run resource sharing from the original physical server. Upgrading or changing the configuration of the virtual server is very simple, can be changed directly on the management software. However, changing the resources of the virtual server depends on the physical resources of the server.