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.
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.
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).
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.
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:
http://amzn.com/0131480057
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.
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: