I'm contemplating on buying yet another PC and then utilize the one I've got working now as a web server. Primarily to cut costs on web hosting, but also to make testing of web design for sites easier (with all the scripting then being on my server).
Can anyone give some hints as to the pros and cons of server software. I'm definitely not into MS server software, so am going for Unix (mostly because that's where my experience stems from).
Would like to know more about Linux working with Apache or FreeBSD or perhaps Sun Solaris. I am probably confusing OS with server software here since I'm not that experienced, yet.
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:
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).
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.
SUSE is a very good distro but many new users find Mandrake the easiest (of the non-purely desktop) to install and use. If you have Unix experience then you might find one of the BSD distros more comfortable than Linux. I will say that one distro I've installed several times over the last couple of years and have always disliked is Red Hat. It's fine as long as you want to do things exactly the way they wanted to do them in the first place but Katie bar the door if you decide to add some software they didn't include with the distro.
Yeah I loved Mandrake. Very nice indeed. Only things that stopped me using it were the fact that it crashed almost constantly for me for some reason (normally fine on x86 though, possibly a bad disc) and a lot of handy features I used very frequently on SuSE either did not exist, or were deeply buried and hidden. The root file browser is by far my most used tool, but it simply isn't there on Mandrake. I guess it's to protect new users from damaging their system before they get the swing of it. You should find both SuSE and Mandrake very user friendly indeed. Both make very good general use, desktop OS's.
Heed well Peo's warning of Solaris though. In many cases it is a disaster waiting to happen. Documentation of almost every server and bit of software I have compiled has had warnings oh problems with Solaris on a wide variety of hardware. Problems can range from little blips that can be slapped back into shape with a simple command line argument to full on crashes and large parts of software being inoperable. From the looks of it if you want to run Solaris, you need specially tailored hardware and programs.
Oh and the connection speed of your box being the same as your current net connection is kind of a given really, seeing as it's on the connection that runs to your house where your box will reside. By box shares a 256kilobits per second upstream connection with one other Windows PC downstairs and two games consoles. The other devices come and go as far as the connection is concerned, with the exception of my box which maintains a constant connection (with the reload every 15 mins feature of opera constantly active on a web page to prevent an IP address release on the router). The already meagre connection to my server can easily drop further depending on how many other devices hop on the line and what they do, but I'm not really arsed as nobody ever visits it anyway (well I assume not, I don't bether check the logs really and I almost never recieve mail from my contact page). Nobody has any reason to visit it more than once really. I have barely changed the site at all since I first made it and don't plan to do anything to the publicly visible stuff on it for a long time to come. I've got plenty of work to do which is why I made the switch to linux and compiled all my own software in the first place. To learn how to do it, to learn how to handle linux and servers and also have and extremely efficient development environment. I'll amuse and entertain the public when I'm not swamped by documentation to read and work to do. Developing on yer own servers is brilliant though. Screw having to open the FTP client, upload, switch back to the browser and reload for every little change. Just edit, hit control and S and your newly edited server side applications are in place and online because you can save straight to the document root of yer http server. It makes things a lot faster. Screw the connection man. That's the least of yer concerns.
Oh. Here's a great tip that'll hopefully save you a good bit of time when yer setting up yer servers and software. Assuming you're going to install the same or similair stuff that I have, install them in this order:
2nd) MySQL or whatever database you choose.
3rd) Sendmail (Let YaST install this one for you. Trust me; as a first time Linux user you DO NOT want to take this one on.)
4th) Apache web server
5th) PHP. (PHP must come after the http server because you actually install PHP as a module of the Apache server.)
6th+) Whatever else you want afterwards. An FTP server would be great but of the two I've been wrestling with for weeks now, one has proven rather insecure and just seems rather wierd and ambiguous in general and the other whilst being nice n' secure and clear in how things work, just does not want to work. It's like the lazy kid that just finds any excuse they can to avoid doing homework. I decided to stick with the lazy kid (pure-ftpd) as it's the one I'd feel most comfortable with once I torture it enough into working. (It WILL work eventually. I'll edit the damned source if I have to! )
The root file browser is by far my most used tool, but it simply isn't there on Mandrake.
You mean a file browser running su root? I'm sure Mandrake has had that and a root console on the menu tree, too. As with a lot of distros, the Mandrake-defined menu is pretty bad (too much poorly arranged content). That's where the stripped down desktops like Xandros really have an ease of use advantage for the non-developer.
For the life of me, I couldn't find an SU file browser anywhere on Mandrake. You can get an SU console no problems yeah. Just open a console and hit SU. It still seemed to behave a bit strangely though. I'd just put that down to me being used to SuSE though.
Hey, those crazy Frenchmen may have removed the links in the newer versions. I seem to recall having the same difficulties as you on the 9 and 10 versions. I haven't put it on this new box yet so I'll have to look on the other one later. As I recall they actually do it by forcing you to be root to run the KDE link.
Originally posted by ray326 You mean a file browser running su root? I'm sure Mandrake has had that and a root console on the menu tree, too. As with a lot of distros, the Mandrake-defined menu is pretty bad (too much poorly arranged content). That's where the stripped down desktops like Xandros really have an ease of use advantage for the non-developer.
There are things I dislike about mandrake, like this. But one advantage of mandrake is just the big fact that installation of software is less painfull, I no longer have to log in and out of root the way I have this all setup. I find it a notch more conveiniant then SuSE. But then again, I have never tried to run a server on either... I originally used SuSE thinking I was going to run a Mono server, but I never got around to taking mono on a test drive. I plan on getting familiar with SuSE again in the future. As for the comments about red hat earlier: red hat is nasty compared to some of the other distros since it is no longer being updated should really not be used anymore... it is not practical. I would like to try TSL one day since it is completely geared for server use. All of this would be just poking around of course... I am a win server guy.
If you want ease of installation, then just go with YaST like I said. You can let YaST do it for you or you can do things in a much more Windows-like way with rpm binaries. You install them very much like you would with anything else on windows (Firefox on Linux is a fine example). The result of installing rpm's and using YaST are very much the same as YaST uses rpm's to install most of the time anyway (although YaST hadles a lot of other technical issues if there are any, for you, whereas a standard rpm probably would not). You still have the thing of not having as much control over what your applications can and can't do, it's general behaviour and tailoring to your prefered setups etc (something I have grown to love about Linux now ), but most rpn's are built very well and can usually provide a good level of acceptability for a very wide range of people. As a matter of fact MySQL recomend that you install their general release standard binaries rather than compiling yourself (for reasons I shalln't bore you with) and pretty much everyone has no problems with them at all. I still compiled my own for the learning experience etc, but I used a binary too quite happily for some time before I tried compiling my own software.
Once you have YaST install gcc and make for you though, you can quite easily slap software on your system whichever way you like.