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

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

consider me a total noob, who uses a Windows PC and has never touched Linux. But I want to administer, manage and take responsibility of my server, at least at some point, if not now.

But since I am a full-time blogger I am unable to find time to study at an institute. So, here is my question — - Is It Possible To Self-Teach HTML, CSS, PHP, JavaScript, Wordpress, CentOS (or for that matter any Linux distro), Apache, Nginx, and Varnish?

Yes, beginning with HTML, absolutely all of them. I might seem overly ambitious and foolish, but I just want to do it. Aren't there any self-taught server admins?

(1) Please help me out with the names of good books, links and whatever you can. (2) How long would it take me to get there (approximately)? 3 years? 5 years? (I have good touch with HTML & Wordpress.)

This is a great community, I hope at least some of you will shoot some suggestions at me.

share|improve this question
Have you considered upvoting or accepting any of these answers? It's the Serverfault community way. – womble Jul 5 '11 at 4:25

We can't help you with HTML, CSS, PHP, JS or WP as we don't deal in them here.

We do deal with Linux, Apache, Nginx and varnish.

  1. There's no one size fits all. Personally I find books almost useless as it's not how I learn. Some people can bury their head in a technical book for 3 days and come out the other end being crazy smart. I bury my head in a technical book for 3 hours, and come out the other end just plain crazy. But we all agree that there is no subsitute for doing it in real life, and getting your hands dirty (on a non-critical system first, of course).

  2. Forever. Seriously. You never stop. Technology changes so fast that if you enrolled in a 3-year tertiary course, by the time you finish your specific knowledge may only be 50% as useful as it was when you started.

share|improve this answer
What programming language are Apache, Nginx and varnish based on? How do I understand them? Is it like if I have good knowledge of linux I can manage Apache, Nginx and Varnish? Is it so? – user88753 Jun 29 '11 at 5:24
@Aahan - you don't program apache or nginx. At most, you have to edit config files, and they they all ahve their own syntax. Managing individual software packages usually has little to do with their underlying OS, as Apache is available for Windows and Linux and Unix. – Mark Henderson Jun 29 '11 at 5:26
So it all comes from practically meddling with them on a spare server, right? (Can I use my Sony VAIO laptop for that? I mean, install CentOS on it, and checkout Apache, Nginx and Varnish one at a time?) – user88753 Jun 29 '11 at 5:28
@aahan - well, thats how I learn. A mix of reading the documentation and tinkering on a spare machine at the same time. Yes, a laptop would be fine for playing around with. – Mark Henderson Jun 29 '11 at 5:29
Great. Thanks a lot for the input Mark. I really appreciate your quick help. – user88753 Jun 29 '11 at 5:35

Yes there are self taught server admins. I started tinkering with Redhat 5.2 on a spare PC over a decade ago. You can learn quite a bit by getting your hands dirty. Books are also good, as is online documentation, the increasingly rare magazine, and rubbing shoulders with people that have similar interests. See if there is a LUG (Linux Users Group) in your town.

It is good to do a lot of reading along with your tinkering as you'll get an idea of best practices. It is unfortunately very easy to get in the habit of doing things incorrectly and/or insecurely by just blindly tinkering, and not completely understanding what is going on.

You may find this book handy, especially if you want to tinker with various *nix distributions:

it traditionally (I don't have the current edition of this book), has done a good job showing the different paradigms between various *nix distributions.

share|improve this answer
Very useful book indeed. I could have missed it if it wasn't for you. Thanks a lot! That apart, I would like to know how I should start. There's a process for everything right? I like you to advise me on how i should progress forward. For example, 1. start with ubuntu and get used to CLI 2. Get your hands dirty with CentOS etc. I hope I was clear about what I want. – user88753 Jun 29 '11 at 8:09
@Aahan It is good to learn several distributions, as you never know what you'll encounter in the wild. Ubuntu is a fine place to start, after you get your feet wet, Fedora would be another good distribution to learn. Yes, learn the command line. You want to be a server admin, and most servers are installed w/out X. Learning Ubuntu, will give you a feel for the "Debian family" of distributions. Fedora will give you a feel for the "Redhat family". Things like bash will be the same, filesystem layout will be a little different, but the bigger differences will be in administration. – Chad Feller Jun 29 '11 at 18:09
okay. I am starting to love this place and the people. Thanks a lot for your advise Chad! – user88753 Jun 29 '11 at 19:34

Self-learning is fine for most sysadmin knowledge, given one condition.

In order to become a competent sysadmin of any set of systems you need to recognize when you fail to achieve what you want because you do not understand the architecture/principles underpinning the software you are trying to beat into submission (as opposed to the stupid thing just being obnoxious). At this point, you need to step back and read up on what the developers wanted to accomplish.

Apache is a good case in point. Mostly, configuring Apache is just a case of whacking at location directives and redirect instructions until they do what you want. However, in order to successfully create virtual hosts, you absolutely need to understand how virtual hosts work.

For public systems, the great danger is not so much that you don't get your setup working, but rather that you do not understand enough to realize that it is insecure.

Some tips to help you get started:

  • Package systems are your friend. Always try to get the stuff you want in a .deb/.rpm before compiling/installing it by hand. Take the time to learn how to work with the packaging system: it pays off quickly. When the package maintainers have made changes to how config works in a particular package, take the time to figure out why.
  • Version control is as important in sys admin work as it is in development. Version all configuration files you work with. etckeeper may help you with this.
  • Learn to work with *nix shell. If you are used to GUI interfaces to software, understand that the reason *nix systems typically do not have administration GUIs is because those who administer them prefer command line interfaces for their power and simplicity (and not because their heads are wired the wrong way).
  • Some other of your friends: sshfs, screen, tcpdump.
  • Get a Linux desktop machine. This will allow you to test and experiment with the OS.
share|improve this answer
Thanks a lot. I am starting off with Ubuntu today. And I will try to get used to the CLI. And then progress to CentOS (servers), then to Apache, Nginx, Varnish & stuff... Am I going in the right direction? – user88753 Jun 29 '11 at 8:13

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.