

Ask HN: Best resources for a web developer to dive into server admin? - ycombasks

I&#x27;m a proficient PHP developer, but thus far have not dealt with anything that requires scalability or requiring to know the system--everything has been taken care of by managed hosting. Now I want to dive right in and learn everything from load balancing and web server administration to server security, scaling, performance, and troubleshooting everything when things stop working.<p>I know the basics of Linux (even my desktop is Ubuntu), and I&#x27;ve messed a lot with Apache config files, ufw firewall setup, etc, so I don&#x27;t have to completely start from scratch. But I&#x27;m not sure where to go to when it comes to scaling my application (like with nginx or haproxy), performance, security. I&#x27;m looking for book recommendations or other resources that can give me the whole picture.<p>What I&#x27;ve found so far:<p>UNIX and Linux System Administration - seems popular on Amazon, but not sure if it&#x27;ll cover everything I need as a web developer, such as scaling.<p>The Official Ubuntu Server Handbook (3rd Edition) - Claims to cover server setup, clustering, cloud, troubleshooting, etc, but I&#x27;m not sure if having it only Ubuntu-oriented is good.<p>All advice is appreciated!
======
codr
If what you're really after is designing a scalable website - which is very
different from system admin stuff - I think the "Building Scalable Websites"
book is a great place to start:
[http://shop.oreilly.com/product/9780596102357.do](http://shop.oreilly.com/product/9780596102357.do)

Perhaps a bit dated (2006), but most of it would still be relevant.

~~~
ycombasks
Would I need to know how to do a lot of administration tasks? For example,
when getting an ec2 instance, I pretty much have to build the whole server
myself. That means I need to know how to secure it properly from hacking, as
well as set up clusters, all the software (apache, nginx, haproxy, etc) with
the right configuration, etc.

Additionally, when something breaks in the middle of the night, I'm going to
need to know how to troubleshoot it. What do you think?

------
sureshvishnoi
go for Redhat certificate . they are best in it

~~~
ycombasks
Do they provide only the certification, or training too?

------
contingencies
You are right to ask here for direction, and you are right to be skeptical of
single vendor approaches. My advice is definitely don't go for formal
qualifications.

I would say do something yourself, but make it public enough that you are
guilted in to continuing to the bitter end: start a blog! Write yourself a
challenge that uses a different type of technology on unix (various classes of
database, various web technologies, various server availability models,
directory services, cluster filesystems, fault-tolerant storage systems,
message queues, virtualization paradigms, load balancing systems, snapshots,
network intrusion detection systems, firewalls, digital telephony, each of a
few major formal kernel security policy models, diskless workstations,
clusters, etc.) then go solve it using as many different Linux distributions
(especially source-based or minimalist distributions that force you to
understand software dependencies) or flavors of unix as you can find.

For each challenge, write about how you approached the problem, what tools you
found, how you evaluated them across areas like security, functionality,
resource efficiency, technical trajectory (community, maturity, adaptability,
etc.) and why you chose a certain approach, how your solution solved the
original challenge, and how it might be improved upon in future.

After five challenges, every second challenge must be to go back and modify
one of your earlier systems to do something extra (the "how it might be
improved upon" part), use less resources, scale better, function in Arabic, or
similar. This is a more realistic means of gaining experience as maintenance
is actually most of the life of a software project.

If you do a challenge per week, after 25 challenges which will be six months,
spend another week or two writing about the common patterns in the problems
you have been solving, what you feel is repetitive, how you feel this
represents the state of the industry, and what might be coming next.

Bonus challenge: Linux from scratch.

Many people should then offer to hire you... that education will be
technologically broader and also more current than most people in the
industry. Remember that with experience comes ... experience, ie.
understanding the tools is different to knowing how and when to apply them,
what their strengths and weaknesses are. That's why you write about it on the
way, to maintain some perspective and think at a higher level about the
efficacy of the overall system you are putting in place.

~~~
ycombasks
Thanks a lot for the advice, I may just do this!

Cheers!

