I've just acquired a dedicated linux server which I plan to use to deploy projects and host a few sites from. Unlike virtual or shared hosting services I've used in the past in this case I'm actually in charge of the entire machine and its configuration! And right now that seems like a daunting task.

Still, I'd like to learn more about linux administration and learn as I go, but preferably I'd rather learn from other people's mistakes and not my own. ;)

What resources, tutorials and first steps can more experienced administrators recommend the linux newbie admin as they make they make their way into into the wilderness?

Some other ServerFault questions and answers I've found useful so far:

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

9 Answers
9

I'd start with a good book covering common administrative tasks for your OS (CentOS, by the look of the tags, which I don't have any documentation experience with). If you want to be a good Systems Administrator, rather than "good at admining this CentOS box here", then you really must get a copy of "The Practice of System and Network Administration", 2ed, by Limoncelli, Hogan and Chalup. It'll teach you practically everything you need to know about administering systems, from a conceptual level.

Find out if there is a Linux User Group (LUG) in your area. I've been a member of a couple of LUGs now for many years and they have always been fantastic, especially since there are often opportunities for physical help and assistance. There is a partial list of groups here: http://www.linux.org/groups/

You should also get in touch with the mailing list or forums of the Linux distribution that is installed on the server. Different distro's often have little quirks that might get missed in a general query on, say, an application's online support (e.g. Apache, Postfix etc.). I have never used CentOS but it's very popular so I'm sure there will be a great community built up around it.

Most big Open Source projects and Linux distributions also have IRC channels, and these are of course great for live support.

This will sound funny at first, and some people will think I'm being facetious, but I'm not.

Find another experienced admin, sit down, define a goal of some sort, and attempt to reach that goal while they provide guidence.

Unix (and BSD and Linux and who-knows-what-else) was originally an environment that encouraged the programmers and administrators to communicate with each other. Linux is a fairly decent approximation of that (not 100% but very close).

In my not so humble opinion, the Unix/Linux/BSD admin is best taught through a form of oral tradition, where knowledge is verbally passed to the learner by those who are much more experienced. In every case that I have encountered, this method of learning Unix (and its cousins) has been the most informative while providing the most amount of insight to the learner, especially insights that you cannot obtain from simply reading a book and forging forward. The reason for this "inefficient" method of learning is, at some point, someone somewhere made a decision about something, but it's not formally documented (read the header to that link). This means it's easy to sit there and scratch your head about "why is X done the way it is" when in reality, there was probably a very good reason for that. Having someone who's been there, and knows the history of how-it-came-to-be, helps to "fill in the gaps".

Yeah, you can sit down with a book, or (like I did), simply install it and bang your head a few hundred times while you figure it out the hard way. But there's a lot to be said for learning from someone else.

Install OS with minimal install. I suggest you use logical volumes for disk.

Patch it.

Turn on the firewall.

Turn off uneccessary services.

Install/test your apps and make sure they basically work, e.g make firewall holes as required, set app access control.

Config your apps properly

Do backups and some test restores.

Make use of the resources you have:

strace and tcpdump are your friend

logs

mailing lists

forums (Serverfault!!!)

Google

IRC

LUGs

Read man pages in your spare time

Seriously. When I started out, when I had nothing better to do I listed /bin /sbin /usr/bin /usr/sbin and read the man pages for eery binary. Naturally I didn't remember them all, but a lot of the time I sort of remembered enough to sort of be able to say "oh there's a tool that does that it's called something like..." when I got stuck and needed to do something.
In other words it was an easy way to become familiar with the available tools.