I ditched Windows OS on my Home PC, took the plunge straight into linux and started praying I wouldn't destroy everything in one fell swoop. Thankfully some of the guys from here gave me some excellent recomendations of Linux distributions. I started with SuSE Linux which was their main recomendation, but I tried out a few OS's as suggested, but still came back to SuSE anyway. It's easily my fave OS. It doesn't have all the driver support for games and webcams that some people might want, but in my own opinion, it puts XP to shame.
I just installed it, got reading the help files for the comand line which I heard I'd be using a lot and just spent a week familiarising myself with the OS. I was astonished at all the free stuff that comes pre bundled and ready to roll, even for the personal version (the one I run my server from). I did get rather disheartened though when I found I couldn't install anything because I didn't have a C compiler or GNU make (essentials for your software), but when I found the solution, I was amazed.
SuSE has an application called YaST. You just open it up from your taskbar menu (just like the start menu on windows) and you give it some sources for installing stuff. It'll take a while the first time for all the stuff to be read from the source server, but once it's done, you just type in GCC (much like you would with google) and it'll list a bunch of compilers for ya. You just tick the one you want and YaST will download and install it (and even ensure its stability with other applications) for you. No hassle at all. You can do the same for GNU make. So that's your core software taken care of. That isn't the best bit though. Get this. YaST is basically a software on demand Google. You can tick the "search description" box in the YaST search then type in something like "HTML editor" or "FTP client" and it will search out a whole host of applications that match those descriptions and present you with a list of them. You just tick off the boxes for the ones you want and hit install. It'll check their compatability for you and install them all for you. Full software applications, completely free, on demand, hassle free. Hell yeah baby!
You can also download and install from source just about any application you can find too. My servers for example are all now compiled from source (instead of using YaST). YaST is great, but it doesn't give you the complete control over your software that building it yourself gives you. YaST installs pre-compiled binaries that have already had all their options set, but when you make it for yourself, you can customise the applications options and features to suit you. So you could have a small scale, fast and light application, with only the essential features built in, or you can build a goliath of an application capable of just about anything you throw its way.
Here's an example of my PHP5 module being built:
I download the source code from the good people at the Zend.com
I extract the source from the zipped up tarball that it comes as (basically an unzip to whatever location you want, I usually unzip stuff like this to root). Then I jump into the folder created and hit F4. (This brings up the comand line console.)
Then I have a read through the README files etc that come with the source, then have a look at the installation instructions (usually a file named INSTALL). This will list any note you may need to know about, but will also contain a descriptive list of all the switches (or options) you can add when making the software to customise it to your liking.
So once you have all the options you want, it's time to get with the building.
On the command line, you give the first command, the comand to configure it. The one I used is this:
./configure --with-apxs2=/dootserv/bin/apxs --with-openssl=/openssl --enable-bcmath --enable-calendar --enable-ftp --with-mysql=/usr/local/mysqlserv
The ./configure at the beginning is me telling the computer to execute a file called configure and all the stuff after it, is all the switches that the configure script will look for whilst it runs. (The ./ is just the explicit declaration that it is a file in the folder you are currently in. In exactly the same way as you would for a web URI "." meaning current location and "/" meaning something in the location specified just before the "/" so "./" quite literally translates to "something in here".)
As you can see they all say something to add remove or find something. "/openssl" is not the default place where the openssl installation goes, so when I tell configure I want openssl included, I also tell it where I put it on my machine. Hence --with-openssl=/openssl.
So that'll have the config script run and you'll see loads of stuff whooshing up the console screen, whilst the script gathers info about your system, checks requirements and sets up for the making of the software.
Once it's done that, you just type in "make" and this will (yup, you guessed it) make the software according to the options set by you and gathered in configure.
Again oceans of stuff will go whoosing up the screen whilst it is being made then come to a halt to wait for your next instruction.
"make install" is your next command and I just know you're astonished to hear, this installs the software you just made.
That's basically it really. I know it's a lot of writing just for three comands, but I figured there was no harm in explaining things a little.
Pretty much all your software you make will follow almost exactly the same process, just make sure you look at the last few lines printed out by whatever just ran to make sure there was no error message and the process halted. This almost certainly will happen once or twice, I think the apache web server asks for xmllibs or something half way through ./configure and won't configure until you have it installed. this is a trivial issue though thanks to YaST. You can quite literally copy and paste the name of whatever is asked for at the command line by the script, into YaST and then YaST will find and install it for you. Then all you do is run the command again and it should finish properly without a hitch. It might ask for another thing, but you just do the same again.
I will warn you though that getting into this sort of stuff is not for the impatient. There is quite a bit of reading a nd learning to be done to make sure that you are familiar with the OS and that you compile the software in the way that meets your requirements. For example I spent two weeks reading up as much as I could about the Innodb database engine of MySQL and many other parts of MySQL to make sure I had the configure comand that was just right for me. This was actually mere self torture just for the sake of it though. You can quite happily (and it is infact recomended that you) just download the pre-compiled binary from mysql and just slap that on yer machine. You just parrot out the seven commands from the install instructions to your comand line and you'll have yourself a fully working MySQL database and server in seconds. I just installed from source for the experience, practice and educational value of it (oh and a jackass of an ftp server. but that's another story).
My current setup now is:
SuSE Linux 9.1 personal edition Operating system http://linuxiso.org/
Apache http server (version 2.0.52) http://httpd.apache.org/
OpenSSL version 0.9.7e http://www.openssl.org
MySQL 4.1.7 http://www.mysql.com
Some version of sendmail I told YaST to install for me because there was no way in hell I was messing with that thing.
Oh and Pure-ftpd 1.0.20 FTP server when I can convince it that my PC is NOT my router.
All of which can be aquired for the total cost of FOOK ALL!
If you decide to go with SuSE then you can let me know by contacting me here and I'll help get you on your feet as fast as possible. I suggest contacting me after you have downloaded the OS but before you install it because there's still one or two hints ya might need. You may also need the help of the magical Ray326 and NogDog, seeing as this will be an OS replacement rather than making a dual OS machine (which is the only experience I have had with installing Linux OS's so far).
If I haven't bored you to death yet, then good luck.