Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I am a programmer. I've never really been much into server stuff. Sure, I can do a few simple things, but configuring Apache to get all the potential out? Or setting up subversion? Or doing clever things with virtual hosts? Lost me.

So how do I learn about this? I've got a seriously under utilized VPS that I can tinker with. It's got Ubuntu. Is that kosher? Surely any *nix flavor makes a fine server. Am I right? Got any books to recommend? Websites? Etc?

Any help?

share|improve this question

closed as not constructive by Chris S Feb 8 '12 at 0:24

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

8 Answers 8

up vote 5 down vote accepted

How long is a piece of string?

Seriously, the best way to learn is by doing. Set yourself a target and start at the beginning. If you don't understand anything at the beginning, go back a level and so on and so forth until you learn it all.

E.G. Setting up Subversion. Set this as your target ("I want to have a Subversion repository that's accessible by HTTP and integrates with our Active Directory for credentials"), and the beginning would be with the Subversion installation instructions.

Say the installation instructions called for you to set up a Virtual Host (they do, actually). NFI what a virtual host is? Go away and find out, then come back. Next thing it wants you to enable extensions. wtf? Ok back to the Apache manual.

Actually, that's about all there is to setting up a Subversion repository, but the point still stands. If you don't have the time to do a course, it's great, and don't forget you've got awesome sites like this one to help you when you get stuck!

share|improve this answer

On my webserver, I setup tomcat, apache, subversion, and mail. I suggest you do the same and look into giving proper user permissions to apache, tomcat, and subversion. Bonus points if you can get svn running over apache and https. I'm still struggling with that one.

Learn by doing. At least, that's what I'm doing.

share|improve this answer

As others have mentioned, set some goals and have at it on your test system(s). Many system and network administrators have learned through experience. Reading a lot helps also. For a great overview of some concepts and ideas in the field that you should be aware of, get your hands on a copy of "Practice of System and Network Administration" and give it a read or two. It won't give you the nitty gritty details of configuring Apache, but it will give you the 10,000 foot overview of things to keep in the back of your head to consider as you venture into the details of specific software or hardware. I wish I'd had a copy when I first got started.

share|improve this answer

As already stated, set goals and work towards them. Most importantly, don't get disheartened when things don't work as you expected (if at all). Instead, just lower your sights a little and have another crack. Sometimes you need to temporarily abandon a goal and focus on something else instead. Give it time and it will all come together for you. Then, when you reckon you have it beat, come back here and help us out. ;)

I differ from most others in that I wouldn't recommend a book (never found one that stands out enough from the crowd). I would instead recommend trolling the Internet for your information. It's likely to be more readily available, more targeted in many cases and less likely to be obsolete. The latter always being a problem with hard copy books and as a programmer you will be well familiar with that.

share|improve this answer

My entire sysadmin knowledge really came from trial and error. I experimented, getting Win + IIS going. Moved to Apache. Moved to a shell. Moved on to a dedicated server and got my feet wet with webhosting. Eventually through trial and error I can generally get anything I want done and in good time. Just play with things. It's a lot of fun! Sometimes it can be incredibly frustrating. Work through it and you will eventually come to a solution and know more for it.

For me, system administration, especially setting up and tuning are a great deal of fun. Approach it with good-spirited zeal and a willingness to learn (and Google for hours :)) and it'll reward its self.

share|improve this answer

Gotta start somewhere...

In addition to what others have said here (basically learn by doing!) you might find this book helpful:

Although hopefully you can find it somewhere CHEAPER than is selling it for... yikes!

Anyway, the book is a great way to wrap your brain around the basics while giving you examples you can play with and learn from.

After that... think of something you want to do then try and do it. :-)

share|improve this answer

I think you're going to get the same response from everyone. Sysadmin comes with experience. I think I've learnt the most about systems at 3am in the morning when I've been on call with everything falling apart on me! I was lucky in a previous company to be given the chance by the sysadmin manager who saw some potential in me and gave a few pointers:

Learn something really, really well. In my case he strongly suggested Exim as the company was rolling out a major mail platform based on it.

Pick something you're interested in particularly and learn it well. Learn Perl if you're going to do Linux, it's not a hard language to pick up and the ability to use it will be critical for most linux sysadmin work.

If you have any area you're specifically interested in, find some good bloggers and read their RSS feeds avidly.

A few in my list: General -

MySQL - &

Debian focussed buy good bits of it can be cross-platform -

Scalability -

Perl -

share|improve this answer

I think you're coming at it from the wrong direction. Don't start with app servers but instead go back to the core OS, learn about it's security models, how the OS works and how to configure it. Configuring and using an OS for admin purposes can be very different to doing so for end-user purposes, even for a developer or a power user.

From there learn about networking and TCP/IP, how DNS and DHCP work (and why you should use them), what a directory service is (and why you should use one) and other essential client/server services.

Also learn about other OSs. There's more to the world than Unix, and knowing a bit about how other server OSs work will give you a better all-round grounding. You don't need to go into the same level of detail at this stage, but just be aware of some things.

From there you'll have a decent enough baseline to build on with web servers, source control systems and databases, and the knowledge that you have gained will help prevent you from making fundamental mistakes with them.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.